XAMPP 1.8.2 の HTTP サーバは Apache 2.4.4 ですが、FastCGI の設定方法がネットでよく見る Apache 2.2 のとは少し違っていたのでメモ。
モジュールの設定
Apache 2.4.4 では FastCGI のモジュールは mod_proxy_fcgi という名前になっています。
このモジュールは XAMPP 1.8.2 に含まれているので、\xampp\apache\conf\httpd.conf を編集してロードするようにします。
(コメントで記述されているので、先頭の"#"を削除します)
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
モジュールがロードされているか確認
Apache を再起動させて XAMPP の管理画面 (http://127.0.0.1/xampp/) から phpinfo を確認します。
下の画像のように Loaded Modules に mod_proxy_fcgi があればロードされています。
動作検証
Go言語(golang)を使ってテスト用 FastCGI サーバを記述します。
\xampp\htdocs 以下に fcgi_test フォルダを作成し、そこに下記の内容で app.go というファイルを保存します。
app.go
package main import ( "net" "net/http" "net/http/fcgi" ) type FastCGIServer struct{} func (s FastCGIServer) ServeHTTP(resp http.ResponseWriter, req *http.Request) { resp.Write([]byte("<h1>Hello, 世界</h1>\n<p>Behold my Go web app.</p>")) } func main() { listener, _ := net.Listen("tcp", "127.0.0.1:9001") srv := new(FastCGIServer) fcgi.Serve(listener, srv) }
\xampp\apache\conf\httpd.conf に以下の内容を追加します。
# fcgi test <Location /fcgi_test/> ProxyPass fcgi://127.0.0.1:9001/fcgi_test/ ProxyErrorOverride on Require all granted </Location>
Apache を再起動した後、app.go を保存したフォルダに移動して次のコマンドで FastCGI サーバを起動します。
$ go run app.go
webブラウザで http://127.0.0.1/fcgi_test/ にアクセスして、下の画像の内容が表示されれば成功です。
FastCGI サーバは CTRL-C で停止します。