Когда на физическом сервере установлено несколько веб-серверов, то они могут начать конфликтовать за право прослушивания портов 80 и 443. Именно на этих портах работают веб-приложения (сайты).
Эта ситуация может возникнуть совершенно случайно, если после многих (частых) установок и пере-настроек конфигурационных файлов системный администратор забудет проверить настройки и не перезагрузит систему вручную.
Проблема заключается в том, что веб-сервер apache2 может находится в очереди автозапусков выше нужного вам веб-сервера, например, выше nginx. Вы уже давно не взаимодействуете с веб-сервером apache2, а nginx просто не перезагружали.
В результате машина может однажды уйти в перезагрузку и автозапуском запустить не тот веб-сервер. В нашем случае «не тем веб-сервером» является apache2. В результате «отвалятся» все сайты, которые могли обслуживаться веб-сервером nginx.
Проверить состояние nginx можно командой:
service nginx status
Если какой-то процесс уже успел занять порт 80 и 443, то мы получим что-то вроде этого:
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Sat 2022-03-19 21:24:55 MSK; 8s ago Docs: man:nginx(8) Process: 2582 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 2583 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE) мар 19 21:24:54 U nginx[2583]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) мар 19 21:24:54 U nginx[2583]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) мар 19 21:24:54 U nginx[2583]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) мар 19 21:24:54 U nginx[2583]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) мар 19 21:24:55 U nginx[2583]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) мар 19 21:24:55 U nginx[2583]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) мар 19 21:24:55 U nginx[2583]: nginx: [emerg] still could not bind() мар 19 21:24:55 U systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE мар 19 21:24:55 U systemd[1]: nginx.service: Failed with result 'exit-code'. мар 19 21:24:55 U systemd[1]: Failed to start A high performance web server and a reverse proxy server.
Скриншот:
Как решить проблему?
Для вывода процесса apache2 из автозагрузки нужно воспользоваться командой:
systemctl disable apache2
После её применения увидим:
Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install disable apache2 Removed /etc/systemd/system/multi-user.target.wants/apache2.service.
Скриншот:
Теперь можно спокойно стартовать другой веб-сервер, потому что 80 порт станет свободным.
Информационные ссылки
Официальный сайт OS Debian — https://www.debian.org
Справочники по OS Debian — https://manpages.debian.org
Команда SYSTEMCTL — https://manpages.debian.org/bullseye/systemctl/systemctl.1.en.html
Команда SERVICE — https://manpages.debian.org/bullseye/init-system-helpers/service.8.en.html