頑張らない!でも諦めない!必死にならずにええかげん

(lounge mod_fcgid on 2.4.6)windowsでCGIをFastCGIで実行するように設定する

      2014/11/22

windows上でPHPをFastCGI実行を行う方法を、
Apache Loungeで提供されているモジュールを元にご紹介します。
Apache Loungeのモジュールを利用すると、
特に迷うことなく簡単にfcgid(FastCGI)の環境を構築することができます。

はじめに

PHPをfcgid(FastCGI)で実行を行う方法は検索するといろいろと出てくるのですが、
どうも書いてある通りに設定してもうまく動かず、
結構な期間、試行錯誤を繰り返してはまってしまっていました。

Apache Loungeの組み合わせで動作確認

そんな時に出逢ったのがこのApache Loungeで提供されている
Apacheと各モジュールのセットでした。

さすがにセットで公開されているだけあって、両方を採用すればしっかりと動くものですね^^
とはいえ、このApacheLoungeをインストールして、
設定方法がわかったことによって、他の組み合わせでもちゃんと動かすことができました。

組み合わせによって動いたり、動かなかったりするこうした仕組みは、
まずは、動くと確証のある組み合わせで動かしてみてから、
実際に使いたい組み合わせを同じ流儀で試す。
それが近道だと私は思います。

ご自分の環境に対してマッチするかは別としてこうした環境もあるということでご紹介します。

環境

ダウンロード

Apache Loungeでのダウンロードページの
以下の場所からダウンロードが行えます(2013/10/31現在)
http://www.apachelounge.com/download/

01_Apache Loungeサイト

Apache Loungeサイト

ダウンロードに関しては、環境に明記した各バージョンで行っていますので、
以下の各投稿を参考にダウンロードを行ってインストールください。

既存Apacheとは共存可能

Apacheまでインストールしないといけないの?!そう思われたことでしょう。

Apache Loungeの組み合わせに限って動作するといったものではないはずです。
しかし、他の組み合わせで動作するかわからないもので試行錯誤を行うよりは、
動作すると分かっている組み合わせで一度、環境を構築することは近道です。

実際に動作することを確認した後で、
目的とするバージョンに設定を移植すれば、きっといい結果が得られるでしょう。

そこで、既にインストールしてあるApacheはどうするの?ってことになりますが、
以下で、共存させる方法をご紹介しています。

通常、Apacheのメジャーバージョン(2.0.xxxや2.2.xxx)を、
同一PCにインストールすることはインストーラからはできません。
以下の投稿では、その複数メジャーバージョンの共存方法の紹介です。
1つのPC(サーバー)で複数のApacheをインストールして利用する方法

Apache

Apacheのダウンロードとインストールに関しては以下の投稿をご確認ください。
以下の投稿では、win32版(httpd-2.4.6-win32-VC11.zip)でご説明させて頂いております。
(Apache Lounge版)ローカル環境(windows)へのApache設置

PHP

PHPのインストール方法は5.3以降はインストーラ形式ではなくなっています。
PHPのインストール方法については、以下の投稿でご紹介しています。
以下の投稿では、win32版(php-5.5.5-Win32-VC11-x86)でご説明させて頂いております。
ローカル環境へのPHP設置(Ver.PHP 5.5.5)

fcgid(FastCGI)でPHPを動作させる設定

ApacheとPHPのインストールが完了したら、
PHPをfcgid(FastCGI)として実行させるように設定を行います。

とはいえ、Apache Loungeで提供されているモジュールで設定を行えば、
問題なく実行できる環境が構築できるでしょう。

fcgid(FastCGI)モジュールのインストール

モジュールのダウンロードページには、
以下のモジュールが含まれていることが明記されています。
http://www.apachelounge.com/download/

  • mod_security-2.7.5
  • mod_fcgid-2.3.9
  • dbd_modules-1.0.6
  • mod_watch-4.3
  • mod_view-2.2
  • mod_line_edit-1.0.0
  • mod_log_rotate-1.00a
  • mod_xsendfile-1.0-P1
  • mod_bw-0.92
  • mod_jk-1.2.37
  • mod_websocket
02_含まれるモジュール

含まれるモジュール

Apache Loungeで提供されている、
モジュールセット(modules-2.4-win32-VC11.zip)をダウンロードし解凍すると、
含まれているモジュールのフォルダが作成されます。

03_mod_fcgid-2.3.9フォルダ

mod_fcgid-2.3.9フォルダ

その中から[mod_fcgid-2.3.9 ]フォルダを開き[mod_fcgid.so]ファイルをコピーします。
コピーしたファイルをApacheのインストールディレクトリ内の[\modules]フォルダへコピーします。

04_mod_fcgid.soファイルのmoduleへのコピー

mod_fcgid.soファイルのmoduleへのコピー

モジュールのインストールは以上です。

httpd.confの設定

httpd.conf ・・・fcgid(FastCGI)の設定で億劫になるのがこのタスクではないでしょうか。
何度やってもうまく動いている気がしない。
Apacheすら起動しなくなる・・・そんな作業です。

しかし、Apache Loungeなら答えがそこにあります。

モジュールを解凍した[mod_fcgid-2.3.9 ]フォルダの中をにあるReadMe.txtを開きます。
テキストの中には以下のように記載されています。

この設定にならって、Apacheのhttpd.confに対して設定を行います。
httpd.confの最後に以下を追記します。

追記が完了したら、Apache Service MonitorにてApacheを再起動します。
エラーが出た場合には、設定を見直します。

phpinfo()の確認

Apacheのcgi-binディレクトリに対して、以下の処理を記述したテキストファイルを用意し、
ファイル名をphpinfo.php(拡張子php以外はファイル名は自由)で保存します。

ここで、phpinfo.phpをcgi-binに配置する理由は、
httpd.confファイルに以下の記述が最初から存在している為です。

この358行目の設定は、URL(だけではないが)に「/cgi-bin/」が含まれているときは、
[c:/Apache24/cgi-bin/]に対する要求であると読み替える設定(エイリアス)です。

また[ScriptAlias]として定義することで、
エイリアスの設定とともに対象のディレクトリでスクリプト実行が行える権限を付与しています。

ブラウザからの表示確認

ブラウザからローカルホストを確認します。
現時点ではDirectoryIndexの設定を行っていないものとして、
ファイル名を含むURLで指定してください。

http://127.0.0.1/cgi-bin/phpinfo.php

以下のようにphpinfoの情報が表示されれば、phpのcgi実行は動作しています。

05_phpinfoの確認

phpinfoの確認

fcgid(FastCGI)としての動作確認

phpinfoをブラウザで表示した後、
windowsのリソースモニタを確認すると[php-cgi.exe] が表示されているはずです。
通常、CGI実行した際にはこの[php-cgi.exe]が
ブラウザ表示のあとすぐにグレー表示となって[終了済み]と表示されます。

しかしfcgid(FastCGI)として動作している場合にはページ表示後も終了せずに残ります。
また、ブラウザを更新した際にも[php-cgi.exe]が新たに起動されることなく、
既に起動している[php-cgi.exe]にて表示が行われます。

この既存プロセスを利用して実行する仕組みがfcgid(FastCGI)の特徴です。

06_リソースモニタのphp-cgi.exeの実行中確認

リソースモニタのphp-cgi.exeの実行中確認

またfcgid(FastCGI)モジュールを読み込んでいる場合には、
Apache Service Monitorにモジュール名が表示されます。

07_Apache Service Monitorの表示

Apache Service Monitorの表示

その他に明確にfcgid(FastCGI)として動作していることを、
確認できる点が見当たらなかったのですが、phpinfoにCreditが表示されます。

FastCGI Process Manager Andrei Nigmatulin, dreamcat4, Antony Dovgal, Jerome Loyet

もっと明確に判別できる方法をご存知の方がいらっしゃいましたら、
コメントで教えてください!

Windows は米国 Microsoft Corporation の米国およびその他の国における登録商標です。
登録番号は以下の通りです。
第3333588号、第3351402号、第4197799号、
第4348387号、第4395963号、第4648301号
Windows は米国 Microsoft Corporation の米国およびその他の国における国際登録商標です。
国際登録番号:1135413

Apache,Apache Hadoop,Apache Subversion,Hadoop,HDFS,HBase,Hive,Mahout,Pigは、
Apache Software Foundationの米国およびその他の国における登録商標または商標です。
ApacheソフトウェアはApache Software License (原文)および
Apache License, 2.0 (原文)に基づきOpen Source Initiativeに承認されライセンスされています。

*本ページ内に記載されされた各社ブランド、サービス名、商標、登録商標については、
各社ブランドのロゴや商標等に関する帰属についてをご確認ください


最後までお読みいただきありがとうございました。

アイキャッチ画像に利用させて頂いております、各社ブランドのロゴやシンボルに関しては、
各社ブランドのロゴや商標等に関する帰属についてをご確認頂けますようお願い致します。

AdMax Promotion

ブログ記事のご紹介
すべて展開 | すべて省略

Rakuten Promotion

ページ
すべて展開 | すべて省略

プロモーション(btm)

Google or AdMax Promotion (it)

 - Apache, PHP, windows , , , ,

  関連記事

eye_eekagen
SWFをAVI・MPGに変換できるFree SWF Converterが残念な結果に。

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_local_apache
Apacheインストール直後にコマンド画面でエラーが表示された場合の対処法

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_local_apache
[コンピュータに MSVCR110.dllがない]とApacheMonitor.exeを起動して言われた場合

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_local_apache
(lounge Apache 2.4.6)ローカル環境(windows)へのApache設置

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_local_apache
(apache 2.2.25)ローカル環境(windows)へのApache設置

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_local_apache
Apache2.0.xのhttpd.confを手動で作成する方法

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_local_apache
Apache2.0.xの初期設定をVBScriptを利用して1発で完了する方法

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_windows
VisualStudio 2005 Trial(評価版)は今でもダウンロードできたのか。

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_php
include_once(include) は戻り値が返されるの!?

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_php
ファイルアップロード上限の変更(PHP phpMyAdmin wordpress)

Google or AdMax Promotion(it) 禁断の機能がau公式 …