안녕하세요.
오늘은 Wordpress의 빠른 퍼포먼스를 위해 필요하다는 Memcached를 설치하는 방법을 알려드리겠습니다.
저는 arm64 기반의 시스템에서 Ubuntu를 OS로 사용하고 있고 Docker Container를 통해 Wordpress를 동작시켰습니다. 다른 기반의 시스템에서는 다른 과정을 거치거나 필요 없을 수도 있습니다. 이 글에서는 다른 시스템에서의 과정은 다루지 않습니다!
들어가며
Wordpress는 블로그를 시작하기 전 항상 비교되는 블로그 플랫폼 중 하나였습니다. 자체 호스팅으로도 운영할 수 있을 만큼 많은 높은 자유도를 가진 플랫폼이었습니다. 티스토리를 시작하면서 한편에는 궁금함이 계속 남아있어서 해결하기 위해 Wordpress를 Docker로 한번 설치해 보았습니다. 그 과정에서 추천하는 플러그인들을 적용하던 중 Memcached를 활용한 Cache를 활용하는 플러그인을 만나게 되었고 그것을 적용하는 과정에서 어려움(?)을 겪었던 것들을 공유하고자 이 글을 작성하게 되었습니다.
제가 겪은 부분이 해결되어 제공되는 Docker 이미지가 이 세상에 없을 거라 생각이 들지 않습니다. 다만, 저는 직접 해결을 하기 위해 아래의 과정을 진행해 보았습니다.
Wordpress 설치 (docker-compose.yml)
Wordpress의 설치는 정말 간단했습니다. 제가 설치한 docker-compose.yml은 아래와 같습니다.
services:
db:
# We use a mariadb image which supports both amd64 & arm64 architecture
image: mariadb:latest
container_name: wordpress_db
# If you really want to use MySQL, uncomment the following line
#image: mysql:8.0.27
command: "--default-authentication-plugin=mysql_native_password"
volumes:
- ./db_data:/var/lib/mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=<PASSWORD>
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=<PASSWORD>
wordpress:
image: wordpress:latest
container_name: wordpress
volumes:
- ./wp_data:/var/www/html
ports:
- 80:80
restart: always
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=<PASSWORD>
- WORDPRESS_DB_NAME=wordpress
links:
- db
depends_on:
- db
플러그인 설치
제가 설치하려는 플러그인은 W3 Total Cache입니다. 다른 Cache 플러그인도 많지만, 후기와 설치 수가 많아 선택했습니다. 다른 플러그인들도 기회가 된다면 경험해 볼 예정입니다.
플러그인 설정
설치는 버튼 한 번으로 완료가 되었고, 설정을 하기 위해 페이지를 진입하였습니다. 근데 여기에서 Cache 방법 중 Memcached를 가장 추천하였는데 선택이 되질 않았습니다. Memcached 모듈이 설치되지 않아서 그랬던 것이였습니다.
Memcached 설치 준비
여러 가지 검색을 통해 준비 단계를 쉽게 정리할 수 있었습니다.
apt install -y libmemcached-dev zlib1g-dev libssl-dev memcached
Memcached 설치
아래의 명령어를 통해 한번에 설치가 가능합니다.
yes '' | pecl install -f memcached-3.2.0 && docker-php-ext-enable memcached
진행을 하고 나면 아래와 비슷한 메시지를 보실 수 있습니다. 진행 중이던 Console이 중간에 종료되어 정확한 메시지가 아닌 점 확인해 주시기 바랍니다.
(대략적으로는 "php.ini의 값을 추가해 적용을 완료해라"의 메시지였던 것으로 기억합니다)
extention=/usr/local/lib/php/extensions/no-debug-non-zts-20220829/memcached.so ...
위의 내용을 잘 복사하거나 메모하여 두시고 다음 단계로 진행해 주시면 됩니다.
저는 Docker로 동작중이기 때문에 위의 과정을 직접 컨테이너에 접속하여 진행했습니다.
Memcached 적용
간단하게 설치가 완료되었고 동작중인 php에 적용을 해야 합니다. 많은 글들이 "php.ini에 값을 넣어라"라고 안내를 해서 열심히 해당 파일을 찾았는데 파일이 보이지 않았습니다. 이유는 제가 동작중인 Wordpress 이미지는 php 8.2 버전에서 동작중이고 php.ini 설정파일에 값을 추가하는 것이 php.ini-production, php.ini-development으로 바뀌었다고 합니다.
php.ini-production 찾기
우리가 찾을 파일은 "php.ini-production"입니다. 아래의 명령어를 입력하면 쉽게 찾을 수 있습니다.
php -i | grep php.ini
// Output: Configuration File (php.ini) Path => /usr/local/etc/php
/usr/local/etc/php에 있다고 알 수 있었습니다. 편집기를 통해 php.ini-production을 열어 아래의 값을 추가해 주세요.
php.ini-prodcution 값 추가
이전 단계에서 복사했던 내용을 php.ini.production 파일에 추가하시기만 하면 됩니다.
extention=/usr/local/lib/php/extensions/no-debug-non-zts-20220829/memcached.so
Memcached 적용 확인
접근이 가능한 곳에 phpinfo()를 출력하는 php파일을 만들어 확인해 보았습니다.
<?php phpinfo(); ?>
phpinfo가 출력되는 화면에서 Memcached를 검색합니다.
위의 사진처럼 Memcached를 찾을 수 있다면 적용에 성공한 것입니다.
플러그인 다시 적용
Memcached가 설치된 것을 확인했으니 다시 플러그인 설정 페이지로 들어가 보았습니다.
처음 선택이 되지 않은 Memcached가 선택이 가능해진 것을 확인할 수 있었습니다. 다른 Cache옵션들에서도 Memcached를 선택하여 해당 플러그인의 설정을 잘 마칠 수 있었습니다.
마치며
별 것도 아니라고 생각했던 과정이지만, Wordpress에 대한 지식, PHP에 대한 지식이 부족한 상태에서 진행을 하다 보니 초보적인 실수라고 생각하실 수 있을 거라 생각이 됩니다. 하지만 반대로 저와 같이 그렇지 않은 분들께는 도움이 되었을 거라 생각이 들어 이 글을 작성하게 되었습니다. WordPress를 시작하려는 분들께 조금이라도 도움이 되었으면 좋겠습니다.
긴 글 읽어주셔서 감사합니다.
저와 같이 Docker로 Wordpress를 운영 중이시라면, 해당 과정을 매번 반복해야 할 수 있습니다. 그렇지 않게 하기 위해선 Dockerfile을 통해 해당 과정을 자동화시켜 Build 후 사용하면 편하게 사용하실 수 있습니다.
추가
Memcached 설치 과정을 포함한 Dockerfile을 공유드립니다.
FROM wordpress:latest
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y libmemcached-dev zlib1g-dev libssl-dev memcached wget libpng-dev libsharp-dev\
&& apt-get clean \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN yes '' | pecl install -f memcached-3.2.0 \
&& docker-php-ext-enable memcached
RUN echo "extention=/usr/local/lib/php/extensions/no-debug-non-zts-20220829/memcached.so" >> /usr/local/etc/php/php.ini-production
참고로 memcached가 docker 컨테이너 시작 시 자동으로 서비스가 실행되지 않는 문제가 있습니다. 컨테이너에 이미지를 올린 후 service memcached start 또는 restart를 수동으로 실행해 주셔야 정상적으로 Memcached 사용이 가능합니다. 이 부분을 해결하게 되면 업데이트하도록 하겠습니다.
'Web > 지식창고' 카테고리의 다른 글
[Docker/arm64] Wordpress 알아보기 2편 - MiniO 적용방법 (0) | 2024.06.17 |
---|---|
[Web] 브라우저 렌더링 과정 (0) | 2024.06.17 |
[Web/Javascript] 화살표 함수 vs 일반 함수 (0) | 2024.06.17 |
[Web/Javascript] 프로토타입 (Prototype)에 대해서 (0) | 2024.06.17 |
[Web/Javascript] this와 call(), apply(), bind() 이해하기 (0) | 2024.06.17 |