nginx

2011-05-21 24 views
13

पुनरारंभ नहीं कर सकता है मैं यूबंटो 10:04 पर Django के साथ nginx का उपयोग कर रहा हूं। समस्या यह है कि जब मैं nginx को पुनरारंभ करता हूं तो मुझे यह त्रुटि मिलती है।nginx

sudo /etc/init.d/nginx restart 
Restarting nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 
configuration file /etc/nginx/nginx.conf test is successful 
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) 
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) 
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) 
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) 

इसके अलावा, मैं बंद की कोशिश की है और फिर शुरू, लेकिन अभी भी त्रुटि मिलती है।

sudo lsof -i tcp:80 
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 
nginx 27141 root 6u IPv4 245906  0t0 TCP *:www (LISTEN) 
nginx 27142 nobody 6u IPv4 245906  0t0 TCP *:www (LISTEN) 

मैं इस प्रक्रिया पीआईडी ​​27141 के साथ यह काम करता है को मारने के हैं:

यहाँ lsof से उत्पादन है। हालांकि, मैं नीचे पर जाना चाहता हूं कि मैं केवल पुनरारंभ नहीं कर सकता हूं।

worker_processes 1; 

user nobody nogroup; 
pid /tmp/nginx.pid; 
error_log /tmp/nginx.error.log; 

events { 
    worker_connections 1024; 
    accept_mutex off; 
} 

http { 
    include mime.types; 
    default_type application/octet-stream; 
    access_log /tmp/nginx.access.log combined; 
    sendfile on; 

    upstream app_server { 
     # server unix:/tmp/gunicorn.sock fail_timeout=0; 
     # For a TCP configuration: 
     server 127.0.0.1:8000 fail_timeout=0; 
    } 

    server { 
     listen 80 default; 
     client_max_body_size 4G; 
     server_name _; 

     keepalive_timeout 5; 

     # path for static files 
     root /home/apps/venvs/app1/app1; 

     location/{ 
      # checks for static file, if not found proxy to app 
      try_files $uri @proxy_to_app; 
     } 

     location @proxy_to_app { 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header Host $http_host; 
      proxy_redirect off; 

      proxy_pass http://app_server; 
     } 

     error_page 500 502 503 504 /500.html; 
     location = /500.html { 
      root /path/to/app/current/public; 
     } 
    } 
} 

कोई भी विचार:

यहाँ nginx.conf है?

+0

इस दोहराने योग्य है? आपकी लॉग फाइलें क्या कहती हैं? – Mat

+1

त्रुटि लॉग एक ही चीज़ दिखाता है। हाँ, यह दोहराने योग्य है। – ErnieP

+0

शायद स्टार्टअप स्क्रिप्ट टूटा हुआ है। /etc/init.d/ngnix के अंदर देखो और देखें कि यह कैसे नग्निक्स को रोकता है। ऐसा नहीं हो सकता है कि आपने पिड फ़ाइल का स्थान निर्दिष्ट किया हो (या यहां तक ​​कि उपयोगकर्ता/समूह को चलाने के लिए)। इनिट स्क्रिप्ट अक्सर इसे स्वयं से मैंगेज चाहते हैं, और अक्सर उम्मीद है कि पिड फ़ाइल कहीं/var/run/में रहती है। – nos

उत्तर

31

प्रयास करें:

$ sudo fuser -k 80/tcp ; sudo /etc/init.d/nginx restart 
+1

फ्यूसर मैन पेज विवरण: "फ्यूसर निर्दिष्ट फ़ाइलों या फ़ाइल सिस्टम का उपयोग कर प्रक्रियाओं के पीआईडी ​​प्रदर्शित करता है" (पढ़ें: सॉकेट) – kelorek

+1

यह काम करता है, लेकिन डाउनवॉटिंग क्योंकि यह मूल कारण को संबोधित नहीं करता है। –

2

Daemontools nginx सफलतापूर्वक शुरू, तो nginx daemonizes, और फिर daemontools असफल nginx फिर से शुरू करने के लिए, कोशिश करता है लॉग में एक त्रुटि लॉग इन करने।

इस समस्या का समाधान nginx.conf के मुख्य भाग में डेमॉन मोड अक्षम करने के लिए है:

डेमॉन बंद;

साइट: nginx पुनः आरंभ मुद्दों के साथ http://wiki.nginx.org/CoreModule

+0

धन्यवाद आपको बहुत पसंद है !! मैं बाध्य त्रुटियों से थक गया था। – user1071840

1

थक गए और "उपयोग में पता" दोष। इसे एक बार और सभी के लिए काम करने का फैसला किया।

जोड़ा सिर्फ एक छोर रोकने के लिए और /etc/init.d/nginx फ़ाइल में पुनः आरंभ कार्रवाई पर लाइन

nginx -s quit 

तो यह की तरह अब लग रहा है (और सुनिश्चित करें कि nginx फ़ोल्डर पथ चर में है, अन्यथा निर्दिष्ट पूरा पथ)

stop) 
    echo -n "Stopping $DESC: " 
    start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \ 
     --exec $DAEMON || true 
    echo "$NAME." 
    nginx -s quit 
    ;; 

restart|force-reload) 
    echo -n "Restarting $DESC: " 
    start-stop-daemon --stop --quiet --pidfile \ 
     /var/run/$NAME.pid --exec $DAEMON || true 
    nginx -s quit 
    sleep 1 
    test_nginx_config 
    start-stop-daemon --start --quiet --pidfile \ 
     /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true 
    echo "$NAME." 
    ;; 

आशा है कि यह समाधान दूसरों के लिए काम करेगा।

0

हमेशा परीक्षण अपने पहले कॉन्फ़िगर करें, यह वाक्यविन्यास त्रुटियों को दिखाएगा और डुप्लिकेट लाइनें और आपको वहां इंगित करें।

nginx -t 

आप लॉग इन देखेंगे जो आपको दिखा रहा है कि विफलता क्या हो रही है।

0

ऐसा इसलिए है क्योंकि आप रूट के रूप में पुनरारंभ नहीं कर रहे हैं।

जड़ को बदलें:

sudo -i 

पुनः प्रारंभ:

service nginx restart 

या:

/etc/init.d/nginx restart