Nginx 서비스를 시작하려고 할 때, 아래와 같이 문제가 발생할 수 있습니다.
root@myUbuntu:~# systemctl start nginx Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
어떠한 문제로 인해 Nginx 서비스가 시작되지 못했다고 에러 메세지가 출력되었습니다.
자세한 원인을 알아보기 위해 systemctl status nginx.service 또는 journalctl -xe 를 입력하여 로그 메세지를 확인할 수 있습니다.
# journalctl -xe
로그를 살펴보면 다음과 같습니다.
-- Unit apt-daily.service has finished starting up. -- -- The start-up result is RESULT. 6월 25 20:08:03 myUbuntu systemd[1]: Reloading. 6월 25 20:08:03 myUbuntu systemd[1]: Starting A high performance web server and a reverse proxy server... -- Subject: Unit nginx.service has begun start-up -- Defined-By: systemd -- Support: http://www.ubuntu.com/support -- -- Unit nginx.service has begun starting up. 6월 25 20:08:06 myUbuntu nginx[112631]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 6월 25 20:08:06 myUbuntu nginx[112631]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) 6월 25 20:08:06 myUbuntu nginx[112631]: nginx: [emerg] still could not bind() 6월 25 20:08:06 myUbuntu systemd[1]: nginx.service: Control process exited, code=exited status=1 6월 25 20:08:06 myUbuntu systemd[1]: nginx.service: Failed with result 'exit-code'. 6월 25 20:08:06 myUbuntu systemd[1]: Failed to start A high performance web server and a reverse proxy server. -- Subject: Unit nginx.service has failed -- Defined-By: systemd -- Support: http://www.ubuntu.com/support
주목할 부분은 nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 와 nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) 부분입니다. 메세지에 나와있는 그대로 해당 주소가 이미 사용되고 있다는 의미입니다.
원인은 현재 다른 웹 서버 어플리케이션 또는 서비스가 80번 포트를 사용 중이기 때문에 발생하는 문제입니다.
해결 방법은 다음과 같습니다.
아무래도 첫 번째 방법으로 해결하는 것이 좋을 것이라고 봅니다. 대부분의 웹 서버는 80번 포트를 사용하기 때문입니다.
현재 80번 포트를 사용하는 다른 서비스는 대부분 httpd일 것입니다. 기본적으로 httpd가 설치되는 경우가 많아 자칫 실수로 서비스가 실행 중인 상태가 될 수 있기 때문입니다.
아래 netstat 명령어로 80번 포트를 사용하는 프로세스를 다시 한 번 확인해보겠습니다.
root@jywork:~# netstat -anp | grep 80 tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 680/systemd-resolve tcp 0 0 192.168.1.12:60650 192.168.1.101:80 ESTABLISHED 999/python3 tcp 0 0 192.168.1.12:60646 192.168.1.101:80 ESTABLISHED 996/python3 tcp 0 0 192.168.1.12:60648 192.168.1.101:80 ESTABLISHED 998/python3 tcp 0 0 192.168.1.12:60642 192.168.1.101:80 CLOSE_WAIT 998/python3 tcp6 0 0 :::80 :::* LISTEN 5143/apache2 udp 5376 0 192.168.1.12:53 0.0.0.0:* 680/systemd-resolve unix 3 [ ] STREAM CONNECTED 380251 31266/snapd unix 3 [ ] STREAM CONNECTED 380283 1/init /run/systemd/journal/stdout unix 3 [ ] STREAM CONNECTED 14847 680/systemd-resolve unix 2 [ ] DGRAM 802811 1/init unix 2 [ ] DGRAM 14955 680/systemd-resolve unix 3 [ ] STREAM CONNECTED 278385 13800/upowerd unix 3 [ ] STREAM CONNECTED 278428 13800/upowerd unix 3 [ ] STREAM CONNECTED 16780 1/init /run/systemd/journal/stdout unix 2 [ ] DGRAM 89580 2790/acpid unix 3 [ ] STREAM CONNECTED 15658 680/systemd-resolve
위 결과에서 다음과 같이 80번 포트가 apache2 (httpd)로 인해 사용 중임을 알 수 있습니다. (나머지 부분은 grep으로 검색된 상관 없는 데이터들입니다.)
tcp6 0 0 :::80 :::* LISTEN 5143/apache2
만약 apache가 아닌 nginx를 사용하고 싶다면, apache 서비스를 중지한 후 다시 nginx를 실행해야 합니다.
# service apache2 stop # service nginx start 또는 아래와 같이 시도합니다. # systemctl stop apache2 # systemctl start nginx
이제 서비스가 정상적으로 실행될 것입니다.
INSTALL_FAILED_INSUFFICIENT_STORAGE 문제 안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서…
리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…
JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…
NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…
언제부턴가 윈도우 11을 처음 설치할 때 마이크로소프트(Microsoft) 계정 로그인을 강제로 요구하게 되었습니다. 물론 마이크로소프트 계정이…