워드프레스 플러그인, 테마 사용을 위한 메모리 제한 설정과 php.ini 파일 설정 방법

1

WordPress 유료 플러그인이나 테마등은 기능이 다채로워서 시스템 리소스를 많이 필요로 하곤하므로 서버의 제한을 조정해야 할 때가 있습니다. 이는 대부분은 PHP 설정을 변경하는 것이고 일부는 워드프레스 설정파일을 수정해야하기도 하는데요.  그런 요구치를 충족시키기위해 PHP 설정파일인 php.ini 설정값을 바꾸는 방법을 알아보겠습니다.

참고로 아마존 라이트세일같은 VPS에서는 자신이 서버 컴퓨터의 모든 권한을 가지고 있기때문에 PHP 설정을 마음대로 할 수 있지만 하나의 컴퓨터를 여러 사용자와 나눠쓰는 웹호스팅을 사용하면 root권한을 가질 수가 없어서 변경할 수 없을 텐데요. 그런경우는 자신이 사용하는 웹호스팅 서비스사의 고객센터 문의를 통해 설정변경을 요청해야할 수 있습니다.

참고지식
서버접속 및 제어에 대한 개념
– $과 # 그리고 리눅스 명령어 sudo
리눅스 nano editor 사용방법

워드프레스 오류 및 에러 메시지

워드프레스를 사용하다보면 여러가지 오류 메시지를 만나곤 하는데 워드프레스 메모리 리밋 변경이나 php.ini 설정값을 변경함으로써 해결되곤 합니다.

  • 테마나 플러그인을 업로드해서 설치할 때
    • The uploaded file exceeds the upload_max_filesize directive in php.ini.
    • The link you followed has expired.
  • 500 에러
  • fatal error: maximum execution time exceeded
  • 504 Gateway Time-out
  • HTTP 오류

PHP 설정파일 php.ini의 위치와  PHP-FPM 재실행방법

memory_limit, upload_max_filesize, post_max_size 등등의 값을 바꾸기위해서는 PHP 설정파일인 php.ini를 수정해야하므로 먼저 그 위치를 알아야합니다.
 
이파일의 위치는 자신의 php(또는 php-fpm)이 어느 경로에 설치되었느냐에 따라서 달라집니다. 대표적으로 비트나미(bitnami) 패키지로 설치한 워드프레스는 Bitnami 개발사가 준비한 비트나미스택이라서 경로나 설정이 정석으로 설치한 것과는 판이하게 다르죠.
 
제 또다른 연재작인 LEMP 스택 서버구성은 정석으로 설치한 php이지만 php-fpm을 사용하기때문에 또 다르기도 합니다.
 
php.ini 파일을 수정하고 나면 php-fpm과 웹서버를 재시작해줘야 적용됩니다.

1) LEMP스택(nginx 웹서버)에서의 php.ini 위치와 서비스 재시작

제 연재작인 LEMP 스택에 설치한 워드프레스라면 디폴트 위치에 Nignx를 사용하게 되는데 php.ini 파일의 위치는 아래와 같습니다. 

  • /etc/php/7.2/fpm/php.ini
  • /etc/php/7.2/cli/php.ini

참고: /cli/ 폴더에 있는 php.ini는 CLI 에서 php 스크립트를 동작시킬 때의 설정파일로, nginx 웹서버처럼 PHP-FPM을 통한 php 실행영향을 받지 않는다고 하네요.

참고로 위에서 중간 경로에있는 /7.2/ 폴더는 자신의 리눅스 서버에 설치한 php 버전의 번호에 맞춰서 다를 겁니다. 위의 경우 PHP 7.2버전을 설치한 서버라서 경로가 저렇게 되었습니다.

php 엔진 재시작 방법

php.ini 파일을 수정하고 나면 PHP FPM을 재시작ㄱ 해줘야하는데 php-fpm과 웹서버(nginx) 재시작 명령어는 아래와 같습니다. 

  • php-fpm 재시작버전
    • sudo service php-fpm restart 또는
    • sudo systemctl restart php-fpm
      • 참고로 위 명령어에서 php7.2-fpm 처럼 중간에자신의 php버전을 포함해야하는 경우도 있습니다.
  • nginx 웹서버 재시작
    • 먼저 sudo nginx -t 를 입력했을 때 O.K 메시지가 나오면
    • sudo service nginx restart 로 재시작. (참고)
    • 도는
    • sudo systemctl restart nginx

우분투 서버는 sudo service 애플리케이셔이름 동작사항 과 같은 형식으로 여러가지 프로세스에 명령어를 내리므로 외워두면 도움이 됩니다.

2) 비트나미 스택 워드프레스일 때 php.ini 파일의 위치와 재시작 방법

아마존 라이트세일에 준비된 워드프레스 설치방법은 비트나미(Bitnami) 스택을 기반으로 한 워드프레스이고 php설치위치가 /opt/bitnami/ 이라서 php.ini 파일 위치는 아래와 같습니다.

  • /opt/bitnami/php/etc/php.ini

비트나미 스택에서 php 엔진 재시작 방법

  • php-fpm 재시작
    • sudo /opt/bitnami/ctlscript.sh restart php-fpm
  • 아파치 웹서버 재시작
    • sudo /opt/bitnami/ctlscript.sh restart apache

비트나미 스택에서는 /opt/bitnami/ctlscript.sh 스크립트 파일로 거의 모든 애플리케이션를 리로드, 재시작하므로 외워두면 좋습니다.

 

PHP 설정파일(php.ini) 및 워드프레스 사용 메모리 설정 변경

PHP 설정은 모두 php.ini에서 설정되므로 텍스트 에디터에서 php.ini파일을 열고 해당 변수를 찾아 수정하면됩니다.

CLI에서는 아래 명령어를 사용해서 nano 에디터로 수정가능합니다.

  1. LEMP 스택: nano 에디터로 php.ini 파일 수정 명령어
  2. Bitnami 스택: nano 에디터로 php.ini 파일 수정 명령어
    • sudo nano /opt/bitnami/php/etc/php.ini

 

참고로 CLI의 텍스트에디터가 불편하다면 FTP 클라이언트로 접속해 수정하는 방법도있지만 php.ini 파일 편집권한은 root 사용자의 권한 하에 있으므로 그전에 파일 권한을 777로 변경하고 수정해야할 것입니다.

 

CLI에서 php.ini 파일을 nano 편집기를 열었다면 nano 편집기의 단어 찾기 기능을 이용해 해당 변수를 찾아 값을 변경해줍시다. 워드프레스 사용을 위해서 대략 권장되는 값은 아래와 같습니다.

  • file_uploads = On
  • post_max_size = 64M
  • upload_max_filesize = 64M
    • post_max_size 와 upload_max_filesize 는 업로드가능한 미디어 파일 크기와 테마나 플러그인 설치용 zip파일 업로드 크기에 제한을 줍니다. 
  • max_input_vars = 3000
  • max_input_time = 300
  • max_execution_time =  300
    • max_input_time과 max_execution_time은 보통 300이면 충분하지만, 유료 테마의 경우 템플릿을 다운로드 받아야할 때 인터넷 접속이 느린 경우 더 많은 시간을 필요로 할 수 있습니다.
  • memory_limit = 128M
    • php 메모리제한 값. 워드프레스에서는 추가로 wp-config.php에 설정을 해줘야합니다. 아래 참고.

 

php.ini 파일을 수정하고나면 nano 편집기를 저장하면서 종료해주고 PHP-FPM과 웹서버를 재시작해주세요.

 

워드프레스 메모리 사용 제한 값 변경하기

php.ini 파일의 memory_limit 값 설정은 php를 사용하는데 있어서 최대 제한 값일 뿐, 이 값을 올려도 워드프레스 워드프레스의 기본 설정치는 40MB로 정해져있는데요.

워드프레스가 사용할 수 있는 최대 메모리값을 변경하려면 wp-config.php 파일을 열어서 define문을 추가해 설정해줘야합니다. 

wp-config.php 파일은 워드프레스 루트 폴더에 있고, 그 루트폴더는 자신이 워드프레스를 어디에 설치했느냐에 따라 다릅니다. 아래처럼 CLI에서 nano 편집기를 이용해 열어봅시다. 

참고: wp-config.php 파일 수정은 root가 아니어도 되니, CLI에서의 편집이 불편하다면 FTP 프로그램을 열어 수정해도 될겁니다. 

1) LEMP스택 워드프레스에서 wp-config.php 파일위치 및 수정하기

LEMP 스택에 설치한 워드프레스라면 /var/www/html/ 하위에 있을 겁니다. 아래처럼 /폴더경로/wp-config.php 를 적어서 nano 편집기로 열어줍니다.

sudo nano /var/www/html/wp-config.php

 

2) Bitnami 스택 워드프레스에서 wp-config.php 위치 및 수정하기

아마존 라이트세일에서 설치한 비트나미 워드프레스라면  /opt/bitnami/apps/wordpress/htdocs/ 폴더가 워드프레스의 루트폴더입니다. 아래처럼 /폴더경로/wp-config.php 를 적어서 nano 편집기로 열어줍니다.

sudo nano /opt/bitnami/apps/wordpress/htdocs/wp-config.php

 

wp-config.php 파일이 열렸다면 아래 그림처럼 /* That’s all, stop editing!…*/ 이라고 쓰인 주석문을 찾아 그 위에 작성해주면 됩니다. 

define( 'WP_MEMORY_LIMIT', '128M' );

wp-config.php 파일에 define 문 작성그 전에 WP_MEMORY_LIMIT 상수가 이미 작성되어있는지 찾아서 확인해보고 있다면 뒷부분에 128M 부분만 변경해줍니다.

파일수정이 완료되면 wp-config.php 파일을 저장하고 닫아줍니다. wp-config.php 만 수정했을 때든 웹서버를 재시작 하지 않아도 됩니다.

 

메모리 제한은 몇으로 해야할까?

자신의 서버사양이 높다면 서버가 사용중인 애플리케이션, 프로세스에따라서 메모리 제한은 더 늘려도 될텐데요. 하나의 워드프레스는 128M이면 거의 모든 플러그인,테마의 요구를 충족시키는데 충분할 겁니다.

자신의 서버 메모리가 512MB이라고 할 때, PHP나 워드프레스뿐만 아니라 운영체제인 리눅스자체가 사용하는 메모리도 있고, MySQL, 웹서버등이 필요로 하는 메모리도 있는데요. 컴퓨터는 메모리 스왑, 예약을 통해서 당장 쓰이지 않더라도 일정공간을 가지고 있게됩니다.

그런 과정에서 제한치를 넘어가버린다면 메모리 부족 에러가 발생해 서버가 다운될 수 있으므로 자신의 서버 사양에 너무 근접하지 않게 설정해야 하겠습니다.

1 개의 댓글

  1. 안녕하세요

    wp-config.php에서 메모리 제한을 올려도 워드프레스 사이트에서 확인해보면 40MB로 그대로인데요,
    어떤 부분이 문제인걸까요?

댓글은 익명이나 SNS, wordpress.com 로그인 지원). 마크다운 문법 사용가능(Shift+~ 키로 특정문구 혹은 위아래 ~~~으로감싸서 여러줄을 코드블락으로 작성)