Environment (mainly)
. CentOS 7 (Google Cloud Platform)
. Yum update completed
. MariaDB(Lastest) installed
. Apache not installed
. PHP(Lastest) installed
Cent OS 7에서 Nginx와 WordPress를 활용하여 지금의 사이트를 Migration하기 위한 사전 서버 세팅 작업 중이다. 그 과정에서 발생했던 이슈에 대해 공유하고자 작성한다.
Linux에 대해 잘 모르는 나로서는 여러 Reference를 참고해가면서 환경 세팅을 하고 있는데, 아무래도 가장 최근의 글이 없던 터라 세팅하는 내용들에 대해서 응용을 해야 하는 입장이었다. 그 과정 중 Nginx를 설치하는 과정이다.
# systemctl start nginx
위 command를 이용하여 실행했을 때에는 별 문제가 없었다. 이 시점에는 PHP와 MariaDB를 설치하기 이전이었다. 그런데, 계속 진행하다보니 nginx를 설치하기 이전에 yum repo.d에 세팅을 해두고 install하는 가이드가 있길래 그걸보고 다시 세팅을 해보려고 지우고 다시 설치 후 실행을 하였다.
그 이후 이런 문제가 발생하였다.
# 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 detals.’
이런 에러 문구를 보여줬다. 말 그대로 nginx가 제대로 동작이 안됐다는거다. 막막했다. 왜 나에게 이런 시련을 주는지 스트레스를 받기 시작했다.
원인분석
# systemctl status nginx
우선 위에 Error Message에서 가이드한대로 systemctl status 를 확인해보았다. 과정 중 보면 Loaded까진 되었는데 Active가 Failed된 것으로 보여진다. 그리고 프로세스에 대해 나오는데 프로세스에서 빨간 글씨가 보이고 그 아래로 로그들이 보인다.
해결 과정
Trouble Shooting간 집중해서 봐야할 것은 어디에서든 Log라고 생각한다. 살펴보면..
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
이 로그가 수차례 발생한 것을 볼 수 있다. 그 이후로 Failed가 되긴 했지만 이 로그로 인해 결국 그렇게 된 것으로 볼 수 있기 때문에 이 문제부터 해결해보기로 했다.
# netstat -anp | grep :80
위 command를 입력하게 되면 80포트를 점유하고 있는 프로세스를 확인할 수가 있다. 확인해보니 실행에 실패한 nginx가 80포트를 점유하고 있었다..; 무슨일인지 어리둥절 하긴 했지만 아마 내 통제를 벗어난 녀석인 것 같았다. 그래서 저 프로세스를 죽였다.
#kill -9 {process id}
그리고나서 다시 프로세스를 실행해 보았다.
다시 실행해본 결과 특이로그는 발생하지 않고 정상적으로 실행되는 것을 확인할 수 있었다.