일요일 내내, 그리고 월요일 오전내 괴롭히던 nginx 재시작 실패 이슈를 해결했기에 여기 간단히 그 과정을 정리해 보고자 한다.
- nginx 재시작 실패 이슈는 포트 문제이다
- nginx 재시작 실패 이슈는 포트 문제이다
- 포트 80이나 443포트를 죽이는 명령어를 사용하거나 아파치서버를 죽이는 명려어를 입력해 문제를 해결한다.
일요일의 날벼락!!
일요일 가족과 동네 뒷산 등산 후 집에 와서 사진을 정리하려고 자리에 앉으니 갑자기 사이트(happist.com)이 작동하지 않는다.
뭐가 문제이지?
사용료 지불 여부 확인
우선 이번달 사용료를 지불했는지 점검해 본다. 돈을 안내면 서버 접속을 중단시킨 경우가 있었기 때문에.
다행히 서버업체(vultr.com)은 문제없이 접속된다. 지나달거은 지불햇고 이번달 지불할 여분은 약간 부족하다. 그래서 우선 25달러를 지불해 여분을 충분히 확보한다.
그러므로 사용료 문제는 아니다러고 결론을 낸다.
결국 서버에 접속해 문제가 무엇인지 살펴보아야 한다.
그동안 너무 게을러서 ssh, ftp 프로그램 자체를 설치하지 않앗기에 이번 기회에 설치한다. 그런데 설치후 제대로 설정해도 접속은 안된다.
당황스럽다.
혹시나해서 서버업체(vultr.com)에 접속해 그곳 터미널로 서버에 접속해 본다.
여기서는 아이디와 패스워드를 일일히 쳐야하므로 귀찮지만 어쩔 수 없다. 다행히 이곳에서는 서버에 접속 가능하다.
무엇이 문제인가?
업체에 SOS 하다
기대는 하지 않았지만 업체에 도움을 요청해 본다.
업체에서도 포트 문제일거라고 알려준다.
nginx 재시동 실패 메세지
nginx재시동 시 실패 메세지는 아래와 같다.
root@happist:~# service nginx restart
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
Code language: PHP (php)
nginx -t로 문제점 찾기
nginx -t로 문제가 무엇인지 찾아본다.
아래와 같은 메세지가 나온다 대부분은 문제가 없는데 설정 파일의 일부에 오류가 잇다고 나온다.
root@happist:~# sudo nginx -t
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/conf.d/etrend.cc.conf:3
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/conf.d/etrend.cc.conf:284
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/conf.d/goodtrip.conf:3
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/conf.d/goodtrip.conf:285
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/conf.d/happist.com.conf:3
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/conf.d/happist.com.conf:283
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/conf.d/happist.com.conf:300
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/conf.d/nextrend.co.conf:3
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/conf.d/nextrend.co.conf:284
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/conf.d/puripia.conf:3
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/conf.d/puripia.conf:285
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Code language: PHP (php)
journalctl -xe 명령 입력시
nginx재시동 시 나오는 메세지에 따라 journalctl -xe 명령을 입력해 본다.
-- The unit nginx.service has entered the 'failed' state with result 'exit-code'.
Nov 18 10:07:53 happist systemd[1]: Failed to start nginx - high performance web s>
-- Subject: A start job for unit nginx.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- A start job for unit nginx.service has finished with a failure.
--
-- The job identifier is 2988 and the job result is failed.
Nov 18 10:08:01 happist CRON[16771]: pam_unix(cron:session): session opened for us>Nov 18 10:08:01 happist CRON[16772]: (root) CMD (GET 'https://happist.com/mailster>Nov 18 10:08:01 happist postfix/pickup[16313]: E28A4177A64: uid=0 from=<root> Nov 18 10:07:51 happist nginx[16755]: nginx: [warn] the "listen ... http2" directi>Nov 18 10:07:51 happist nginx[16755]: nginx: [warn] the "listen ... http2" directi>Nov 18 10:07:51 happist nginx[16755]: nginx: [emerg] bind() to 0.0.0.0:80 failed (>Nov 18 10:07:51 happist nginx[16755]: nginx: [emerg] bind() to 0.0.0.0:80 failed (>Nov 18 10:07:52 happist nginx[16755]: nginx: [emerg] bind() to 0.0.0.0:80 failed (>Nov 18 10:07:52 happist nginx[16755]: nginx: [emerg] bind() to 0.0.0.0:80 failed (>Nov 18 10:07:53 happist nginx[16755]: nginx: [emerg] bind() to 0.0.0.0:80 failed (>Nov 18 10:07:53 happist nginx[16755]: nginx: [emerg] still could not bind() Nov 18 10:07:53 happist systemd[1]: nginx.service: Control process exited, code=ex>-- Subject: Unit process exited -- Defined-By: systemd
Code language: PHP (php)
인터넷 검색
명령을 봐도 무슨 이야기인지 모르겠다.
인터넷을 검색해 본다.
- 우분투 20.04 이후부터 nginX 재부팅 혹은 재시작시에 bind 에러가 나타날때 – 아칼과 줄리
- nginx.service failed because the control process exited
등의 글이 있던데 공통적으로 포트 80과 443포트가 동시에 열려거나 열려고 하면서 충돌이 나기 때문이라고 한다.
그래서 아래와 같은 명령어로 해결하라고 한다.
포트 8과 443르 죽이고 다시 nginx 재가동하라는 것이다
하지만 소용이 없었다.
sudo fuser -k 80/tcp
sudo fuser -k 443/tcp
Then execute
sudo service nginx restart
Code language: PHP (php)
[해결책]아파치 서버를 죽이는 명령을 입력하다.
인터넷 어디에선가 서버 세팅후 서버 업체에서 nginx웹서버임에도 아파치 서버를 설치하는 경우가 잇다고 한다.
그래서 예전에 해결했던 아파치 서버 삭제 명령어를 사용해 봤다.
## 아파치 삭제
sudo apt-get --purge autoremove apache2
sudo /etc/init.d/apache2 stop && sudo service nginx restart
Code language: PHP (php)
작동하리라는 믿음은 없었고 그냥 테스트삼아 입력해 본건데 이 명령입력 후 nginx웹서버가 다시 가동 되었다.
그래서 재빨리 서버를 백업햇다. 그리고 지금 그 경험을 공유하고 있다.
무사히 해결되어 너무 너무 기쁘다..그런데 왜 아파치 서버가 설치된거지?