이 영역을 누르면 첫 페이지로 이동
WONY 블로그의 첫 페이지로 이동

WONY

페이지 맨 위로 올라가기

WONY

워드프레스 Error establishing a database connection 해결 방법

  • 2020.03.15 04:51
  • Programming/LINUX
AWS 프리티어와 라이트세일에서 워드프레스 Error establishing a database connection 해결 방법

안녕하세요. WONY입니다.

 

저는 아마존 웹 서비스(이하 AWS)에서 Amazon EC2 프리티어와 라이트세일 월 3.50 USD의 가장 저렴한 서비스를 이용하고 있습니다.

 

프리티어에는 NGINX + PHP-FPM + MariaDB으로 서버를 구성하고 영카트를 설치해서 서비스를 운영하고 있었는데, 워드프레스가 필요해서 서버에 워드프레스를 추가로 설치하였고 갖가지 플러그인을 설치하였는데, 관리자 페이지에서 세팅을 하거나 글을 작성할 때 그리고 어떠한 작업을 할 때 지속적으로 Error establishing a database connection 메시지를 보여주며 MariaDB가 뻗어 버리는 상황이 반복되었습니다.

 

DB가 뻗었을때...

하루에 한두 번씩 그러한 상황이 반복되고 SSH에 접속해서 MariaDB 데몬을 RESTART 해도 무엇 때문인지 모르겠지만 실행이 되지 않았으며, 오로지 REBOOT 명령을 통해서만 해결이 되었습니다. 제가 눈을 뜨고 있을 때라면 REBOOT을 통해 서버를 다시 시작하면 됐지만 잠을 자거나 서버를 신경 쓰지 못하는 상황에서는 장시간 서비스가 정지되는 상황이 발생하면.. 하... 짜증이....

 

안 되겠다 싶어 서버 관리가 익숙지 못한 저는 구글링을 통해 wp-config.php 파일을 수정하거나 MariaDB 설정 파일인 my.cnf를 수정하라는 글을 보았고 그대로 따라 해 보았지만 같은 상황이 반복되었습니다. 그 글들이 잘못된 게 아니라 저의 상황과 같지 않아서 그런 것 같았습니다. 그리고 로그 파일이 쌓여서 그런 것 같다는 글도 봐서 로그 파일도 삭제해 보고 했지만 상황이 달라지지 않고 같은 상황이 반복되다 보니 설치 과정에 잘못된 게 있나 싶어서 서버를 초기화하고 다시 세팅해보고 했지만 상황이 전혀 달라지지 않았습니다.

 

서비스를 업그레이드를 하냐 아니면 워드프레스를 포기하냐 하는 상황에 어느 글에서 Amazon RDS를 이용하면 해결된다는 글을 보았는데 현재 운영하는 서비스가 수익형 서비스가 아니다 보니 스트레스는 쌓이지만 굳이 그렇게 까지 추가로 유료 서비스를 이용할 이유는 없었고, 라이트세일이 한 달 정확히 750시간 무료로 사용할 수 있다고 해서 라이트세일도 세팅을 해보았습니다.

 

라이트세일에는 Apache2 + PHP + MySQL으로 서버를 구성하였고 라이트세일 서버에는 영카트를 제외한 워드프레스만 설치하고 갖가지 플러그인을 설치하였는데 아.. 이런.. 똑같이 Error establishing a database connection 메시지를 보여주며 프리티어 서버와 같이 MySQL 이 뻗어 버리는 상황이 반복되었습니다.

 

DB가 뻗었을때2...

그렇게 며칠이 지나고 지속적으로 구글링을 하다다 해결방법을 찾게 되었습니다.

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 에 등록합니다.

 

/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 명령으로 확인하기

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

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 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
다른 글 더 둘러보기

정보

WONY 블로그의 첫 페이지로 이동

WONY

  • WONY의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (14)
    • Photograph (6)
      • Korea (0)
      • Philippines (6)
    • Programming (6)
      • LINUX (4)
      • CSS (1)
      • Javascript (0)
      • JSP (1)
    • English (2)

최근 글

인기 글

댓글

나의 외부 링크

정보

WonyLog의 WONY

WONY

WonyLog

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © WonyLog.

티스토리툴바