mod_fcgid 設定

Apache2.4 + mod_fcgid で php5 を動かす個人的なメモです。

最低でも suExec が有効であれば、特に問題は無いと思われます。(suExec に関する設定などは、このメモでは省いています)

注意点として、php スクリプト側での BASIC 認証は通らない点があります。

OS は Debian GNU/Linux 8 相当を想定しています。

・CGI 版 php のラッパースクリプトを準備

# mkdir /etc/skel/bin/

・/etc/skel/bin/php-wrapper

#!/bin/sh
exec /usr/bin/php5-cgi

・実行権限変更と、www-data 権限から読まれる場合用にスクリプトをコピー

# chmod 755 /etc/skel/bin/php-wrapper
# cp -p /etc/skel/bin/php-wrapper /usr/local/bin/

・ラッパースクリプトのコピーとバーチャルホストの設定変更 (各バーチャルホスト毎に作業が必要)

# su username
$ cp -a /etc/skel/bin /home/username/

・/etc/apache2/sites-available/example.com.conf

・・・省略・・・
<Directory /home/usrname/html/>
	Options +ExecCGI
</Directory>
・・・省略・・・
<IfModule mod_fcgid.c>
	FCGIWrapper /home/username/bin/php-wrapper .php
	FCGIWrapper /home/username/bin/php-wrapper .php3
	FCGIWrapper /home/username/bin/php-wrapper .phtml
	AddHandler fcgid-script .php .php3 .phtml
</IfModule>
・・・省略・・・

・/etc/apache2/sites-available/000-default.conf (デフォルトバーチャル)

・・・省略・・・
<Directory /var/www/>
	Options +ExecCGI
</Directory>
・・・省略・・・
<IfModule mod_fcgid.c>
	FCGIWrapper /usr/local/bin/php-wrapper .php
	FCGIWrapper /usr/local/bin/php-wrapper .php3
	FCGIWrapper /usr/local/bin/php-wrapper .phtml
	AddHandler fcgid-script .php .php3 .phtml
</IfModule>
・・・省略・・・

・/etc/apache2/conf-available/php-wrapper-limit.conf

<Directory /usr/lib/cgi-bin/>
	<FilesMatch "^(php|php5)$">
		Require all denied
	</FilesMatch>
</Directory>

上記設定を有効化する。

# a2enconf php-access-limit

・php5 モジュールの無効化と mod-fcgid のインストールと設定変更

# a2dismod [今使用している PHP5 のモジュール]
# apt-get install libapache2-mod-fcgid
# a2enmod fcgid

・/etc/apache2/mods-available/fcgid.conf

<IfModule mod_fcgid.c>
  AddHandler    fcgid-script .fcgi
  FcgidConnectTimeout 20
  FcgidIOTimeout 300
  FcgidInitialEnv PHP_FCGI_CHILDREN 0
  FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 10000
  FcgidMaxProcesses 50
  FcgidMaxProcessesPerClass 2
  FcgidMinProcessesPerClass 1
  FcgidMaxRequestsPerProcess 5000
  FcgidFixPathinfo 1
</IfModule>

・/etc/php5/cgi/php.ini

・・・省略・・・
cgi.fix_pathinfo=1
・・・省略・・・

・apache2 の MPM の Worker への変更と再起動

# a2dismod [今使っている MPM]
# a2enmod mpm_worker
# /etc/init.d/apache2 restart

・追記

  • 2015/07/10: 内容を Debian 8 相当の設定例の書式に変更。
  • 2015/09/08: 内容を修正。

コメントを残す

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