Apache環境でPHP-FPM+FastCGIを動かす設定

Apache php-fpm fastcgiお客様の要件に合わせる為、色々なミドルウェアを組み合わせて環境を作ります。

今回はApache同梱のmod_phpを使わないでCGIでPHPを動作させる設定です。細かい部分はあるのですが、動くようにわかりやすく要点だけまとめます。

FastCGIの導入をします。

FastCGI

 

プロセス初回実行時に該当プロセスを一定時間サーバー内に保持することで、次回以降、実行時の「プロセスの起動/終了」を省略し、 高速化や、プロセスの起動/終了に伴うCPUへの負荷を軽減することで、速度面で優れるとされるモジュール版PHPと同等の処理能力を持つ動作方式です。

「FastCGI」を有効(ON)にすることで、一度「プロセスの起動」をすると、一定時間は「プロセスの終了」を することなく起動し続けることで、処理時間の大幅な短縮と、プロセスの起動/終了に伴うCPUへの負荷を軽減します。

 

@see https://www.xserver.ne.jp/manual/man_server_php_fastcgi.php

 

リポジトリを入れる

【EPEL】

【 RPMforge】

mod_fastcgiのインストール

 

mod_fastcgiモジュールを入れます。

PHPをFastCGIで動かす設定

所有権設定

実行権限を与えます。

 

バーチャルホスト設定

 

設定を適用させる。

 

これでひとまずfastcgiでPHPが動きます。

ここからPHP-FPMと連携させる

 

PHP-FPMはプロセスを制御・管理してくれる。

FPM (FastCGI Process Manager)

PHP の FastCGI 実装のひとつで、 主に高負荷のサイトで有用な追加機能を用意しています。

以下のような機能があります。

  • 緩やかな (graceful) 停止/起動 機能を含む高度なプロセス管理

  • 異なる uid/gid/chroot/environment でのワーカーの開始、 異なるポートでのリスン、異なる php.ini の使用 (safe_mode の代替)

  • 標準出力および標準エラー出力へのログ出力

  • opcode キャッシュが壊れた場合の緊急再起動

  • 高速なアップロードのサポート

  • “slowlog” – 実行時間が非常に長いスクリプトの記録 (スクリプト名だけでなく、PHP バックトレースも記録します。バックトレースを取得するために、 ptrace やそれと同等の仕組みを使ってリモートプロセスの execute_data を読みます)

  • fastcgi_finish_request() – 何か時間のかかる処理 (動画の変換や統計情報の処理など) を継続しながら リクエストを終了させてすべてのデータを出力させるための特殊な関数

  • 動的/静的 な子プロセスの起動

  • 基本的な SAPI の動作状況 (Apache の mod_status と同等)

  • php.ini ベースの設定ファイル

@see http://php.net/manual/ja/install.fpm.php

yumでPHP-FPMをインストール

設定ファイル

 

ディレクトリだけ作る(※空で大丈夫)

 

 

さっき設定したバーチャルホストの設定をPHP-FPM用に書き換える。

Apache既存のmod_phpモジュール用設定ファイルを無効化する。

Apacheに設定を反映させる

php-fpmを起動させよう

簡単にまとめるつもりが長くなっちゃいましたね。

お疲れ様です。

なんだか大変そうだなぁと思ったらご相談下さい。

優 ( エンジニア )

 

システムガーディアン爆弾処理班
アクセス負荷対策などNginxへの移行案件が多いこの頃。AzureやAWSなどクラウド案件も多くなってきました。

 

この記事を書いた人:


この記事に関してのお問い合わせ
御連絡・ご返信は原則2営業日以内を予定しております。
お急ぎの場合は、お手数ですが下記電話でもご対応をしております。

システムガーディアン株式会社
受付時間:平日9:00~18:00
受付担当:坪郷(つぼごう)・加藤
電話:03-6758-9166