Недавно я создал экземпляр Digital Ocean и настроил его с помощью базового стека LEMP. Я также подключил его к домену с такой конфигурацией nginx:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
Несколько дней спустя я решил перенести все на новый сервер, поэтому я создал снимок этого контейнера и запустил новый сервер с точно таким же снимком / изображением.
Однако результаты были не такими. Когда я пытаюсь перезагрузить Nginx, я получаю следующее:
@:~$ sudo systemctl reload nginx
nginx.service is not active, cannot reload.
По какой-то причине Nginx не запускается и выходит с ошибкой (лог из /var/log/nginx/error.log
):
2020/06/01 16:49:24 [emerg] 1325#1325: bind() to 0.0.0.0:80 failed (98: Address already in use)
2020/06/01 16:49:24 [emerg] 1325#1325: bind() to [::]:80 failed (98: Address already in use)
2020/06/01 16:49:24 [emerg] 1325#1325: bind() to 0.0.0.0:80 failed (98: Address already in use)
2020/06/01 16:49:24 [emerg] 1325#1325: bind() to [::]:80 failed (98: Address already in use)
2020/06/01 16:49:24 [emerg] 1325#1325: bind() to 0.0.0.0:80 failed (98: Address already in use)
2020/06/01 16:49:24 [emerg] 1325#1325: bind() to [::]:80 failed (98: Address already in use)
2020/06/01 16:49:24 [emerg] 1325#1325: bind() to 0.0.0.0:80 failed (98: Address already in use)
2020/06/01 16:49:24 [emerg] 1325#1325: bind() to [::]:80 failed (98: Address already in use)
2020/06/01 16:49:24 [emerg] 1325#1325: bind() to 0.0.0.0:80 failed (98: Address already in use)
2020/06/01 16:49:24 [emerg] 1325#1325: bind() to [::]:80 failed (98: Address already in use)
2020/06/01 16:49:24 [emerg] 1325#1325: still could not bind()
Я пробовал добавить ipv6only=on
в конфиг, но это не помогло. Я также пытался переустановить Nginx, но это тоже не помогло.
В чем может быть проблема? Если вам не хватает файлов журнала, просто дайте мне знать, и я обновлю сообщение.
bind() to [::]:80 failed (98: Address already in use)
означает, что какое-то приложение уже использовало этот порт? проверить, используя:
ss -ntlp
вы увидите что-то вроде:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:5355 0.0.0.0:* users:(("systemd-resolve",pid=1089,fd=13))
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1039,fd=4))
найти приложение и закрыть его, apache работает?