W czerwcu pisałem o problemie, na jaki trafiłem na jednym z serwerów, którymi zarządzam, a na którym usługa Nginx odmówiła startu (ukochane chyba przez wielu „address already in use”). Wtedy z pomocą przyszedł mi skrypt „zerujący” ustawienia Nginx (pełne odinstalowanie, ponowna instalacja i przywrócenie – po testach – konfiguracji). Tym razem – na innym serwerze – choć błąd wydawał się podobny, to skrypt nie zadziałał, więc musiałem poszukać winowajcy innymi metodami…
Start usługi Nginx blokowany przez Apache2
Skorzystanie ze standardowej komendy journalctl (journalctl -xe) co od razu wskazało, że Nginx nie może wystartować prawidłowo, bo jakieś inne draństwo zdążyło już zając port 80:
patryk@vps01:~$ sudo journalctl -xe | grep "nginx"
nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
I choć większość stron, którymi zarządzam, skonfigurowana jest do działania tylko w wersji szyfrowanej, na porcie 433, to jednak zdarzają się wyjątki, gdzie wersja nieszyfrowana (port 80) musi być dostępna. I to właśnie o ten port się w tym przypadku rozchodzi(ło).
Jeśli w systemie brak polecenia netstat, to w systemie Debian/Ubuntu można je dodać, instalując odpowiednią paczkę:
sudo apt-get install net-tools
Odpaliłem szybki test za pomocą polecenia netstat, w nadziei, że wskaże mi źródło problemu:
sudo netstat -tulpn
I na szczęście tak się stało:
Jak widać w systemie działa webserwer Apache2, który „nasłuchuje” właśnie na porcie 80 (dla IPv6). W sumie to nawet nie wiem, skąd on tam się wziął, bo wiele lat temu zamieniłem Apache2 na Nginx, a do tego ten serwer jest relatywnie świeży… Być może coś się doinstalowało przy okazji któregoś z testów, np. na potrzeby jakiegoś artykułu/poradnika.
W sumie to bez większego znaczenia, wyrok zapadł – ubijamy (proces) Apache2 (PID: 566 – ważne, bo używamy w poleceniu):
sudo kill -2 566
I sprawdzamy, czy Nginx wstanie bez problemu:
sudo service nginx restart
A skoro wszystko działa (co widać też na grafice zamieszczonej powyżej), to pora wywalić Apache2 z systemu (jak pisałem – nie korzystam od lat):
sudo apt-get purge apache2
I tyle. Kilka kontrolnych restartów wykazało, że wszystko działa…


- Paczka została wstrzymana z powodu braku numeru ulicy na paczce, czyli kolejny SMS z lewym linkiem (próba oszustwa) - 1970-01-01
- Notepad++ i wtyczka Linefilter3, czyli prosty sposób na filtrowanie treści, np. logów serwera, nie tylko na prośbę prokuratury ;-) - 1970-01-01
- Poważny danych wyciek z ALAB Laboratoria – do internetu trafiły nie tylko dane osobowe, ale też i dane medyczne, i choć już jest grubo, to ponoć tylko zapowiedź prawdziwego armagedonu - 1970-01-01