Siteground에서 워드프레스 데모 설치 시 에러가 나는 경우

요즘 나오는 일부 테마는 높은 PHP 설정을 요구하는 경우가 종종 있습니다. 이 때문에 일부 서버에서는 워드프레스 데모를 설치하는 데 애를 먹기도 합니다.

예를 들어 인기 워드프레스 테마 중 하나인 The 7에서 Main Demo의 경우 다음과 그림과 같이 데모가 매우 크므로 많은 서버에서 임포트하는 데 어려움을 겪을 수 있다고 안내하고 있습니다.

Siteground에서 워드프레스 데모 설치 시 에러가 나는 경우 3

워드프레스 데모 설치 시 에러가 나는 많은 경우는 php 설정값이 테마에서 요구하는 사양에 부합하지 않기 때문입니다.

해외 웹호스팅 서비스 중 하나인 Siteground에서 The 7의 메인 데모를 로드하려고 시도하니 다음과 같은 오류가 표시되면서 데모 설치에 실패했습니다.

Siteground에서 워드프레스 데모 설치 시 에러가 나는 경우 4

The 7의 다른 데모는 별 문제 없이 로드에 성공했지만 이 Main Demo에서만 위와 같은 오류가 발생하네요. (The 7에서는 현재 26가지 데모가 제공됩니다.)

이 문제를 사이트그라운드 지원팀에 문의하여 다음과 같은 답변을 받았습니다.

memory limit is at 768M so that should not be an issue :) As for the max_execution_time it cannot be higher than 120 for shared hosting plans, however we can set Dynamic Timeouts so you import Demo Content for any theme :)

사이트그라운드의 경우 다른 웹호스팅 서비스와 달리 메모리 제한이 768MB로 매우 높은 편입니다. 제 사이트는 살펴보니까 128MB로 설정되어 있네요. (Siteground에서 자동으로 워드프레스를 설치하면 128MB로 설정되는 것 같습니다.)

또 다른 Siteground 담당자는 이 값을 512MB로 변경해보라고 하네요. 이 값은 512MB나 768MB로 높게 설정해도 사이트 성능에 영향을 미치지 않는다고 합니다. (하지만 Opcache 설정값은 높게 설정하면 리소스를 많이 할당하기 때문에 사이트 성능에 영향을 미칠 수 있다고 하네요.)

메모리 설정은 wp-config.php 파일에 define( 'WP_MEMORY_LIMIT', '512M' ); 라인을 추가하시면 됩니다. That's all, stop editing! 바로 위에 추가하도록 합니다. 저는 살펴보니까 아래와 같이 설정되어 있네요.

define( 'WP_MEMORY_LIMIT', '128M' );
define('WP_POST_REVISIONS', 3);
define('DISALLOW_FILE_EDIT', true);
/* That's all, stop editing! Happy blogging. */

define('DISALLOW_FILE_EDIT', true); 라인은 해커가 워드프레스 알림판으로 불법으로 침입하더라도 파일을 수정할 수 없도록 잠그는 기능을 합니다("워드프레스 보안 강화하기" 참고).

사이트그라운드 담당자의 말로는 메모리 제한이 768M이기 때문에 문제가 발생하지 않을 것이라고 합니다. 공유호스팅의 경우 max_execution_time은 120으로 고정되어 있지만 Dynamic Timeouts(동적 타임아웃?)을 설정하면 데모 콘텐츠를 가져오는 파일에 대하여 동적으로 타임아웃을 300으로 설정한다고 하네요.

Dynamic Timeouts을 설정하려면 다음 코드를 .htaccess 파일에 추가하도록 합니다.

<IfModule mod_dtimeout.c>
<Files ~ ".php">
SetEnvIf Request_URI "index.php" DynamicTimeout=300
SetEnvIf Request_URI "themes.php" DynamicTimeout=300
SetEnvIf Request_URI "wp-admin" DynamicTimeout=300
</Files>
</IfModule>

위 코드를 추가한 후에 The 7 메인 데모를 가져오려고 시도하니 중간에 동일한 오류가 발생했지만, 한 번 더 시도하니 제대로 가져올 수 있었습니다. (위의 코드 때문인지 아니면 데모 파일이 너무 커서 한 번에 다 가져올 수 없고 여러 번 시도하면 가져오게 되는지는 모르겠습니다.)

사이트그라운드에서 max_execution_time 때문에 문제가 발생하는 경우 메모리 제한 크기를 512M나 768M로 높여보고, 위에 제시된 Dynamic Timeouts 지시문을 .htaccess 파일에 추가해보시기 바랍니다.

만약 테마의 데모 파일이 너무 커서 문제가 계속 발생한다면 여러 번 시도해보시고, 그래도 문제가 되면 라이브 채팅으로 사이트그라운드에 연락하면 문제 해결에 도움을 받을 수도 있습니다.

참고로 워드프레스 플러그인을 업데이트할 때 504 Gateway Timeout (504 게이트웨이 타임아웃) 오류 메시지가 표시되지만 실제로는 업데이트가 제대로 되는 경우가 있을 수 있습니다. 이 문제도 아마 max_execution_time 설정과 관련될 수도 있을 것 같습니다. (504 게이트웨이 타임아웃 오류의 경우 어떤 글에서는 방화벽 때문일 수도 있다고 하네요.)

504 게이트웨이 타임아웃 오류의  경우에도 위에서 제시한 방법(메모리 제한 크기 상향 조정, Dynamic Timeouts 지시문 추가)을 시도해보고, 그래도 잘 안 되면 다음 코드를 php.ini 파일을 만들어 추가해보시기 바랍니다.

opcache.interned_strings_buffer = 16
opcache.memory_consumption = 256

위의 코드를 추가한 후에 사이트가 제대로 작동하는지 체크해보는 것이 중요합니다. 테마와 PHP 버전에 따라 사이트에 오류가 발생할 수도 있습니다.

업데이트: 본문에 나와 있는 Dynamic Timeouts 관련 코드를 .htaccess 파일에 추가하고 메모리 크기를 512MB로 늘리니까 504 Gateway Timeout 오류 메시지가 더 이상 표시되지 않는 것을 확인했습니다. 다른 환경에서는 발생할 수도 있지만 빈도가 많이 줄어들 것 같습니다.

참고:

일부 글에 제휴 링크가 포함될 수 있으며 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

1개 댓글

  1. 위에 나와 있는 Dynamic Timeouts 관련 코드를 .htaccess 파일에 추가하니까 504 Gateway Timeout Gateway Timeout 오류 메시지가 더 이상 표시되지 않네요.

댓글 남기기

* 이메일 정보는 공개되지 않습니다.