2010/08/27

eAccelerator 설치

http://nuevacancion.blog.me/120113737954에서 퍼온 글입니다.


-------------------------------------------------------------------------------------

자, 간만에 '무지몽매 막 초보 리눅서' 펭귄의 팁 하나를 더 공개해 드립니다.
오늘 알려드릴 내용은 eAccelerator라는 프로그램의 설치 방법입니다.

eAccelerator는 커피닉스 등에서 소개 및 설치법을 확인하실 수 있습니다만
최신 버전인 0.9.6.1의 경우 커피닉스에서 소개한 설치법대로 하면 문제가 생깁니다.
이에, 펭귄이 최신 버전을 CentOS 4.x 대에서 설치하는 방법을 소개합니다.



주의 : eAccelerator 최신 버전인 0.9.6.1은 PHP 5가 설치된 서버에서만 설치가 됩니다.

PHP 4 서버에 설치할 경우에는 0.9.5.2 버전으로 설치하셔야 설치가 가능합니다.

1. 소스 다운받기

/usr/local/src 디렉터리에서 다음과 같이 다운받습니다.
소스포지에서 PC로 다운받은 후 FTP로 올리는 방법도 있습니다만, 저는 wget으로 해결했습니다.

[root@klsi src]# wget http://downloads.sourceforge.net/project/eaccelerator/eaccelerator/eAccelerator%200.9.6.1/eaccelerator-0.9.6.1.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Feaccelerator%2Ffiles%2F&ts=1282427847&mirror=cdnetworks-kr-2
[1] 23962
[2] 23963
[root@klsi src]# --23:35:44-- http://downloads.sourceforge.net/project/eaccelerator/eaccelerator/eAccelerator%200.9.6.1/eaccelerator-0.9.6.1.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Feaccelerator%2Ffiles%2F
=> `eaccelerator-0.9.6.1.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Feaccelerator%2Ffiles%2F'
Resolving downloads.sourceforge.net... 완료.
Connecting to downloads.sourceforge.net[216.34.181.59]:80... connected.
HTTP 요청을 보냅니다, 서버로부터의 응답을 기다림...302 Found
장소: http://cdnetworks-kr-1.dl.sourceforge.net/project/eaccelerator/eaccelerator/eAccelerator%200.9.6.1/eaccelerator-0.9.6.1.tar.bz2 [following]
--23:35:44-- http://cdnetworks-kr-1.dl.sourceforge.net/project/eaccelerator/eaccelerator/eAccelerator%200.9.6.1/eaccelerator-0.9.6.1.tar.bz2
=> `eaccelerator-0.9.6.1.tar.bz2'
Resolving cdnetworks-kr-1.dl.sourceforge.net... 완료.
Connecting to cdnetworks-kr-1.dl.sourceforge.net[211.39.135.162]:80... connected.
HTTP 요청을 보냅니다, 서버로부터의 응답을 기다림...200 OK
길이: 106,049 [application/x-bzip2]

100%[=================================================================================================================>] 106,049 393.78K/s ETA 00:00

23:35:45 (393.78 KB/s) - `eaccelerator-0.9.6.1.tar.bz2'가 보존되었습니다 [106049/106049]


[1]- Done wget http://downloads.sourceforge.net/project/eaccelerator/eaccelerator/eAccelerator%200.9.6.1/eaccelerator-0.9.6.1.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Feaccelerator%2Ffiles%2F
[2]+ Done ts=1282427847

2. 압축 풀기

커피닉스에서의 설치법과는 달리, eAccelerator 최신 버전은 확장자가 tar.bz2로 되어 있습니다.
다음과 같이 압축을 풉니다.

[root@klsi src]# bunzip2 eaccelerator-0.9.6.1.tar.bz2
[root@klsi src]# tar xvfp eaccelerator-0.9.6.1.tar
eaccelerator-0.9.6.1/
eaccelerator-0.9.6.1/COPYING
eaccelerator-0.9.6.1/mm.h
eaccelerator-0.9.6.1/control.php
eaccelerator-0.9.6.1/AUTHORS
eaccelerator-0.9.6.1/doc/
eaccelerator-0.9.6.1/doc/php/
eaccelerator-0.9.6.1/doc/php/dasm.php
eaccelerator-0.9.6.1/doc/php/info.php
eaccelerator-0.9.6.1/doc/phpdoc.ini
eaccelerator-0.9.6.1/eaccelerator.c
eaccelerator-0.9.6.1/config.w32
eaccelerator-0.9.6.1/opcodes.c
eaccelerator-0.9.6.1/dasm.php
eaccelerator-0.9.6.1/eaccelerator.h
eaccelerator-0.9.6.1/ea_dasm.c
eaccelerator-0.9.6.1/NEWS
eaccelerator-0.9.6.1/mm.c
eaccelerator-0.9.6.1/ea_store.c
eaccelerator-0.9.6.1/eaccelerator.ini
eaccelerator-0.9.6.1/config.m4
eaccelerator-0.9.6.1/ea_restore.c
eaccelerator-0.9.6.1/debug.h
eaccelerator-0.9.6.1/bugreport.php
eaccelerator-0.9.6.1/ea_dasm.h
eaccelerator-0.9.6.1/README.win32
eaccelerator-0.9.6.1/opcodes.h
eaccelerator-0.9.6.1/ea_store.h
eaccelerator-0.9.6.1/ChangeLog
eaccelerator-0.9.6.1/fnmatch.h
eaccelerator-0.9.6.1/eaccelerator_version.h
eaccelerator-0.9.6.1/fnmatch.c
eaccelerator-0.9.6.1/Makefile.in
eaccelerator-0.9.6.1/ea_info.h
eaccelerator-0.9.6.1/.gitignore
eaccelerator-0.9.6.1/optimize.c
eaccelerator-0.9.6.1/debug.c
eaccelerator-0.9.6.1/PHP_Highlight.php
eaccelerator-0.9.6.1/ea_info.c
eaccelerator-0.9.6.1/win32/
eaccelerator-0.9.6.1/win32/eAccelerator.sln
eaccelerator-0.9.6.1/win32/eAccelerator.dsp
eaccelerator-0.9.6.1/win32/eAccelerator.vcproj
eaccelerator-0.9.6.1/win32/eAccelerator.dsw
eaccelerator-0.9.6.1/README
eaccelerator-0.9.6.1/ea_restore.h

3. 소스 컴파일 및 설치

[root@klsi src]# cd eaccelerator-0.9.6.1
[root@klsi src]# export PHP_PREFIX="/usr/local" --> PHP가 설치된 디렉터리를 지정합니다.
[root@klsi eaccelerator-0.9.6.1]# $PHP_PREFIX/bin/phpize
Configuring for:
PHP Api Version: 20020918
Zend Module Api No: 20020429
Zend Extension Api No: 20050606

[root@klsi eaccelerator-0.9.6.1]# ./configure --prefix=/usr/local/eaccelerator --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config

[root@klsi eaccelerator-0.9.6.1]# make
[root@klsi eaccelerator-0.9.6.1]# make install
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/
(이 경로를 꼭 기억해 놓아야 합니다. 나중에 환경설정할 때 이 디렉터리가 필요합니다.)

여기까지 에러 없이 진행했다면 설치가 완료된 것입니다.

4. eAccelerator 설정

eAccelerator는 파일을 캐싱하기 때문에 파일을 캐싱해 놓을 디렉터리를 지정해야 합니다.
아파치를 nobody 권한으로 실행하며 캐싱 디렉터리를 /tmp/eaccelerator로 지정할 경우 다음과 같이 캐싱 디렉터리 생성 및 권한 설정을 해 줍니다.

[root@klsi eaccelerator-0.9.6.1]# cd /tmp
[root@klsi tmp]# mkdir eaccelerator
[root@klsi tmp]# chown nobody eaccelerator
[root@klsi tmp]# chmod 0700 eaccelerator

캐싱 디렉터리 생성 및 권한 설정이 완료되었다면, 이제는 php.ini 파일을 편집해야 합니다.
php.ini 파일을 열고 [PHP] 색션 맨 하단에 다음을 추가합니다.

zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so" --> 아까 make install 한 후 나온 디렉터리 경로에 eaccelerator.so 파일이 들어가므로 디렉터리 경로와 파일 이름까지 써 줍니다.
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

각 옵션의 뜻은 다음과 같습니다.

- eaccelerator.shm_size = eAccelerator가 사용할 공유 메모리량. 단위는 MBytes. 0을 지정하면 OS 기본값. default = 0. 실제로 테스트한 결과 메모리 사이즈가 32MB까지는 작동을 하나, 그 이상의 값을 지정하면 아파치가 구동되지 않습니다.
- eaccelerator.cache_dir = 캐싱 디렉토리를 지정. precompiled code, session data, content 등이 저장됩니다.
- eaccelerator.enable = eAccelerator 사용 여부. 당연히 1로 설정합니다.
- eaccelerator.optimizer = 최적화 여부. 1= enable, 0 = disable
- eaccelerator.check_mtime= php 파일 변경시간을 체크하여 반영할 것인지 여부
- eaccelerator.debug = debug 로깅 여부
- eaccelerator.filter = 캐싱할 php 파일을 지정합니다. *.php *.html *.php3 처럼 지정할 수 있으며 "" 로 비워두면 모든 php 파일이 캐싱됩니다.
- eaccelerator.shm_max = eaccelerator_put() 함수를 사용할 때 최대 할당할 수 있는 공유 메모리 크기를 bytes단위로 표시합니다. (예. 10240, 10K, 1M). 0은 제한 없음. eaccelerator_put() 함수는 공유메모리에 특정 데이터를 지정한 시간 동안 넣어두는 eAccelerator 자체 함수입니다.
- eaccelerator.shm_ttl = 새 스크립트 파일을 캐싱할만한 공유 메모리가 없다면, ssh_ttl 초동안 액세스가 없는 모든 스크립트를 삭제합니다. default = 0. 0은 삭제하지 않음을 뜻합니다.
- eaccelerator.shm_prune_period= 이 설정은 위의 shm_ttl 설정과 비슷합니다. 지정한 초보다 오래 전에 만들어진 스크립트를 제거합니다. 즉, shm_ttl은 액세스 시간에, shm_prune_period는 생성 시간에 따라 삭제합니다. default = 0. 0은 삭제하지 않음을 뜻합니다.
- eaccelerator.shm_only = 컴파일된 스크립트를 디스크에 캐싱할 것인지 여부를 지정하는 옵션. session data와 content 캐싱은 이설정과 무관. default = 0. 0이면 캐싱을 위해 디스크와 메모리를 모두 사용합니다.
- eaccelerator.compress = 캐시된 내용 압축 여부
- eaccelerator.compress_level= 압축 레벨 지정. 9는 최대 압축 레벨

여기까지 다 설정하였으면 아파치 데몬을 재구동합니다.
재구동한 후 phpinfo 함수로 확인하면 다음을 확인할 수 있습니다.

eAcceleratoreAccelerator support enabled
Version 0.9.6.1
Caching Enabled true
Optimizer Enabled true
Check mtime Enabled true
Memory Size 33,554,392 Bytes
Memory Available 33,551,792 Bytes
Memory Allocated 2,600 Bytes
Cached Scripts 1
Removed Scripts 0


이 항목이 나왔다면 정상적으로 설치가 완료된 것입니다.

5. 컨트롤 패널

eAccelerator 소스 디렉터리에 보면 control.php 파일이 있습니다.
이 파일을 열어 다음 설정을 수정합니다.

/*** CONFIG ***/
$auth = true; // Set to false to disable authentication
$user = "admin";
$pw = "eAccelerator";

이 부분에서 auth는 true 기본값으로 유지하고
user와 pw 부분을 지정합니다.

수정한 후 이 파일을 웹에 접근 가능한 적당한 곳에 복사하고 브라우저 주소 창에 붙여 넣어 실행합니다.
실행하면 Auth 인증을 요구하는데, 아까 control.php 파일에 넣어 놓은 user와 pw를 입력하면 control panel로 로그인됩니다.

아래와 같은 화면이 나와야 합니다.
여기에서 최적화 여부, 캐시 사용, 캐시 비우기 등의 여부를 조절할 수 있습니다.

eAccelerator control panel
StatusScript Cache
Usage statistics
Caching enabled yes
Optimizer enabled yes
Check mtime enabled yes
Total memory 32.00 mb
Memory in use 609.77 kb (2%)


Free memory 31.40 mb
Cached scripts 38
Removed scripts 0

Build information
eAccelerator version 0.9.6.1
Shared memory type sysvipc
Semaphore type spinlock




Maintenance
Removed all scripts and data from shared memory and / or disk.
Removed all expired scripts and data from shared memory and / or disk.
Delete all 'removed' scripts from shared memory.




Created by the eAccelerator team – http://eaccelerator.net

eAccelerator 0.9.6.1 [shm:sysvipc sem:spinlock]
PHP 5.2.12 [ZE 2.2.0]
Using apache2handler on Linux klsi 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003 i686

-----------------------

여러분이 운영하시는 웹서버의 성능 향상에 도움이 되기를 바랍니다.
감사합니다.
[출처] eAccelerator 설치|작성자 펭귄

댓글 없음: