Если я бегу:
$ sudo service nginx status
* nginx is not running
Потом бегу:
$ sudo service nginx start
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
...
nginx: [emerg] still could not bind()
Вот и убиваю:
sudo fuser -k 80/tcp
Итак, я пытаюсь снова запустить Nginx:
$ sudo service nginx start
Starting nginx: nginx.
Должен быть запущен, верно ?:
$ sudo service nginx status
* nginx is not running
Я попытался:
$ ps aux | grep nginx
root 1316 0.0 0.2 64988 1236 ? Ss 14:37 0:00 nginx: master process /usr/sbin/nginx
nobody 1317 0.0 0.3 65408 1908 ? S 14:37 0:00 nginx: worker process
myusername 1436 0.0 0.1 9388 876 pts/2 S+ 14:40 0:00 grep nginx
При посещении ip сайта. Я получаю сообщение 404 с nginx/1.2.1
снизу. Мне кажется, что он действительно работает. И я блокирую IP-адреса в nginx.conf, и эти IP-адреса в настоящее время блокируются, я тестировал. Поэтому я не понимаю, работает ли Nginx или нет, и как справиться с этим зверьком.
Моя конечная цель - запустить и Gunicorn. Странно то, что вчера все это работало. Gunicorn и Nginx имеют статусы working
.
Возможно, у вас есть apache, работающий на том же порту, и nginx не может привязать адрес, потому что он уже используется.
Чтобы изменить порт для nginx, посмотрите этот ответ на stackoverflow [1]https://stackoverflow.com/questions/10829402/how-to-start-nginx-via-different-portother-than-80
Вот пример на моей болонке
marco@BeastFMM:~$ sudo service nginx start
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
nginx.
marco@BeastFMM:~$ sudo /etc/init.d/apache2 stop
sudo: unable to resolve host BeastFMM
* Stopping web server apache2 apache2: apr_sockaddr_info_get() failed for BeastFMM
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
... waiting [ OK ]
marco@BeastFMM:~$ sudo service nginx start
Starting nginx: nginx.
marco@BeastFMM:~$ ps aux | grep nginx
root 7986 0.0 0.0 78976 1288 ? Ss 17:07 0:00 nginx: master process /usr/sbin/nginx
www-data 7987 0.0 0.0 79316 1708 ? S 17:07 0:00 nginx: worker process
www-data 7988 0.0 0.0 79316 1708 ? S 17:07 0:00 nginx: worker process
www-data 7989 0.0 0.0 79316 1708 ? S 17:07 0:00 nginx: worker process
www-data 7990 0.0 0.0 79316 1708 ? S 17:07 0:00 nginx: worker process
404 = страница не найдена.
Это означает, что nginx обслуживает запрос (при этом у вас больше ничего не работает на порту 80). Судя по звукам, сервер запустился нормально. Просто создайте файл index.htm в корне каталога nginx со словом «hello world», и вы что-нибудь увидите.
Вы изменили расположение файла pid? Обычно, когда вы запускаете службу, она проверяет, запущена она уже или нет, ничего не делает, если работает, и запускает ее в противном случае. Так что тех ошибок привязки, которые вы получаете, быть не должно.
Расположение по умолчанию для pid-файла nginx с vinit - /var/run/nginx.pid.