Skip to content Skip to sidebar Skip to footer

Apacheからnginxに乗り換えしてみた。

ちょいと案件で、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のキャッシュを行えば、結構なアクセスにも耐えれるはず。。

その辺はまた時間が出来たときにやってみようと思います。