এনজিনেক্স পুনরায় আরম্ভ করতে পারবেন না, বাঁধাই () ব্যর্থ হয়েছে (98: ঠিকানা ইতিমধ্যে ব্যবহৃত)


9

আমি জানি এই বিষয়টি বিভিন্ন ধরণের বিদ্যমান, তবে আমার সমস্যা সমাধানে আমার সমস্যা হচ্ছে। যদি আমি চালনা করি তবে service nginx restartনীগিনেক্স নিম্নলিখিত লগ সহ ব্যর্থ:

2015/03/14 08:36:42 [emerg] 9400#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2015/03/14 08:36:42 [emerg] 9400#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2015/03/14 08:36:42 [emerg] 9400#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2015/03/14 08:36:42 [emerg] 9400#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2015/03/14 08:36:42 [emerg] 9400#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2015/03/14 08:36:42 [emerg] 9400#0: still could not bind()

আমার কাছে কেবল একটি কনফিগার লোডিং আছে sites-enabled। আমি যখন চালাচ্ছি:

$ grep -slir "listen 80"
$ sites-available/default

এটি দেখায় যে defaultকনফিগারেশনে 80 টি শোনার আছে, তবে এটি এতে না থাকার কারণে এটি বিবেচনা করা উচিত sites-enabled

$ ps ax -o pid,ppid,%cpu,vsz,wchan,command|egrep '(nginx|PID)'
  PID  PPID %CPU    VSZ WCHAN  COMMAND
 9468     1  0.0  97188 sigsus nginx: master process /usr/sbin/nginx
 9471  9468  0.0  97328 ep_pol nginx: worker process
 9472  9468  0.0  97368 ep_pol nginx: worker process
 9693  9641  0.0   9448 pipe_w egrep --color=auto (nginx|PID)

netstatকি বন্দর ব্যবহার করা হচ্ছে তা এখানে দেখানো হচ্ছে:

$ netstat -tulpn

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1300/master
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      9468/nginx
tcp        0      0 0.0.0.0:2812            0.0.0.0:*               LISTEN      5980/monit
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1174/mysqld
tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      1155/memcached
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      9468/nginx
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1113/sshd
tcp6       0      0 :::25                   :::*                    LISTEN      1300/master
tcp6       0      0 :::9000                 :::*                    LISTEN      9106/hhvm
tcp6       0      0 :::22                   :::*                    LISTEN      1113/sshd
udp        0      0 127.0.0.1:11211         0.0.0.0:*                           1155/memcached

এবং এখানে আমার সম্পূর্ণ কনফিগারেশন রয়েছে sites-enabled(সেখানে একমাত্র):

server {
    listen                  443 ssl default_server;

    limit_conn              gulag 15;
    server_name             www.my-website.com;

    access_log              /home/my-website/logs/access.log;
    error_log               /home/my-website/logs/error.log info;

    root                    /home/my-website/web;
    index                   index.php index.html;

    ssl_certificate /etc/nginx/ssl/my-website.com.chained.crt;
    ssl_certificate_key /etc/nginx/ssl/my-website.com.key;
    ssl_prefer_server_ciphers On;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;

    include                 /etc/nginx/includes/my-website_redirects_https.inc;
    include                 /etc/nginx/includes/file_cache.inc;
    include                 /etc/nginx/includes/wordpress.inc;
}

server {
    listen                  80;
    server_name             my-website.com www.my-website.com;
    return                  301 https://$server_name$request_uri;
}

server {
    listen                  443;
    server_name             my-website.com;
    return                  301 https://www.$server_name$request_uri;
}

server {
    server_name
        some-other-website1.com         www.some-other-website1.com
        some-other-website2.com         www.some-other-website2.com
        some-other-website3.com         www.some-other-website3.com
        some-other-website4.com         www.some-other-website4.com
        some-other-website5.com         www.some-other-website5.com

    rewrite ^(.*)$ https://www.my-website.com/some/page/ permanent;
}

server {
    server_name
        some-other-website6.com         www.some-other-website6.com
        some-other-website7.com         www.some-other-website7.com
        some-other-website8.com         www.some-other-website8.com

    rewrite ^(.*)$ https://www.my-website.com/some/other/page/ permanent;
}

server {
    server_name     subdomain.my-website.com;

    rewrite ^(.*)$ https://some.otherwebsite.com/ permanent;
}

server {
    server_name
        some-other-website9.com         www.some-other-website9.com
        some-other-website10.com         www.some-other-website10.com
        some-other-website11.com         www.some-other-website11.com

    rewrite ^(.*)$  https://www.my-website.com/ permanent;
}

আমি ভাবছি আমার কনফিগারেশনের কারণে এই বাঁধাই () ত্রুটিটি ঘটছে কিনা। কোন ধারণা কি আমি ভুল করছি? আমি nginx / 1.4.6 (উবুন্টু) ব্যবহার করছি। কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে।


আমি বর্তমানে একই সমস্যা সম্মুখীন। কোনও পরিবর্তন ছাড়াই একবার কর্মরত এনজিনেক্স কনফিগারেশন এখন ব্যবহারের ক্ষেত্রে পোর্ট বলার সাথে সাথে সফলভাবে পুনরায় লোড করবে না তবে সেই পোর্টে কেবল এনগিনেক্স চলমান app আপনি কি আপনার সমস্যা সমাধান করেছেন?
মিচ কেন্ট

উত্তর:


13

এনজিনেক্স বন্ধ করার চেষ্টা করুন:

service nginx stop

Nginx এখনও চলছে তা পরীক্ষা করুন:

ps ax | grep nginx

এবং যদি এখনও চলতে থাকে তবে প্রক্রিয়াটি মেরে ফেলুন:

kill -p PID

Nginx স্থিতি পরীক্ষা করুন, চলবে না:

ps ax | grep nginx

এবং তারপরে একটি ক্লিন-স্টার্ট করুন:

service nginx start

এটি একই ইস্যু পরে আমার জন্য কাজ করে।


আমার জন্য, পিআইডি হত্যার পরে, প্রক্রিয়াটি আবার শুরু হবে
জেসন লিউ

4

আপনার netstatআউটপুট অনুযায়ী , nginx নিজেই এখনও পোর্ট 80 এ চলমান।

আপনি এটি পুনরায় চালু করার চেষ্টা করার আগে, আপনার কনফিগারেশনটি বৈধ করুন nginx -tএবং ত্রুটিগুলি ঠিক করুন।


4
আমি nginx -t চালিয়েছি এবং কোন ত্রুটি নেই। সে কারণেই আমি পুনরায় আরম্ভ করতে না পেরে বিভ্রান্ত হয়ে পড়েছি।
ডালান

প্রথমে nginx থামানোর চেষ্টা করুন এবং তারপরে এটি আবার শুরু করুন।
মাইকেল হ্যাম্পটন 21

1
আমি একই ইস্যু মধ্যে র্যান্ড। আমি এটিকে একটি বাগিন্স বিবেচনা করব।
ClojureMostly

2

এই ভুলটি করার পক্ষে আমি কেবল একমাত্র বোবা, তবে আমি ঘটনাক্রমে ভুল প্যাকেজটি ( phpপরিবর্তে php-fpm) ডাউনলোড করেছিলাম , যা অ্যাপাচি 2 নির্ভরতা হিসাবে ইনস্টল করে। যেহেতু এটি 80 বন্দরটিতে চলছিল, Nginx পারেনি।

সম্ভবত খুব সাধারণ ভুল নয়, তবে আমি অনুমান করি যে দুর্ঘটনাক্রমে ৮০ নম্বর বন্দরে আপনার অন্য কিছু রয়েছে কিনা তা গ্রহণ করা উচিত check


আপনি এটি করতে প্রথম নন। প্যাকেজের নামটি খারাপভাবে বেছে নেওয়া হয়েছিল; mod_phpপরিবর্তে এটি নামকরণ করা উচিত ছিল । কিন্তু এখন যেহেতু এটি বছরের পর বছর ধরে চলেছে, প্রত্যেকের সিস্টেমকে ভঙ্গ না করে এটি পরিবর্তন করা যায় না।
মাইকেল হ্যাম্পটন

apt-get remove apache2 && apt-get autoremove
@ মিশেলহ্যাম্পটন

1

আমারও একি দশা.

এটিই আমার পক্ষে কাজ করেছিল:
sudo fuser -k 80/tcp
তারপরে:
service nginx restart

আমি কারণটি জানি না, তবে আমার উত্তরটি এখানে পাওয়া গেল: https://easyengine.io/tutorials/nginx/troubleshooting/emerg-bind-failed-98-ddress-already-in-use/

এছাড়াও, কীভাবে / কখন এই ত্রুটি বার্তাটি প্রদর্শিত হয়েছিল তার ব্যাকস্টোরি এখানে দেওয়া হয়েছে: https://serverfault.com/a/939888/399723

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.