こんにちは。CSチームの坂本です。 今回はロシア産の軽量サーバー、NginxをWordPressのWebサーバーとして導入したいと思います。 NginxはApache、IISに次いで現在3番目に利用されているWebサーバーで、ここ最近急激にシェアを伸ばしています。 NginxがApacheに比べ最も優れているといわれる点はスピードですが、Apacheより設定が簡単なことも人気の理由のようです。 WordPress.comでも導入されており、WordPressの運用に適したサーバーであるといえそうです。
今回のEC2環境
Zone | ap-southeast-1b |
AMI | amzn-ami-pv-2012.03.2.x86_64-ebs |
Type | t1.micro |
目次
- インストール
- Nginxの設定
- NginxとPHP-FPMの起動
- Apacheと比較
1. インストール
まず、NginxでWordPressを動かすために最低限必要な「Nginx、MySQL、PHP、PHP-FPM」をインストールします。
sudo yum install nginx sudo yum install mysql-server sudo yum install php php-fpm php-mbstring php-mysql
※MySQL、PHP、PHP-FPMの設定は適宜おこなってください。
2. Nginxの設定
Nginxのデフォルトの設定ファイルを変更し、PHPを動かすための最低限の設定をおこないます。 基本の設定ファイル
- /etc/nginx/nginx.conf
- /etc/nginx/conf.d/default.conf
以下がWebサーバーの場合のNginxの設定ファイルの基本構造となっています。 Webサーバーの設定ファイルの基本構造
# 省略 http { # httpブロック、Webサーバーの場合はhttpとなる server { # serverブロック、仮想サーバーの設定 location / { # locationブロック、URLのパスにマッチした時の設定 } } }
実際の設定ファイルを簡単に確認します。 /etc/nginx/nginx.conf
# 省略 http { # 省略 include /etc/nginx/conf.d/*.conf; }
nginx.confで設定されているhttpブロックで/etc/nginx/conf.d以下の.confファイルを読み込む設定となっています。httpブロックで設定された内容はそのブロック内で設定されているserverブロック、locationブロックに適用されますので、共通する設定はこちらで設定します。 今回はnginx.confは変更せず、default.conf内のserverブロック、locationブロックを変更して最低限PHPが動く設定にします。 /etc/nginx/conf.d/default.conf
server { listen 80; # 仮想サーバーのポート番号 server_name _; # 仮想サーバーの名前 location / { root /usr/share/nginx/html; # ドキュメントルート index index.php index.html; # インデックスページとして使われるファイル名 } location ~ .php$ { # 末尾「.php」にマッチした時の設定 fastcgi_pass 127.0.0.1:9000; # FastCGIサーバーのアドレス:ポート番号 fastcgi_index index.php; # インデックスページとして使われるファイル名 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # PHP-FPMで処理するファイル名 include fastcgi_params; # 外部設定ファイル(/etc/nginx/fastcgi_params)の読み込み } }
3. NginxとPHP-FPMの起動
設定が終わったらNginxとPHP-FPMを起動し、WordPressをインストールしてください。sudo /etc/init.d/nginx start sudo /etc/init.d/php-fpm start
4. Apacheと比較
上記のEC2環境と同じ条件の環境でApache + Wordpressを構築し、Chromeの「Developer Tools」を使って同じ環境からアクセスし、簡単にWebページの読み込みにかかった時間を比較しました。 ※Apacheは始めからAmazon Linux AMIにインストールされているものをデフォルトの設定で利用しています。MySQL、PHPは同じものをインストールしています。Apacheもチューニングをおこなうことで速くなると思いますが、今回はデフォルトの設定での比較になります。 「Developer Tools」はChromeの右上のスパナのアイコン - [ツール] - [デベロッパーツール]で起動します。 Networkタブを開いてからアクセスします。
Apache
Nginx
Apacheは1.66秒掛かっているのに対し、Nginxは0.825秒でした。 何回か計測した結果でApacheでは約1.5秒掛かるのに対し、Nginxは1秒を上回ることはなくスピードを実感できました。
今回はNginxの導入をおこないました。次回以降はその他の設定の変更をおこない、Nginxを利用して更に高速化する方法を考えたいと思います。