Apache + PHP を FPM/FastCGI で動かす。

使い勝手の向上のため、PHP や Perl のプログラムを指定したユーザー権限で実行できるように設定します。

PHPやPerlのプログラムを指定のユーザー権限で実行できるようにする

ここまでの Apache と PHP の設定では、PHP は Apache のモジュールとして登録されていますので、PHP の実行エンジンは Apache の機能のひとつとして働きます。つまり PHP プログラムは Apacheユーザー権限で実行されます。

Apache にセキュリティホールが見つかって不正な攻撃を受けた場合に、一般のユーザーよりも権限の少ないApacheユーザーで実行した方が安全なためです。

ところがこの場合、不便なこともあります。
PHP の実行によって新しく作られるファイルは Apacheユーザーの所有物となるため、他のユーザーがファイルを簡単に削除することが出来なくなります。

例えば WordPress の管理画面から画像をアップロードしたり新しいプラグインを追加すると、それらのファイルは Apacheユーザーの所有物になるため、他のユーザーは削除することが出来ないわけです。

レンタルサーバの多くは、こうしたパーミッションの問題を解消するために、PHPがユーザー権限で実行されるように設定されていることが多いようです。

ファイルを削除するためだけに su するのも面倒ですので、PHP や Perl のプログラムは指定したユーザー権限で実行できるように設定したいと思います。

FastCGI をインストールする

Apache用の FastCGIモジュールには、mod_fcgid と mod_fastcgi があります。
どちらもFstCGiプロトコルを使いてメモリ空間中に常駐することによってウェブサーバーのレスポンスを向上させる働きがあります。PHPプログラムが Apache とは別のプロセスで実行されますので、これらを使用すれば、ウェブサーバーのレスポンスを向上させつつ今回の希望を満たすことが出来るわけです。

mod_fastcgi をインストールする

今回は少ないメモリでも扱いやすい(らしい)mod_fastcgi を選択しました。

yumi で mod_fastcgi をインストールします。
mod_fastcgi は標準のリポジトリには含まれないので、rpmforgeリポジトリからインストールします。

mod_fastcgi の設定をする

ここからの設定作業は、Webminのファイルマネージャーを利用すれば楽々設定できます。

fastcgi.conf という設定ファイルを /etc/httpd/conf.d ディレクトリ内に設置します。
/etc/httpd/conf.d/fastcgi.conf

/etc/httpd/conf.d/ に置かれた拡張子が「.conf」のファイルは apache が起動する際に自動的に読み込まれます。他の設定ファイルに追記しても良いのですが、モジュール毎に設定ファイルを分けておいた方が管理しやすいでしょう。

以下のように入力して保存します。

mod_fastcgi モジュールの読み込み指示と、拡張子が .php のファイルがあったら、localhost(127.0.0.1)の9000番ポートに投げるよう指定しています。

/var/www/fcgi-bin/php-fpm というファイルは無くても大丈夫ですが、ディレクトリは存在する必要がありますので作ってください。中身は空でOKです。
/var/www/fcgi-bin

apache標準のPHPモジュールを無効化する

phpがapache標準のPHPモジュールで実行されないよう、php.conf をリネームして無効にしておきます。拡張子を.conf 以外にすれば読み込まれなくなります。

/etc/httpd/conf.d/php.conf

/etc/httpd/conf.d/php.conf.old

PHP-FPMの設定をする

以下の設定ファイルを編集します。
/etc/php-fpm.d/www.conf

修正するのはハイライトした4行です。

  • 39行目: PHPを実行するユーザ名を指定します。
  • 42行目: PHPを実行するグループ名を指定します。

sessionディレクトリのパーミッションを変更する

PHPがユーザー権限で動くため、そのままではセッション情報を書き換えることができません。sessionデータが保管されるディレクトリのパーミッションを変更しておきます。

apacheの設定を変更する

例として VirtualHost の設定を示します。
後ほどドメインの設定の際に設定しますので、ここでは要点だけ押さえておいてください。

重要なのは、ExecCGI を加えている点です。
PHPがCGIとして動きますので、ディレクトリに対してCGIを実行する許可を与える必要があります。Option に ExecCGI を必ず追加してください。

CGIプログラムを指定したユーザー権限で実行されるよう設定する

http.confを修正します。
/etc/httpd/conf/http.conf

以下の行を追加して保存します。
ここでは、www というユーザー権限で実行するよう指定しています。

これでPerlプログラムが wwwユーザー権限で実行されるようになります。
wwwユーザー&グループに su して 実行(exec)というイメージですね。

ウェブサイトのディレクトリの権限を変更する

ウェブサイトのデータを置くディレクトリの権限をユーザーの権限に変更します。
ここでは、ウェブサイトのデータを置くディレクトリを「/var/www/html」とし、ユーザー名を「www」としています。

PHP-FPMとapacheを起動する

PHP-FPMを起動します。また、再起動の際に自動的に起動するように設定します。

apacheを再起動します。

以上でPHPがwwwユーザー権限で実行されるようになりました。

次は、パフォーマンスアップを狙って、ApacheをWorkerモードに切り替えます。

ApacheをWorkerモードに切り替え&APCをインストールする
ウェブサーバのパフォーマンスを1ランクアップさせる設定を行います。 Apache の MPM を Worker モードに切り替える Ce...
  1. さくらのVPSでウェブサーバ、インストールマニュアル
  2. さくらVPSを申し込んで起動する
  3. パソコンにターミナルエミュレータをインストールする
  4. ユーザーを登録する
  5. ファイヤーウォールを設定する
  6. Webminをインストールする
  7. ApacheとPHPをインストールする
  8. MySQL、phpMyAdminをインストールする
  9. Apache + PHP を FPM/FastCGI で動かす
  10. ApacheをWorkerモードに切り替え&APCをインストールする
  11. 独自ドメインの取得&メールアドレスを設定する
  12. Apache の VirtualHost を編集する
  13. SSL証明書をインストールする(自分でやればこんなに激安!)
  14. SFTPでファイルを転送する
  15. DropboxでVPSサーバを丸ごと全自動バックアップする

スポンサーリンク
広告(大)
広告(大)

シェアする

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

フォローする

スポンサーリンク
広告(大)