エンタープライズ用途での利用が増えている「WordPress」の高速化チューニングテクニックを解説する本連載。今回は、「1000倍高速化」を目指すチューニングテクニックの第四弾「WebサーバをNginxに切り替えて高速化する」方法を紹介します。
前回は、PHP互換の実行環境である「HHVM(HipHop Virtual Machine)」を導入して、チューニングをしない初期状態から「約16.9倍」までWordPressを高速化できました。
今回は、WebサーバをApacheから高速・軽量で定評のあるWebサーバである「Nginx」に切り替えて高速化するチューニングテクニックを解説します。
まず、本テクニックはこれまで解説してきたチューニングの続きとなるので、この記事からご覧の方は、連載バックナンバーから、「約16.9倍」まで高速化チューニングを済ませておいてください。
チューニング内容 | ページのロード時間 (デフォルト環境比) |
1秒当たりの同時アクセス数 「Requests per second」(デフォルト環境比) |
---|---|---|
デフォルト環境 | 176ms | 11.24 |
APCの導入 →チューニング方法をおさらい |
70ms(約251%) | 29.20 |
OPcache+APCuを導入 →チューニング方法をおさらい |
66ms(約266%) | 30.51 |
MariaDBの設定を調整 →チューニング方法をおさらい |
64ms(約275%) | 31.82 |
翻訳アクセラレータを導入(キャッシュ) →チューニング方法をおさらい |
53ms(約332%) | 39.29 |
翻訳アクセラレータを導入(翻訳を停止) →チューニング方法をおさらい |
36ms(約488%) | 56.78 |
gzip圧縮を用いる →チューニング方法をおさらい |
35ms(約502%) | ─ |
Tunedの調整 →チューニング方法をおさらい |
34ms(約517%) | 58.47 |
event MPM+php-fpm構成に変更 →チューニング方法をおさらい |
33ms(約537%) | 60.79 |
PHP 5.6+OPCache+APCuを導入 →チューニング方法をおさらい |
32ms(約550%) | 61.84(約550.2%) |
PHP 7+OPCache+APCuを導入 →チューニング方法をおさらい |
18ms(約977.7%) | 148.08(約1250.6%) |
HHVMを導入 →チューニング方法をおさらい |
16ms(約1100%) | 195.05(約1690.8%) |
「Nginx」はロシアで開発された、高速・軽量で定評のあるWebサーバです。近年、大規模サイトを中心に世界中で導入が進んでいます。Nginxはリバースプロキシやロードバランサとして用いることも可能で、リバースプロキシキャッシュやFastCGIキャッシュなどキャッシュ機能が強力なことも特徴です。ここでは、Apacheの代わりに導入します。
まず、Nginxのリポジトリを導入します。以下の内容を「/etc/yum.repos.d/nginx.repo」として保存してください。ここでは最新バージョンをインストールするため、リポジトリはメインラインを指定しています。
[nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1
Nginxをインストールして、バージョンを確認します。
[root@ip ~]# yum install nginx -y
2016年4月時点のNginxの最新バージョンは1.9.13です。次のコマンドでNginxのバージョンを確認します。
[root@ip ~]# nginx -V nginx version: nginx/1.9.13 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled (略)
WebサーバをApacheからNginxに切り替えます。
[root@ip ~]# systemctl disable httpd [root@ip ~]# systemctl stop httpd [root@ip ~]# systemctl enable nginx [root@ip ~]# systemctl start nginx
ブラウザでトップページをリロードしてください。Nginxのウエルカムスクリーンが表示されたら正しく動作しています。
続いて、WordPressを動作させられるように設定を行っていきます。設定ファイル「/etc/nginx/nginx.conf」を以下のように修正します。
(略) http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 3; gzip on; server_names_hash_bucket_size 128; include /etc/nginx/conf.d/*.conf; }
ここでは、11行目で「キープアライブの秒数の調整」、12行目で「gizp圧縮の有効化」を行い、バーチャルホストで設定するホスト名が長い場合でも問題がないように、13行目で「server_names_hash_bucket_size」の値を大きめに確保してあります。
Copyright © ITmedia, Inc. All Rights Reserved.