Shoveling.. 2013/08/04 18:07
셋방살이 중인 서버의 대 격변(?) 에 발 맞춰서
기존의 Apache + mod_php 와 낮은 버전의 MySQL 로 인하여 이래저레 못해왔던 것들을 던져 버리고
신흥 문물(?) 들을 받아들여 보고자 하였는데.
설치 환경은 아래와 같다.
- CentOS 6.x ( x86_64 )
- MySQL 5.5.x
- PHP 5.3.x
- APC
- PHP-FPM
- Nginx 1.4.x
- Memcached 1.4.x
오랜 숙원 사업이였던 탈 i686 의 꿈을 이루고 이것저것 삽질을 시작 하였는데.
여기서 설치와 관련된 내용은 모두 Yum 을 이용하여 설치를 하였다.
다음 Yum repository 를 추가 해주면 간단히 해결 됨.
- EPEL
- remi
- http://www.rackspace.com/knowledge_center/article/installing-rhel-epel-repo-on-centos-5x-or-6x
이때 각 Yum Repository 마다 동일한 패키지 명의 중복으로 피곤해지는 일들이 발생 된다면
yum-plugin-priorities 을 설치하시면 Repo 별로 우선순위를 지정해서 처리가 가능하니 깔끔하게 해결!
이렇게 모든 패키지가 설치가 완료가 된다면.
PHP-FPM + Nginx 가 원활하게 구동 할 수 있도록 설정을 해줘야 하는데.
/etc/nginx/nginx.conf
location ~ \.php$
{
fastcgi_send_timeout 5m;
fastcgi_read_timeout 5m;
fastcgi_connect_timeout 5m;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
{
fastcgi_send_timeout 5m;
fastcgi_read_timeout 5m;
fastcgi_connect_timeout 5m;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
여기에 Textcube 를 위한 URL redirection 을 추가 한다.
( c.f /documents/setup_nginx.txt 을 참조하시길 바란다 )
location /tc/ {
set $rewrite_base '/tc';
if (!-f $request_filename) {
rewrite ^(thumbnail)/([0-9]+/.+)$ cache/$1/$2;
}
if ($request_filename ~* ^(cache)+/+(.+[^/])\.(cache|xml|txt|log)$) {
return 403;
}
if (-d $request_filename) {
rewrite ^(.+[^/])$ $1/;
}
rewrite ^(.*)$ $rewrite_base/rewrite.php last;
}
set $rewrite_base '/tc';
if (!-f $request_filename) {
rewrite ^(thumbnail)/([0-9]+/.+)$ cache/$1/$2;
}
if ($request_filename ~* ^(cache)+/+(.+[^/])\.(cache|xml|txt|log)$) {
return 403;
}
if (-d $request_filename) {
rewrite ^(.+[^/])$ $1/;
}
rewrite ^(.*)$ $rewrite_base/rewrite.php last;
}
/etc/php-fpm.d/www.conf
[www]
listen = 127.0.0.1:9000
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
user = nginx
group = nginx
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
request_terminate_timeout = 120s
request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/www-slow.log
security.limit_extensions = .php .php3 .php4 .php5 .html
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
listen = 127.0.0.1:9000
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
user = nginx
group = nginx
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
request_terminate_timeout = 120s
request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/www-slow.log
security.limit_extensions = .php .php3 .php4 .php5 .html
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
/etc/php.d/memcache.ini
extension=memcache.so
memcache.default_port=11211
memcache.hash_function=crc32
memcache.hash_strategy=consistent
memcache.protocol=ascii
session.save_handler=memcache
session.save_path="tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
memcache.default_port=11211
memcache.hash_function=crc32
memcache.hash_strategy=consistent
memcache.protocol=ascii
session.save_handler=memcache
session.save_path="tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
일단은 여기까지 설정을 마치고 PHP 가 정상적으로 구동되는지 확인을 한다.
정상적으로 동작을 한다면
Textcube 안정버전인 1.8.6 을 다운로드 받아서 설치를 하게 되는데
MySQL 5.5+ 에서의 호환 성을 위해 설치 전 미리 몇 가지 손을 좀 봐야 할 필요가 있다.
setup.php 의 1132 line. 의 TALBE 생성 시 'TYPE' 을 'ENGINE' 으로 바꿔 줘야 한다.
- $charset = 'TYPE=MyISAM DEFAULT CHARSET=utf8';
+ $charset = 'ENGINE=InnoDB DEFAULT CHARSET=utf8';
+ $charset = 'ENGINE=InnoDB DEFAULT CHARSET=utf8';
그리고 Textcube 를 설치를 진행 한다.
이때 Rewrite 관련 설정에 에러가 나는데 옵션을 끄고 진행 하더라도 무방하다.
여기까지는 Textcube 에서 제공하는 setup_nginx.txt 를 참조 하시면 좀 더 친절하게 안내 받을 수 있다.
여기서 한가지 고비가 오는데
Textcube 1.8.6 에서 PHP-APC 가 활성화 된 환경에서 Login 이 불가능하고 502 Error 를 뱉고
진행이 불가한 상황이 벌어지는데
PHP::Session class 와 session_write_close() 사이에 어떤 문제가 APC 모듈과 비 정상적인 동작을
일으켜서 생기는 문제라고 하는데
이때 PHP-APC 를 삭제 하거나 disable 하시면 되지만
왠지 아깝지 않은가? Textcube 때문에 APC 를 쓸 수가 없다니!!!!
이럴때 Texcube 가 설치된 디렉토리 아래의
./library/preprocessor.php 의 152번 째 줄 즈음에 다음 코드를 추가 한다.
+ register_shutdown_function("session_write_close");
이후엔 정상적으로 로그인이 가능해질 것이다.
Textcube 에 로그인 후 Memcache 를 활성화 시키기 위해서
"텍스트 큐브 관리" 메뉴로 이동한 뒤 "서비스 관리 > 서버" 메뉴에 진입을 한 뒤
"Memcached 사용" 메뉴에 Checkbox 에 Check 한 뒤 저장을 하게 된다면
보다 빠릿빠릿한 블로그를 이용 할 수 있게 된다.
이 글에는 트랙백을 보낼 수 없습니다
0