Blog

XpressEngine 캐시 설정 가이드

XE개발팀 / 2012. 5. 31.

1. 개요

XpressEngine(이하 XE)에서는 APC, memcached 등 여러 가지 캐시 엔진을 지원합니다. 캐시 설정을 통해 XE 동작 속도를 향상 시킬 수 있습니다. 이 문서에서는 XE에서 각 캐시 엔진을 사용하여 캐시를 설정하는 방법에 대하여 알아보겠습니다.

2. 지원하는 캐시 엔진

현재(XE 1.5.x) 아래와 같은 캐시 엔진을 지원하고 있습니다.

  • APC: Alternative PHP Cache는 PHP를 위한 캐시입니다.
  • Memcached: Memcached는 자유 오픈소스 프로그램으로써 메모리 캐시 시스템입니다.
  • Wincache: Windows Cache Extension은 Windows 플랫폼에서 실행되는 애플리케이션의 속도를 향상시키는데 사용되는 PHP 가속기입니다.
  • File: 위와 같은 캐시 엔진 사용이 불가능할 경우 일반 파일 시스템을 이용하여 캐시를 사용할 수 있습니다.
고급 사용자를 위한 가이드입니다
File 캐시를 제외한 나머지 캐시 엔진은 서버에 해당 캐시 엔진 지원을 위한 프로그램 설치가 요구됩니다.

3.File 캐시 사용하기

간단한 설정을 통해 File 캐시를 사용할 수 있습니다.

3.1. XE 설정 파일 수정

XE_설치_디렉터리/files/config/db.config.php를 열어 아래 내용을 추가합니다.

$db_info->use_object_cache = 'file';

$db_info->use_template_cache = 'file';

파일 수정이 되지 않습니다(파일에 대한 권한이 없습니다).
XE의 files 디렉터리는 웹 서버의 실행 권한으로 생성이 되기 때문에 호스팅 사용자의 경우 파일을 수정할 수 있는 권한을 가지고 있지 않을 수 있습니다. 이 경우 사용하시는 호스팅 업체의 1대1 문의를 통해 처리하시기 바랍니다.

4. APC 캐시 사용하기

4.1. APC extension 설치 확인

아래 내용을 담은 PHP 파일을 하나 작성하여 해당 페이지로 접속한 후 'apc'로 검색해 apc extension이 설치되었는지 확인합니다.

<?php phpinfo(); ?>

위 그림과 같이 apc가 나온다면 설치가 된 것입니다. 만약 apc가 나오지 않는다면 설치를 하여야 합니다.

4.2. APC extension 설치

APC extension은 pecl을 통해 손쉽게 설치할 수 있습니다. PHP가 설치된 디렉터리의 bin 디렉터리에서 아래 명령을 실행해 줍니다.

$ ./pecl install apc

중간에 나오는 질문에 아무 것도 입력하지 않고 엔터를 쳐서 진행하면 됩니다.

downloading APC-3.1.9.tgz ...

Starting to download APC-3.1.9.tgz (155,540 bytes)

.................................done: 155,540 bytes

54 source files, building

running: phpize

Configuring for:

PHP Api Version:         20090626

Zend Module Api No:      20090626

Zend Extension Api No:   220090626

Enable internal debugging in APC [no] :

Enable per request file info about files used from the APC cache [no] :

Enable spin locks (EXPERIMENTAL) [no] :

Enable memory protection (EXPERIMENTAL) [no] :

Enable pthread mutexes (default) [yes] :

Enable pthread read/write locks (EXPERIMENTAL) [no] :

컴파일 과정이 지난 후 아래와 같은 설치 성공 메시지를 볼 수 있습니다.

Build process completed successfully

Installing 'PHP_설치_디렉터리/lib/php/extensions/no-debug-non-zts-20090626/apc.so'

Installing 'PHP_설치_디렉터리/include/php/ext/apc/apc_serializer.h'

install ok: channel://pecl.php.net/APC-3.1.9

configuration option "php_ini" is not set to php.ini location

You should add "extension=apc.so" to php.ini

이제 php.ini 파일을 열어 아래와 같이 extension을 추가한 후에 웹 서버를 재시작 해 줍니다.

extension=apc.so

웹 서버 재시작 후에 다시 info 페이지로 접속하여 'apc'가 있는지 확인합니다.

Info 페이지에서 APC가 검색되지 않습니다.
extension에 apc.so 파일의 절대 경로를 입력해 보세요. so 파일의 절대 경로는 pecl 설치 성공 메시지에서 확인할 수 있습니다.

4.3. XE 설정 파일 수정

XE_설치_디렉터리/files/config/db.config.php를 열어 아래 내용을 추가합니다.

$db_info->use_object_cache = 'apc';

$db_info->use_template_cache = 'apc';

5. Memcached 캐시 사용하기

Memcached는 Memcached 서버와 PHP extension 두 가지를 설치하여야 합니다.

5.1. Memcached 설치 확인

아래 명령을 이용하여 memcached가 실행 중인지 확인합니다.

$ ps ax | grep memcached

31721 ?        Ssl    0:01 memcached -u root -d

혹은 아래와 같이 포트 번호 11211로 접속이 되는지 확인합니다.

$ telnet localhost 11211

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

quit

Connection closed by foreign host.

5.2. Memcached 설치

Memcached 설치가 되어 있지 않다면 설치가 필요합니다. 아래 명령을 이용하여 설치합니다.

데비안/우분투

$ apt-get install memcached

레드햇/페도라

$ yum install memcahed

자세한 정보
Memcached에 대한 자세한 정보는 http://code.google.com/p/memcached/wiki/NewStart를 참고하세요.

5.3. Memcache extension 설치 확인

아래 내용을 담은 PHP 파일을 하나 작성하여 해당 페이지로 접속한 후 'memcache'로 검색해 memcahe extension이 설치되었는지 확인합니다.

<?php phpinfo(); ?>

5.4. Memcache extension 설치

Memcache extension은 PECL을 통해 손쉽게 설치할 수 있습니다. PHP 설치 디렉터리의 bin에서 아래 명령을 이용하여 설치합니다.

$ ./pecl install memcache

중간에 나오는 질문에 아무 것도 입력하지 않고 엔터를 쳐서 진행하면 됩니다.

Starting to download memcache-2.2.6.tar (Unknown size)

.....................................done: 170,496 bytes

11 source files, building

running: phpize

Configuring for:

PHP Api Version:         20090626

Zend Module Api No:      20090626

Zend Extension Api No:   220090626

Enable memcache session handler support? [yes] :

컴파일 과정이 지난 후 아래와 같은 설치 성공 메시지를 볼 수 있습니다.

Build process completed successfully

Installing 'PHP_설치_디렉터리/lib/php/extensions/no-debug-non-zts-20090626/memcache.so'

install ok: channel://pecl.php.net/memcache-2.2.6

configuration option "php_ini" is not set to php.ini location

You should add "extension=memcache.so" to php.ini

이제 php.ini 파일을 열어 아래와 같이 extension을 추가한 후에 웹 서버를 재시작 해 줍니다.

extension=memcache.so

웹 서버 재시작 후에 다시 info 페이지로 접속하여 'memcache'가 있는지 확인합니다.

Info 페이지에서 memcache가 검색되지 않습니다.
extension에 memcache.so 파일의 절대 경로를 입력해 보세요. so 파일의 절대 경로는 pecl 설치 성공 메시지에서 확인할 수 있습니다.

5.5. XE 설정 파일 수정

XE_설치_디렉터리/files/config/db.config.php를 열어 아래 내용을 추가합니다.

$db_info->use_object_cache = 'memcache://localhost:11211';

$db_info->use_template_cache = 'memcache://localhost:11211';

6. Wincache 캐시 사용하기

6.1. FastCGI 설정

Wincache를 설치 및 설정하려면 먼저 FastCGI를 사용해서 PHP가 IIS에서 동작하도록 설정해야 합니다.

http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis/#Overview

중요
Wincache는 PHP의 Non Thread Safe 빌드에서만 사용할 수 있습니다.

6.2. Wincache extension 설치 확인

아래 내용을 담은 PHP 파일을 하나 작성하여 해당 페이지로 접속한 후 'wincache'로 검색해 wincache extension이 설치되었는지 확인합니다.

<?php phpinfo(); ?>

6.3. Wincache extension 설치

http://www.iis.net/download/WinCacheForPHP에서 wincache 확장 기능을 다운로드한 후 압축을 해제합니다.

php_wincache.dll 파일을 PHP의 extensions 폴더로 복사합니다. 예) C:\Program Files\PHP\ext

php.ini 파일에 아래 내용을 추가합니다. php.ini는 보통 C:\Program Files\PHP\php.ini에 있습니다.

extension=php_wincache.dll

PHP용 IIS 응용프로그램 풀을 재시작한 후 다시 info 페이지로 접속하여 'wincache'가 있는지 확인합니다.

6.4. XE 설정 파일 수정

XE_설치_디렉터리/files/config/db.config.php를 열어 아래 내용을 추가합니다.

$db_info->use_object_cache = 'wincache';

$db_info->use_template_cache = 'wincache';

추가 정보
IIS에서 wincache를 이용하여 XE를 구성하는 자세한 방법은 http://www.xpressengine.com/blog/20828234를 참고하세요.
태그 연관 글
  1. [2016/08/19] 묻고답하기 xe폴더중에 cache파일을 삭제해도 문제가 없나요? by 제로보드처음써요 *2
  2. [2015/03/05] 묻고답하기 cache/lang이하에 파일이 생성될때 접속오류 by poltwo
  3. [2014/11/18] Learn XECon 2014 - 초보자를 위한 웹서비스 Cache by XE *2
  4. [2014/09/04] 묻고답하기 최신 php 버전에서 memcache 안되는 문제 해결 방법 by 가을풍경
  5. [2014/06/25] 묻고답하기 비대해지는 용량문제 /xe/files/cache/ by duding *1
제목 최종 글 날짜
공지 XE1 신규 보안 취약점 신고 포상제 종료 안내   2019.10.23
공지 [중요!] Object 클래스의 이름 변경 안내(PHP 7.2 버전 호환성) [7] 2020.08.16 by 천재 2017.11.27
캐시 설정 가이드 - XE 1.5 버전 이후 [5] file 2014.09.24 by 듀애즈 2012.06.01
XE 1.5 업데이트 가이드 [11] file 2014.09.21 by geoever 2012.05.09
2014년 4월 공개강좌 안내 - XE 구조와 오픈소스 프로젝트 참여 경험 공유 [7] 2014.04.20 by 밥로스 2014.03.31
애드온 강좌 발표 자료 공유 [2] 2014.03.24 by 마이웹 2014.03.22
2014년 3월 애드온 개발 공개 강좌 후기 (2차) file   2014.03.22
2014년 3월 애드온 개발 공개 강좌 후기 (1차) [3] file 2014.03.20 by eXtriar 2014.03.17
2014년 2월 XE 개발자 세미나 후기 [1] file 2014.03.17 by deepbl39 2014.03.17
XE 1.7.4.1 배포 (보안패치)   2014.03.13
XE Hub <Open office day> - 2014년 3월 공개 강좌 2차 (15일 강좌와 동일)   2014.03.11
XE Hub <Open office day> - 2014년 3월 공개 강좌 1차 [8] 2014.03.11 by 철쓰 2014.02.24
[완료] [서버 점검] 2월 21일 임시 점검 안내   2014.02.21
2014년 2월 세미나 개최 안내 [4] 2014.02.12 by xeqnz 2014.02.10
XE 1.7.4 배포   2014.02.04
제 1회 XE HUB 오픈오피스데이.. 그 후.. [9] file 2014.01.23 by 착한악마 2014.01.20
XE 1.7.3.8 배포(보안패치)   2014.01.14
[중요-재공지] CDN 서비스 종료 안내 [2] 2014.02.05 by KrteamENT 2014.01.14
1.7.4-beta.6 배포 [1] file 2014.01.12 by 퍼니엑스이 2014.01.10
XE 1.7.3.7 배포(보안패치)   2014.01.06
게시판 운영정책 변경 [25] 2023.01.06 by juanita 2014.01.03
1.7.4-beta.5 배포 [5] file 2014.01.06 by 박인영647 2013.12.18