ちょいと案件で、WordPressのサーバ引越案件があり、パフォーマンスを上げることも要件に入っていたので、Nginx+PHP+MariaDB環境(LEMP)を構築したので、ついでに自分の環境も載せ替えてみた。
その備忘録。今回はDBはそのまま、MySQLで載せ替えしない。
まずは、Nginxとphp-fpmを入れる。
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
まずは、nginxのリポジトリの追加。
上記はCentOS6系。それ以外の方は、こちらを参照して、自分の環境に合ったレポジトリを追加してね。
で、nginxとphp-fpmをyumで追加。
yum install nginx yum install php-fpm --enablerepo=remi-php55
今回、php-fpmはremi-php55のものを使用しました。
あとは、コンフィグをちょいちょいと。
まずは、php-fpmの設定は下記。
vi /etc/php-fpm.d/www.conf
[www] ;listen = 127.0.0.1:9000 listen = /var/run/php-fpm.sock listen.owner = apache listen.group = apache listen.mode = 0666 user = nginx group = nginx pm = static pm.max_children = 5 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 php_admin_value[error_log] = /var/log/php-fpm/www-error.log php_admin_flag[log_errors] = on ;php_admin_value[memory_limit] = 128M php_admin_value[upload_max_filesize] = 16M php_admin_value[post_max_size] = 16M ; Set session path to a directory owned by process user php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session
でもって、nginxの設定はこちら。とりあえず、default.confに突っ込んだ。
vi /etc/nginx/conf.d/default.conf
upstream wada.tk.backend { ip_hash; server 127.0.0.1:8081; } upstream wada.tk.admin { ip_hash; server 127.0.0.1:8081; } server { listen 80; server_name wada.tk; root /path/to/documentroot; location /wp-admin { proxy_pass http://wada.tk.admin; } location /wp-includes { proxy_pass http://wada.tk.backend; } location /feed { proxy_pass http://wada.tk.backend; } location /wp-login.php { proxy_pass http://wada.tk.admin; } location ~ .*.php { proxy_pass http://wada.tk.admin; } location ~ .*.sql { deny all; } location ~ /.ht { deny all; } location ~ .*.(txt|xml|html?|js|css|gz|ico|jpe?g|gif|png|wmv|flv|swf|mpg) { index index.html index.htm; if (-f $request_filename) { access_log off; ssi on; expires 30d; break; } proxy_pass http://wada.tk.backend; } location / { index index.php index.html index.htm; if ($http_cookie ~* "comment_author_[^=]*=([^%]+)%7C|wordpress_logged_in_[^=]*=([^%]+)%7C") { proxy_pass http://wada.tk.admin; break; } set $mobile ""; if ($http_user_agent ~* '(DoCoMo|J-PHONE|Vodafone|MOT-|UP.Browser|DDIPOCKET|ASTEL|PDXGW|Palmscape|Xiino|sharp pda browser|Windows CE|L-mode|WILLCOM|SoftBank|Semulator|Vemulator|J-EMULATOR|emobile|mixi-mobile-converter)') { set $mobile "@ktai"; } if ($http_user_agent ~* '(iPhone|iPod|Opera Mini|Android.*Mobile|NetFront|PSP|BlackBerry)') { set $mobile "@mobile"; } if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) { set $do_not_cache 1; } proxy_no_cache $do_not_cache; proxy_cache_bypass $do_not_cache; proxy_cache czone; proxy_cache_key "$scheme://$host$request_uri$is_args$args$mobile"; proxy_cache_valid 200 10m; proxy_cache_valid 404 5m; proxy_pass http://wada.tk.backend; access_log /var/log/nginx/$host.access.log main; } } server { listen 8081; server_name 127.0.0.1; root /path/to/documentroot; access_log /var/log/nginx/$host.backend.access.log backend; location ~ /.ht { deny all; } location / { index index.php index.html index.htm; if (-f $request_filename) { expires 30d; break; } if (!-e $request_filename) { rewrite ^(.+)$ /index.php?q=$1 last; } } location ~ .php$ { fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /path/to/documentroot/$fastcgi_script_name; include fastcgi_params; fastcgi_pass_header "X-Accel-Redirect"; fastcgi_pass_header "X-Accel-Expires"; } }
現状1サーバですが、のちのち増やしやすいように、streamを設定。
あとは、リバースプロキシの設定もやっているので、wordpressの応答速度向上にも向いてるのでは無いかと。
あと、やるとすれば、php-fpmのキャッシュを行えば、結構なアクセスにも耐えれるはず。。
その辺はまた時間が出来たときにやってみようと思います。