워드프레스 Error establishing a database connection 해결 방법
AWS 프리티어와 라이트세일에서 워드프레스 Error establishing a database connection 해결 방법
안녕하세요. WONY입니다.
저는 아마존 웹 서비스(이하 AWS)에서 Amazon EC2 프리티어와 라이트세일 월 3.50 USD의 가장 저렴한 서비스를 이용하고 있습니다.
프리티어에는 NGINX + PHP-FPM + MariaDB으로 서버를 구성하고 영카트를 설치해서 서비스를 운영하고 있었는데, 워드프레스가 필요해서 서버에 워드프레스를 추가로 설치하였고 갖가지 플러그인을 설치하였는데, 관리자 페이지에서 세팅을 하거나 글을 작성할 때 그리고 어떠한 작업을 할 때 지속적으로 Error establishing a database connection 메시지를 보여주며 MariaDB가 뻗어 버리는 상황이 반복되었습니다.
하루에 한두 번씩 그러한 상황이 반복되고 SSH에 접속해서 MariaDB 데몬을 RESTART 해도 무엇 때문인지 모르겠지만 실행이 되지 않았으며, 오로지 REBOOT 명령을 통해서만 해결이 되었습니다. 제가 눈을 뜨고 있을 때라면 REBOOT을 통해 서버를 다시 시작하면 됐지만 잠을 자거나 서버를 신경 쓰지 못하는 상황에서는 장시간 서비스가 정지되는 상황이 발생하면.. 하... 짜증이....
안 되겠다 싶어 서버 관리가 익숙지 못한 저는 구글링을 통해 wp-config.php 파일을 수정하거나 MariaDB 설정 파일인 my.cnf를 수정하라는 글을 보았고 그대로 따라 해 보았지만 같은 상황이 반복되었습니다. 그 글들이 잘못된 게 아니라 저의 상황과 같지 않아서 그런 것 같았습니다. 그리고 로그 파일이 쌓여서 그런 것 같다는 글도 봐서 로그 파일도 삭제해 보고 했지만 상황이 달라지지 않고 같은 상황이 반복되다 보니 설치 과정에 잘못된 게 있나 싶어서 서버를 초기화하고 다시 세팅해보고 했지만 상황이 전혀 달라지지 않았습니다.
서비스를 업그레이드를 하냐 아니면 워드프레스를 포기하냐 하는 상황에 어느 글에서 Amazon RDS를 이용하면 해결된다는 글을 보았는데 현재 운영하는 서비스가 수익형 서비스가 아니다 보니 스트레스는 쌓이지만 굳이 그렇게 까지 추가로 유료 서비스를 이용할 이유는 없었고, 라이트세일이 한 달 정확히 750시간 무료로 사용할 수 있다고 해서 라이트세일도 세팅을 해보았습니다.
라이트세일에는 Apache2 + PHP + MySQL으로 서버를 구성하였고 라이트세일 서버에는 영카트를 제외한 워드프레스만 설치하고 갖가지 플러그인을 설치하였는데 아.. 이런.. 똑같이 Error establishing a database connection 메시지를 보여주며 프리티어 서버와 같이 MySQL 이 뻗어 버리는 상황이 반복되었습니다.
그렇게 며칠이 지나고 지속적으로 구글링을 하다다 해결방법을 찾게 되었습니다.
MySQL이나 MariaDB가 뻗는 이유에 답은 메모리에 있었습니다.
물리적 메모리(RAM)를 추가하면 해결되는 것이었는데 물리적 메모리를 추가하면 추가 비용이 발생하였기에, 디스크 공간을 활용한 가상 메모리(SWAP) 파일을 생성해서 시스템에 추가하는 방법을 선택하였고 가상 메모리(SWAP)를 세팅함으로써 Error establishing a database connection 메시지에서 완전히 벗어날 수 있었습니다.
제 상황을 설명하고, 저와 같은 상황을 가진 분들이 있을 것 같다는 생각에 서론이 참 길었습니다..
이제 가상 메모리(SWAP) 세팅에 대해서 알아보도록.. :)
가상 메모리(SWAP) 생성하기
1. 작업하려는 해당 서버의 ROOT로 접속합니다.
2. dd 명령으로 가상 메모리(SWAP) 파일을 생성합니다.
dd if=/dev/zero of =/swap/swapfile1 bs=1024 count=1048576
dd if=/dev/zero of =/swap/swapfile2 bs=1024 count=1048576
dd if=/dev/zero of =/swap/swapfile3 bs=1024 count=1048576
dd는 파일을 변환하고 복사하는 것이 주 목적인 유닉스 및 유닉스 계열 운영 체제용 명령입니다.
위에서 dd 명령을 3번 반복해서 1GB(1024 * 1024 = 1048576)으로 설정하였는데,
2GB로 설정하고 싶다면 count에 2097152를 입력하면 됩니다. (1024 * 2048 = 2097152)
하나만 생성해도 문제가 없습니다만, 혹시나 싶어서 그리고 디스크 용량이 여유로워서 3개 추가하였습니다.
3. 가상 메모리(SWAP) 파일의 Permission 변경합니다.
chmod 600 /swap/swapfile1
chmod 600 /swap/swapfile2
chmod 600 /swap/swapfile3
chmod 명령어는 파일/디렉터리의 접근 권한을 변경하는 명령어이다. 파일의 소유자나 시스템 관리자만이 chmod를 사용할 수 있으며, 지정한 파일이나 디렉터리에 대한 파일 소유자, 파일 그룹, 다른 사용자의 접근 권한을 각각 설정할 수 있다. chmod를 이용한 파일/디렉터리의 권한 변경은 8진수를 이용한 변경법과 기호에 의한 변경법이 있다. 방식은 달라도 결과는 같습니다. 파일이나 디렉터리는 모두 각각의 권한을 가지고 있고 파일이나 디렉터리의 권한은 ls -l 명령으로 볼 수 있습니다.
4. 가상 메모리(SWAP) 파일을 시스템에 추가합니다.
mkswap /swap/swapfile1
mkswap /swap/swapfile2
mkswap /swap/swapfile3
mkswap 명령어는 지정한 특정 장치나 파일을 스왑 영역으로 지정합니다.
5. /etc/fstab 에 등록합니다.
/swap/swapfile1 swap swap defaults 1 1
/swap/swapfile2 swap swap defaults 1 1
/swap/swapfile3 swap swap defaults 1 1
vi etc/fstab (엔터) > 위와 같이 입력 > esc > !wp (엔터)
vi 편집기로 fstab 파일을 열고 위와 같이 등록하면 시스템이 재시작되어도 자동 실행됩니다.
6. 가상 메모리(SWAP) 파일을 설정합니다.
swapon /swap/swapfile1
swapon /swap/swapfile2
swapon /swap/swapfile3
swapon 명령어는 파일 혹은 path로 분류되는 블록 디바이스의 스왑 영역을 설정합니다.
7. 마지막으로 가상 메모리(SWAP)가 늘어났는지 확인합니다.
swapon -s
위와 같이 모두 따라 하셨다면 분명 앞으로 Error establishing a database connection 메시지를 보지 않으실 것입니다.
그리고 추가로 가상 메모리(SWAP)를 제거하는 방법을 알려드리겠습니다.
가상 메모리(SWAP) 제거하기
1. 가상 메모리(SWAP) 파일 설정 멈춥니다.
swapoff /swap/swapfile1
swapoff /swap/swapfile2
swapoff /swap/swapfile3
swapoff 명령어는 파일이나 혹은 디렉터리 위치로 분류되는 블록 디바이스의 스왑을 멈춥니다.
2. 가상 메모리(SWAP) 파일을 제거합니다.
rm /swap/swapfile1
rm /swap/swapfile2
rm /swap/swapfile3
rm (remove의 축약)은 파일 시스템으로부터 파일을 삭제할 때에 사용되는 유닉스 명령어입니다.
3. /etc/fstab 에서 제거합니다.
사실 글쓰기 연습한다고 제 경험을 공유해 보았는데, 쉽게 이해되고 도움이 되셨다면 좋겠습니다.
읽어 주셔서 감사합니다. 이상 WONY 였습니다. :)
'Programming > LINUX' 카테고리의 다른 글
NGINX 워드프레스 404 not found error 해결법 (0) | 2020.03.22 |
---|---|
vsftpd 설정하기 (0) | 2020.02.29 |
Apache 서버 iframe 에 외부 페이지가 뜨지 않는 경우 (0) | 2020.02.27 |
댓글
이 글 공유하기
다른 글
-
NGINX 워드프레스 404 not found error 해결법
NGINX 워드프레스 404 not found error 해결법
2020.03.22 -
vsftpd 설정하기
vsftpd 설정하기
2020.02.29 -
Apache 서버 iframe 에 외부 페이지가 뜨지 않는 경우
Apache 서버 iframe 에 외부 페이지가 뜨지 않는 경우
2020.02.27