과거에 PHP에서 APC가 기본으로 포함될 것이라 했는데 무슨 이유인지 PHP5.5가 발표된후 ZendOptimizerPlus 캐쉬가 APC를 대체하게 되었습니다. 하지만 PHP 5.3을 사용한다면 APC만 한 것이 없기 때문에 설치법을 알아봅니다.
APC 설치
PHP가 설치된 환경에서 APC를 설치하는 방법은 두가지로 나뉜다.
우분투 패키지를 이용한 설치
우분투 12.04에서는 php-apc 3.1.7-1 버전을 지원한다.
sudo apt-get install php-apc
sudo service apache2 restart
설치확인
자신의 웹사이트에 phpinfo()를 작성해 APC 관련 정보를 확인한다.
sudo vi /var/www/phpinfo.php
<?php phpinfo(); ?>
APC 관리
우분투에서 apt-get으로 apc를 설치했다면 /usr/share/doc/php-apc 디렉토리에 apc.php.gz 파일이 존재한다. 이 파일안에는 apc.php 파일이 존재하는데 이 파일을 복사해 운영하는 웹사이트에 저장해두고 웹브라우저로 접근하면 그래프를 이용한 캐쉬관련 정보들을 얻을 수 있다(경우에 따라 /usr/share/php/apc.php에 위치할 수도 있다).
원하는 사이트의 위치에 복사한다.
sudo cp /usr/share/doc/php-apc/apc.php.gz /var/www
압축을 해제
sudo gzip -d /var/www/apc.php.gz
아파치 재시작
sudo service apache2 restart
웹브라우저로 접속
http://IP주소/apc.php
APC 보안
apc.php는 각종 서버정보가 기록되어 있으니 이를 .htpasswd로 보안관리한다. 이는 아파치서버단에서 할 수 있는 보안일뿐 php를 사용한다면 웹페이지를 이용해 세션을 사용한 인증을 많이 사용한다.
우선 apc.php 파일을 /var/www/apc 와 같이 제어가능한 디렉토리를 생성하여 .htaccess를 허용 한다.
sudo mkdir /var/www/apc
sudo cp /usr/share/doc/php-apc/apc.php.gz /var/www/apc
sudo gzip -d /var/www/apc/apc.php.gz
apc는 내부로그인이 존재하는데 이를 비활성화 시킨다.
sudo vi /var/www/apc/apc.php
defaults('USE_AUTHENTICATION',1); // 1의 값을 0으로 변경한다
이미 내부로그인이 존재하지만 이미 서버정보를 뿌린후에 로그인을 하는 이상한 과정? 그래서 이를 비활성화한다.
.htaccess 파일의 생성 및 인증체계 구축
sudo vi /var/www/apc/.htaccess
# 인증창에 나타날 제목
AuthName "APC Authorization"
# 인증방법
AuthType Basic
# .htpasswd는 웹으로 접근 가능한 경로에 두지않음
AuthUserFile /home/unclepapa/.htpasswd
AuthGroupFile /dev/null
require valid-user
apc 디렉토리에서 .htaccess 사용 허가
sudo vi /etc/apache2/sites-available/default
<Directory /var/www/apc>
AllowOverride All
</Directory>
위의 구문을 추가하면 .htaccess 파일이 사용허가된다. 위의 /etc/apache2/sites-available/default는 아파치 기본사이트경로이고, 자신이 원하는 사이트의 경로에 위의 구문을 그곳에 추가하면 되는 것이다.
.htpasswd 파일 생성
최초 생성시는 -c 옵션을 사용, admin은 원하는 사용자ID입력
htpasswd -c /home/unclepapa/.htpasswd admin
( 명령어 최초생성 생성될 경로 사용자ID )
위의 명령을 입력한후 암호 입력
New password:
Re-type new password:
Adding password for user admin
.htpasswd에 사용자 추가시
htpasswd /home/unclepapa/.htpasswd 추가할사용자명
아파치 재시작
sudo service apache2 restart
접속확인
http://IP주소/apc/apc.php
APC 설정
apc 설정 옵션들을 보려면 http://php.net/manual/en/apc.configuration.php을 방문하면 된다.
우분투에서는 apc 설정파일이/etc/php5/conf.d/apc.ini 에 위치하므로 아래에 설명하는 값들을 원하는 값으로 설정하여 추가하면 된다.
apc.stat
기본값은 1로서, apc는 php 파일이 수정되면 이를 지켜보다가 reload 한다. 이 값을 0으로 설정하면, 성능면에서 향상되지만 php 파일을 수정하였더라도 반영되지 않고 기존의 캐쉬된 파일들을 실행시키므로 그때마다 아파치를 재시작해야 한다.
apc.shim_size
캐쉬된 결과를 저장하는 메모리의 사이즈를 설정한다. apc는 캐쉬된 메모리가 가득 찰 경우 사용된지 오래된 캐쉬들을 삭제하므로 이 횟수가 늘어날수록 성능은 떨어지게 된다.
Cache full count를 참고해서 적당한 수치가 되게끔 조절하는 것이 좋으며 기본값은 32M 이다.
apc.shm_size=128M
apc.max_file_size
apc가 캐쉬로 저장할 수 있는 하나의 파일의 최대크기로 기본값이 1M 이다.
apc.max_file_size=5M
apc.num_files_hint
apc가 저장할 수 있는 op-code 갯수로 기본값이 1000 이다.
apc.num_files_hint=4000
apc.user_entries_hint
apc가 정할 수 있는 데이터항목의 갯수로 기본값이 4096 이다.
apc.user_entries_hint=10000
apc.cache_by_default
VirtualHost 를 사용하여 여러개의 웹사이트를 운영하고 있다면 이 값이 문제가 될 수 있다. 기본값이 1로(On) 되어 있기 때문에 모든 웹사이트에 대해 적용되고 이는 엄청난 메모리 부하를 유발한다. 고로 필요로하는 웹사이트에서만 값을 1로 설정하도록 한다.
apc.cache_by_default=0
원하는 VirtualHost 에서만 APC 사용
1) 우선 아래의 값을 설정하여 apc가 캐쉬하지 않도록 설정한다.
sudo vi /etc/php5/conf.d/apc.ini
apc.cache_by_default=0
2) 캐시되기 원하는 VirtualHost 에 웹루트 폴더에 .htaccess 파일을 만들고 아래의 내용을 추가
php_flag apc.cache_by_default On
혹은 캐시되길 원하는 VirtualHost 의 아파치설정안에 아래와 같이 내용 추가
12<IfModule mod_php5.c>
php_flag apc.cache_by_default On
</IfModule>
반대의 경우로 기본으로 APC는 활성화인 상태에서 캐시되지 않길 바라는 virtualhost의 웹사이트에는 php_flag apc.cache_by_default Off
와 같이 내용을 수정한다.
APC 성능측정
ab -n 1000 -c 100 http://localhost/index.html
- -n (requests) : 성능을 검사하기 위해 보내는 요청수
- -c (concurrency) : 동시에 요청하는 요청수
- http:// 에 측정을 원하는 사이트주소
워드프레스 APC 설정값 참고할 만한 것
http://gregrickaby.com/the-perfect-apc-configuration/
'리눅스 > Ubuntu' 카테고리의 다른 글
[Ubuntu] 우분투 MySQL 설정 (6) | 2013.08.01 |
---|---|
[Ubuntu] 우분투 php.ini 설정 (4) | 2013.08.01 |
[Ubuntu] 우분투 Apache(아파치) SSL 적용 (3) | 2013.07.31 |
[Ubuntu] 우분투 Apache(아파치) 로그관리 - rotatelogs, cronlog (0) | 2013.07.31 |
[Ubuntu] 우분투 Apache(아파치) VirtualHost 예제 - 가상호스트 (0) | 2013.07.31 |