Apache 設定 · 2 min read · Dec 03, 2025
Mandriva 2009.1 に mod_fcgid と PHP5 を使って Apache2 を設定する方法
Mandriva 2009.1 に mod_fcgid と PHP5 を使って Apache2 を設定する方法
Version 1.0
Author: Falko Timme
Follow me on Twitter
このチュートリアルでは、Mandriva 2009.1 に mod_fcgid と PHP5 を使って Apache2 をインストールする方法を説明します。mod_fcgid は、古い mod_fastcgi の互換性のある代替手段です。これにより、Apache ユーザーの代わりに所有者の権限で PHP スクリプトを実行できます。
私はこれがあなたにとって機能するという保証はしません!
1 前提条件
このチュートリアルでは、ホスト名 server1.example.com と IP アドレス 192.168.0.100 の Mandriva 2009.1 サーバーを使用しています。
このチュートリアルでは、mod_fcgid の使用を示すために、www.example1.com と www.example2.com の 2 つの Apache vhosts を作成します。
2 Apache2/mod_fcgi/PHP5 のインストール
まず、パッケージデータベースを更新します:
urpmi.update -a次のようにして Apache2、mod_fcgid、および PHP5 をインストールできます(mod_fcgid は apache-mpm-prefork の代わりに apache-mpm-worker を必要とするため、現在 apache-mpm-prefork がインストールされている場合、それに依存する Apache モジュールは削除されます。たとえば apache-mod_php):
urpmi apache-mpm-worker apache-mod_fcgid php-fcgi[root@server1 ~]# urpmi apache-mpm-worker apache-mod_fcgid php-fcgi
次のパッケージは他のパッケージをアップグレードするために削除する必要があります:
apache-mod_perl-2.0.4-5mdv2009.1.x86_64
(apache-mpm-worker-2.2.11-10.5mdv2009.1.x86_64 との競合のため)
apache-mod_php-5.2.9-1mdv2009.1.x86_64
(apache-mpm-worker[>= 2.2.8] との競合のため) (y/N) <– y
依存関係を満たすために、次のパッケージがインストールされます:
Package Version Release Arch
(medium “Main Updates”)
apache-base 2.2.11 10.5mdv2009.1 x86_64
apache-mod_ssl 2.2.11 10.5mdv2009.1 x86_64
apache-modules 2.2.11 10.5mdv2009.1 x86_64
apache-mpm-prefork 2.2.11 10.5mdv2009.1 x86_64
apache-mpm-worker 2.2.11 10.5mdv2009.1 x86_64
php-fcgi 5.2.9 6.2mdv2009.1 x86_64
(medium “Contrib”)
apache-mod_fcgid 2.2 6mdv2009.1 x86_64
6MB のディスクスペースが解放されます。
977KB のパッケージが取得されます。
7 パッケージのインストールを続行しますか? (Y/n) <– Y
次に、/etc/php.ini を開きます…
vi /etc/php.ini… そしてファイルの最後に cgi.fix_pathinfo = 1 の行を追加します:
| [...] cgi.fix_pathinfo = 1 |
その後、Apache を再起動します:
/etc/init.d/httpd restart3 www.example1.com と www.example2.com のための Vhosts の作成
これから、www.example1.com(ドキュメントルート /var/www/web1/web)と www.example2.com(ドキュメントルート /var/www/web2/web)の 2 つの vhosts を作成します。www.example1.com はユーザーおよびグループ web1 に、www.example2.com はユーザーおよびグループ web2 に所有されます。
まず、ユーザーとグループを作成します:
groupadd web1
groupadd web2
useradd -s /bin/false -d /var/www/web1 -m -g web1 web1
useradd -s /bin/false -d /var/www/web2 -m -g web2 web2
chmod 755 /var/www/web1
chmod 755 /var/www/web2次に、ドキュメントルートを作成し、それをユーザー/グループ web1 および web2 に所有させます:
mkdir -p /var/www/web1/web
chown web1:web1 /var/www/web1/web
mkdir -p /var/www/web2/web
chown web2:web2 /var/www/web2/webPHP を suExec を使用して実行します。suExec のドキュメントルートは /var/www であり、次のコマンドが示しています:
/usr/sbin/suexec -V[root@server1 ~]# /usr/sbin/suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec_log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_SUEXEC_UMASK=077
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX="public_html"
[root@server1 ~]#したがって、PHP バイナリ(/usr/bin/php-fcgi)を直接呼び出すことはできません。なぜなら、それは suExec のドキュメントルートの外にあるからです。suExec はシンボリックリンクを許可しないため、問題を解決する唯一の方法は、/var/www のサブディレクトリに各ウェブサイトのラッパースクリプトを作成することです。ラッパースクリプトは PHP バイナリ /usr/bin/php-fcgi を呼び出します。ラッパースクリプトは各ウェブサイトのユーザーおよびグループに所有される必要があるため、各ウェブサイトごとに 1 つのラッパースクリプトが必要です。私は /var/www/php-fcgi-scripts のサブディレクトリにラッパースクリプトを作成します。たとえば、/var/www/php-fcgi-scripts/web1 と /var/www/php-fcgi-scripts/web2 です。
mkdir -p /var/www/php-fcgi-scripts/web1
mkdir -p /var/www/php-fcgi-scripts/web2vi /var/www/php-fcgi-scripts/web1/php-fcgi-starter| #!/bin/sh PHPRC=/etc/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/bin/php-fcgi |
vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter| #!/bin/sh PHPRC=/etc/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/bin/php-fcgi |
PHPRC 行には php.ini ファイルがあるディレクトリ(すなわち、/etc/ は /etc/php.ini に変換されます)が含まれています。PHP_FCGI_MAX_REQUESTS は、fcgid プロセスが停止し、新しいプロセスが起動される前の最大リクエスト数を定義します。PHP_FCGI_CHILDREN は起動される PHP 子プロセスの数を定義します。
php-fcgi-starter スクリプトは実行可能でなければならず、それら(およびそれらが含まれるディレクトリ)はウェブサイトのユーザーおよびグループに所有されている必要があります:
chmod 755 /var/www/php-fcgi-scripts/web1/php-fcgi-starter
chmod 755 /var/www/php-fcgi-scripts/web2/php-fcgi-starter
chown -R web1:web1 /var/www/php-fcgi-scripts/web1
chown -R web2:web2 /var/www/php-fcgi-scripts/web2次に、www.example1.com と www.example2.com のための Apache vhosts を作成します。/etc/httpd/conf/httpd.conf の最後に次の 2 つの vhosts を追加します:
vi /etc/httpd/conf/httpd.conf| [...] NameVirtualHost *:80 |
正しいパス(および SuexecUserGroup 行の正しいユーザーとグループ)を入力してください。
その後、Apache を再読み込みします:
/etc/init.d/httpd reload新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。