centos6.4 + PHP5.3 + php-fpm + APC + nginxを構成したときのメモ

先日、トラしゅという(クラウドに関する勉強会+小規模な障害対応の実践コンテスト)に参加させていただきました。
twitter #トラしゅ

会場はニフティさんのオフィスと会議室の一部で開催され、障害対応の実践にもニフティクラウド上に構築されたネットワークインフラ上で行われました。

午前中はニフティクラウドの紹介と体験
午後は、5人~6人でチームが構成され、そのメンバーが協力してインフラ上の障害に対応し、その対応の優劣を競う、というものでした。

結果から言うと、優勝しちゃったんですが、僕は全く役に立てず・・・。
勉強させてもらって、優勝商品までいただいて・・・感無量ですが、次はせめて少しでも役に立ちたいです・・・。


というわけで少し復習を兼ねて、このブログの本題です。

午後の障害対応の実践では、簡単に言うと、与えられたWEBサーバ(ロードバランサやDBサーバなども含)に、大量のHTTPリクエストがきたときに、可能な限りダウンしないようにチューニングしてください、というお題でした。
(※ダウンしてしまった場合は、それらのいち早い復旧と、報告なども含みます。)

WEBサーバの構成はapache上でwordpressが動いているシンプルなものでした。

それらを、できるだけレスポンス早く、負荷の少ないものにチューニングしてみよう、ということで、このブログ記事ではタイトルの構成

  • CentOS minimal 6.4
  • PHP 5.3
  • php-fpm(Alternative PHP Cache)
  • APC(FastCGI Process Manager)
  • nginx(http server)

この構成にwordpress + mysqlを動かしてみます。

1.nginxをインストールする

defaultではCentOSのパッケージ管理を行なってくれるyumにnginxのリポジトリは含まれていませんので、まずは
それらを追加していきます。

/etc/yum.repos.dディレクトリ内にファイルを作成しておけば、yumを利用するときに自動的にそこから検索されます。

これでnginx.repoというnginxのリポジトリのURLなどを書いておくファイルを作成します。

僕の環境ではこんな感じです。設定の内容とかは忘れちゃった・・・。
後々調べて追記すると思います。

ここまでできたら

これでnginxのインストールはOKです。
起動はおなじみserveiceコマンドから

2.php-fpmをインストールする

※補足 php-fpmとは

php FPM(FastCGI Process Manager)の略で単体で動作するアプリケーションサーバであり
Webサーバとアプリケーションサーバのやり取りをするためのプロトコルがFastCGIで、それの実装。

今回はよく見かけるApache + mod_phpという1サーバ構成と違い、nginx(WEBサーバ) + php-fpm(APサーバ)
という構成になります。

参考にさせていただいたサイト1
参考にさせていただいたサイト2

インストールは簡単です。

これだけ。後々必要になりそうなやつは一緒に入れちゃってます。
php-fpmの起動は

でOKです。

3.nginxにphp-fpmを設定する

で、ここが一番時間かかった・・・。正直今もあんまりわかってないんですが、nginxに関しては
改めてブログ書きたいと思います。今は「これで動きました」という設定のみ公開しておきます。
あくまで僕の環境で、ですが・・・。

編集するのは /etc/nginx/conf.d/default.confです。その親ディレクトリにある/etc/nginx/nginx.confを見るとわかるようにconf.dディレクトリ内の設定ファイルは全てインクルードされるようです。

一応ポイントなのはlocation ~ .php {…}の内部で自分自身の9000番ポートをFastCGIのポートとして指定しています。APサーバを別サーバにするなら、適宣、対応するアドレスを入れてあげてください。

fastcgi_paramってところが、色々エラー出まくりで、ようやくこれで正常に動きました・・・。

ここは別記事で今度まとめます


ここまでの動作確認をしておく

ここまでできたら、動作確認をしてみます。

rootに指定してある/usr/share/nginx/htmlディレクトリ内にindex.phpを作成します。

これでOK

サーバにブラウザからアクセスして、phpinfo()の画面が正常に動くかを確認します。

こんな感じにちゃんと表示されたら

  • Server API
  • _SERVER[“SERVER_SOFTWARE”]

の2項を確認して、nginxとphp-fpmが動作しているかを確認します。

Screen Shot 2013-07-17 at 0.09.40

Screen Shot 2013-07-17 at 0.10.01


4.APCをインストールする

これもyumでインストールするだけ!しかも動かすだけなら特別な設定とかも別に要らない。

これでインストールが終わると、/usr/share/php-pecl-apc/ディレクトリ内にapc.phpというものが
出来ます。これはapcでどれだけキャッシュを行なっているかを確認するためのファイルで、ブラウザから
確認できるところにコピーしておくと便利です。

これをやっておいて、ブラウザで http://[ipaddress]/apc.phpにアクセスすると、下記のようなグラフが確認
できます。簡単ですね

Screen Shot 2013-07-17 at 0.22.17

5.mysqlのインストールと設定

別に書く必要ないかなー、と思ったけど自分がちょいちょい忘れてたので、復習がてら書いておきます。

インストールはこれだけ。でもインストールが終わったら初期設定とかをまとめてやってくれるmysql_secure_installationを実行すると、結構便利です。

これで、必要ないテーブルやDBを消してくれたり、rootユーザのパスワードやログイン設定なんかをサクっとやってくれます。案内にしたがって入力するだけなので割愛。とりあえずrootユーザにパスワード設定は忘れないようにしてくださいね。

あとは次項でインストールするwordpressのためのDBとユーザを作成しておきます。

これでOKです。コマンドラインからユーザ作成とか久しぶりにやりました・・・。コマンドラインからなんでも出来るようになってないとダメかなぁ・・・

6.wordpressを導入する

これは今までで一番簡単かも。ざっくり簡単に書きます。

これでOK。ちなみに、僕がこの記事の内容を試したCentOS minimal 6.4にはwgetもunzipもデフォルトでは
インストールされていなかったので、必要なら

してください

wordpressの設定はwordpress/wp-config.phpですので、そちらを開いて、5で設定したDBとユーザを指定してください。※そのファイルが存在しない場合はwp-config-sample.phpをコピーしてwp-config.phpを作成してください。
おそらくデフォルトでwp-config.phpは存在しないです。

ちなみにそれだけで、通常に動作しますが、認証用のユニークキーを変更しておきましょう。

https://api.wordpress.org/secret-key/1.1/salt/

ここにアクセスすると、ユニークキーを自動で生成してくれるので、まるごとコピペするだけ

最後にhttp://[ipaddress]/wordpress/にブラウザからアクセスして、初期設定を行なってください。

これが完了すれば、wordpressがnginx+php-fpm上で動作していることになります。

こんな感じのページ見えてますかね。

Screen Shot 2013-07-17 at 0.38.54


以上で完了です。

インストールして動作させるだけで、非常に長くなってしまったので、検証や、より細かいカスタマイズは
次回以降に書いていこうと思います。

とりあえずこれで、動きますよー。ということだけ伝われば・・・。

課題

  1. nginxの設定ファイルについて
  2. php-fpmのチューニングについて
  3. mysqlのチューニングについて
  4. APCでwordpressをキャッシュする設定について

次回以降、このへんに触れていきたいと思います。

centos6.4 + PHP5.3 + php-fpm + APC + nginxを構成したときのメモ」への1件のフィードバック

  1. ピンバック: 確実に速くなる、リニューアルで行ったサイト高速化への手順を全公開 | コムテブログ

コメントを残す

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