CentOS 5のWordPressでApache 2.2.3からnginx 1.6.2へ移行手順

シェアする

  • このエントリーをはてなブックマークに追加

当ブログはさくらインターネットのVPS(仮想専用サーバー)でCentOS 5を使っていますが、この度、Apache 2.2.3からnginx 1.6.2へ移行しました。
以下、nginx 1.6.2への移行手順です。

スポンサードリンク

version5.3系のPHPを削除してversion 5.4系のPHPをインストール

nginxをインストールするにあたり、事前にCentOS 5でインストールされているphpのバージョンを確認します。

phpはversion5.3.3でした。
このバージョンに合うphp-fpmが存在しないようなので、インストールされているversion5.3.3のphpとその関連ソフトを削除して、代わりにversion5.4系のphpとその関連ソフトをインストールすることにします。
まず、version5.3.3系のphpとその関連ソフトを削除します。

次に、version5.4系のphpとその関連ソフトをインストールします。
php54、php54-common、php54-cliのインストールは以下の通りです。

 

php54-gd、php54-mbstring、php54-mysql、php54-pdoのインストールは以下の通りです。

 

php54-fpmのインストールは以下の通りです。

 

スポンサードリンク

PHP、PHP-FPMの設定

phpのバージョンを確認します。

 

PHPのタイムゾーンを設定します。
/etc/php.iniを開いて、date.timezone = “Asia/Tokyo”と入力します。

次に、php-fpmの設定を行います。
/etc/php-fpm.d/www.confを開いて、user、group、pm.max_requestsを設定します。

php-fpmをサービスに登録してから起動します。

特にエラーがなければphp-fpmはサービスに登録されて起動しました。
php-fpmはポート9000で待ち受け状態になっています。
念のために起動していることを確認します。

php-fpmが起動していることを確認することができました。

 

2014.11.20追記
どうもnginxが不安定というか、アクセス状態によりタイムアウトしてアクセスが返ってこないことがあるようです。
以下のようなエラーがerror.logに出されます。

2014/11/15 23:24:00 [error] 18331#0: *2899 upstream timed out (110: Connection timed out) while reading response header from upstream, client: aaa.bbb.ccc.ddd, server: urashita.com, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "urashita.com"

そこで、/etc/php-fpm.dの設定で
pm.max_children = 300
pm.max_requests = 1000
として動作させています。

スポンサードリンク

nginxのインストールと設定

デフォルトのCentOSではnginxのリポジトリを参照しておりません。
そのため、yumでnginxをインストールするには、/etc/yum.repos.d/nginx.repoというファイルを事前に作成します。

その後、nginxをインストールします。

/etc/nginx/conf.d/wordpress.confというファイルを作成します。
ドメイン名をaaa.bbbとするとwordpress.confの中身は以下の通りです。

/var/log/nginx/aaa.bbbというフォルダをあらかじめ作成して権限を設定します。

2014.11.20追記
/var/log/nginx/aaa.bbb以下にログを作成するようにすると、デフォルトではログのローテーションが行われなくなります。
ログのローテーションの設定は、/etc/logrotate.d/nginxに記述されています。
ログのローテーションを行うために、ログは/var/log/nginxの下に作成するようにします。
/etc/nginx/conf.d/wordpress.confの中で、以下のように修正しました。

access_log   /var/log/nginx/aaa.access.log main;
error_log     /var/log/nginx/aaa.error.log warn;

Apacheの停止とnginxの起動

WordPressに管理者でログインして、キャッシュ系のプラグインのキャッシュファイルを削除して、キャッシュ系のプラグインを停止します。
キャッシュ系のプラグインが起動したり、キャッシュファイルが残っていると古い表示が残ったままになることがあるようです。
私の場合、WP Super CacheとDB Cache Reloaded Fixを動作させていたので、キャッシュファイルを削除してプラグインを停止しました。

/var/www/wordpressフォルダの権限をnginx:admに変更します。
Apacheをサービスからオフにして、nginxをサービスに登録します。
そして、Apacheを停止してから、nginxを起動します。

WordPressがブラウザから正しく表示されることを確認します。

 

Apacheからnginxに移行時に遭遇した様々なエラー対策

WordPressの画面が真っ白になった

WordPressのデバッグモードを使って原因を調べます。
デバッグモードにするにはwp-config.phpを以下のように変更します。

デバッグモードにするとブラウザ画面にphpのログが表示されるようになります。

お使いのサーバーのPHPではWordPressに必要なMySQL拡張を利用できないようです。

ブラウザでこのようなメッセージが表示されたときは、php-mysqlなど必要なモジュールがすべてインストールされているかどうか確認が必要です。

Windows Live Writerで「このブログでは画像の投稿がサポートされていないため、以下の画像を投稿できません」

image

/var/www/wordpressフォルダの権限がnginx:admとなっているか確認が必要です。

 

Apacheからnginxへ移行時のスピード比較

Apache使用時とnginx使用時のabコマンドの結果は以下の通りです。

Apache(WordPressキャッシュ系プラグインあり)使用時

nginx(WordPressキャッシュ系プラグインなし)使用時

キャッシュ系のプラグインを使っていないにも関わらず、nginxでは少し速くなっているようです。

次にUptime Robotで移行前、移行後の状況を確認します。

image

移行後は安定的にレスポンス時間が減っている(つまり、速くなった)ことが確認できました。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です