오랜만에 블로그 글을 쓰러 들어왔는데 갑자기 발생한 HTTP ERROR 500! 이를 해결하는 과정을 기록해볼까 한다.
■ 사이트 접속이 안된다? 500 ERROR
먼저 사이트에 접속하려고 하니 다음과 같은 메시지가 나타났다.
연결이 비공개로 설정되어 있지 않습니다.
공격자가 54.180.73.135에서 사용자의 정보를 도용하려고 시도할 수 있습니다(예: 비밀번호, 메시지, 신용카드 정보). 이 경고에 대해 자세히 알아보기
처음에는 HTTPS 문제인 것 같았지만, 인증서 유효기간도 충분히 남아 있었기 때문에 다른 원인이 있을 것. 그래서 워드프레스 관리자 페이지에 접속하려고 했지만 HTTP ERROR 500 오류가 발생했다.
좀 더 정확히 확인하기 위해 아마존 라이트세일의 SSH를 통해 서버에 접속했다. 이미지에서 저 아이콘을 누르면 접속이 가능하다.
그리고 다음 명령어를 사용하여 Apache 에러 로그를 확인했다.
sudo tail -n 100 /opt/bitnami/apache2/logs/error_log
로그에서 다음과 같은 에러 메시지를 확인할 수 있었다.
읽어보면, PHP 메모리 제한 초과로 인해 약 7.2GB의 메모리를 할당하려고 시도했지만, 허용된 메모리 제한인 512MB를 초과했다는 것. 아마 어떤 플러그인이나 테마가 꼬여 무한 루프나 비정상적인 프로세스를 일으킨다는 것을 알 수 있었다.
■ 플러그인 확인하기
먼저 플러그인 디렉토리 이름을 변경하여 비활성화시켜보았다. 이러면 워드프레스가 기존 설치된 플러그인을 인식하지 못하게 된다.
sudo mv /opt/bitnami/wordpress/wp-content/plugins /opt/bitnami/wordpress/wp-content/plugins_disabled
그리고 사이트에 접속해 보니 정상적으로 접속이 되었다. 이제 어느 플러그인이 문제를 일으키는지 하나씩 찾아본다.
먼저, 플러그인 디렉토리의 이름을 원래대로 복원한다.
sudo mv /opt/bitnami/wordpress/wp-content/plugins_disabled /opt/bitnami/wordpress/wp-content/plugins
플러그인 디렉토리로 이동하여 설치된 플러그인 목록을 확인한다.
cd /opt/bitnami/wordpress/wp-content/plugins ls
ls 명령어를 실행하면 디렉토리 내 모든 폴더 이름이 표시된다. 이제 모든 플러그인을 임시 디렉토리로 이동시키고 하나씩 활성화시키며 사이트 접속이 가능한지 본다.
sudo mkdir ../plugins_temp sudo mv * ../plugins_temp/ sudo mv ../plugins_temp/플러그인이름 .
각 플러그인을 복원하고 사이트에 접속하여 문제가 있는지 하나씩 체크하다 보니 W3 Total Cache를 옮기자 다시 사이트 접속이 불가한 것을 확인했다.
■ 문제 플러그인 제거하기
여전히 관리자 페이지를 통한 플러그인이 제거가 불가하므로 SSH를 통해 제거하도록 한다. 플러그인을 삭제하고 캐시 파일과 폴더를 삭제한다.
sudo rm -rf /opt/bitnami/wordpress/wp-content/plugins/w3-total-cache sudo rm -rf /opt/bitnami/wordpress/wp-content/cache/ sudo rm -rf /opt/bitnami/wordpress/wp-content/w3tc-config/ sudo rm -f /opt/bitnami/wordpress/wp-content/advanced-cache.php sudo rm -f /opt/bitnami/wordpress/wp-content/db.php sudo rm -f /opt/bitnami/wordpress/wp-content/object-cache.php
이제 변경 사항 적용을 위해 Apache 서버를 재시작하면 문제 해결 끝!
sudo /opt/bitnami/ctlscript.sh restart apache
플러그인을 비활성화하면서 세팅이 초기화된 바람에 조금 귀찮아졌지만… 어쨌든 문제가 해결되서 다행이다. 워드프레스는 좋지만 한번씩 문제가 생겨서 꼭 이렇게 터미널 연습을 시킨다… ㅠ