도커에서 워드프레스, redis 캐시 설정방법(Connection refused [tcp://127.0.0.1:6379], There has been a critical error on this website 에러해결)

이 글에서는 도커 환경에서 워드프레스와 Redis를 사용하여 객체 캐싱을 설정하는 과정에서 발생할 수 있는 흔한 오류에 대해 알아보고, 이를 해결하는 방법을 자세히 설명하도록 하겠다. 특히, Redis 서버가 연결 거부 오류를 일으킬 때 어떻게 대처해야 하는지에 초점을 맞출 것이다. 워드프레스 사용자들이 종종 겪는 이 문제를 효과적으로 해결하여 사이트의 성능을 개선할 수 있기를 바란다.

설치한 플러그인

Redis Object Cache

Redis Object Cache 오류 발생

도커 환경에서 워드프레스에 Redis Object Cache 플러그인을 설치한 후, Redis 서버에 연결할 수 없다는 오류가 발생한다. 오류 메시지는 다음과 같습니다.

Redis is unreachable: Connection refused [tcp://127.0.0.1:6379]

환경 설정 검토

docker ps -a

도커 컨테이너에서 Redis 서버의 상태를 확인합니다. 이는 컨테이너 ID, 이미지, 상태 등의 정보를 포함한 형식으로 검토할 수 있다.

CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
5235dcxxxxxxredis:7“redis-server –maxm…”6 minutes agoUp 6 minutes6379/tcpmysite_redis

wp-config.phpobject-cache.php 파일에서 Redis 서버 설정을 검토합니다. 특히, 호스트 이름이 컨테이너의 이름과 일치하는지 확인한다.

문제 해결 방법

//wordpress/data/wp-config.php

define( 'WP_REDIS_HOST', 'mysite_redis' ); //redis의 도커 컨테이너 이름
define( 'WP_REDIS_PORT', 6379 );

wp-config.php에서 위 내용을 복사 붙여넣기 한 후, mysite_redis 이 부분을 redis가 설치된 도커 컨테이너 이름을 적어준다. 그리고 저장한다.

이어서 관리화면을 새로고침 하면, 아래와 같이 Redis is unreachable: Connection refused [tcp://127.0.0.1:6379]이 문구가 사라지고, Enable Object Cache 버튼이 활성화 된 것을 확인할 수 있다.

Enable Object Cache 버튼을 누른다.

잠시 후, “There has been a critical error on this website.”라는 에러 문구가 뜨면서 치명적인 오류가 발생한다. 이 때부터는 관리자 화면, 사이트 화면 모두 이 에러화면이 뜬다.

처음에 당황했지만 에러 코드 확인 후, 아래 방법으로 에러를 해결할 수 있었다.

//wordpress/data/wp-content/object-cache.php

    protected function build_parameters() {
        $parameters = [
            'scheme' => 'tcp',
            'host' => '127.0.0.1',
            'port' => 6379,
            'database' => 0,
            'timeout' => 1,
            'read_timeout' => 1,
            'retry_interval' => null,
            'persistent' => false,
        ];

object-cache.php 파일에서 Redis 연결 설정을 도커 환경에 맞게 조정한다. 호스트를 127.0.0.1에서 도커 컨테이너 이름으로 변경하면 에러 문제가 해결된다.

    protected function build_parameters() {
        $parameters = [
            'scheme' => 'tcp',
            'host' => 'mysite_redis', //redis의 도커 컨테이너 이름
            'port' => 6379,
            'database' => 0,
            'timeout' => 1,
            'read_timeout' => 1,
            'retry_interval' => null,
            'persistent' => false,
        ];

나가는 글

이 가이드를 통해 워드프레스 사용자들은 도커 환경에서 Redis를 효율적으로 설정하고 관리할 수 있을 것으로 생각한다. Redis Object Cache 플러그인은 워드프레스 사이트의 성능을 크게 향상시킬 수 있으므로, 설정 과정에서 발생할 수 있는 문제들을 잘 이해하고 해결하는 것이 중요하다. 이 문서가 그 과정에서 발생할 수 있는 일반적인 문제를 해결하는 데 도움이 되기를 바란다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다