Nginx + WordPress

記事タイトルとURLをコピーする

こんにちは。CSチームの坂本です。 今回はロシア産の軽量サーバー、NginxをWordPressのWebサーバーとして導入したいと思います。 NginxはApache、IISに次いで現在3番目に利用されているWebサーバーで、ここ最近急激にシェアを伸ばしています。 NginxがApacheに比べ最も優れているといわれる点はスピードですが、Apacheより設定が簡単なことも人気の理由のようです。 WordPress.comでも導入されており、WordPressの運用に適したサーバーであるといえそうです。

今回のEC2環境

Zoneap-southeast-1b
AMIamzn-ami-pv-2012.03.2.x86_64-ebs
Typet1.micro

目次

  1. インストール
  2. Nginxの設定
  3. NginxとPHP-FPMの起動
  4. 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を動かすための最低限の設定をおこないます。 基本の設定ファイル

  1. /etc/nginx/nginx.conf
  2. /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を利用して更に高速化する方法を考えたいと思います。