DebianやUbuntu環境でApache2 + PHP5 でApache2をマルチスレッドに

Debian GNU/Linux 4.0 R3 etch と Ubuntu 7.10 server にて


ASP.NETをApacheで動かす mod_mono (パッケージ名 libapach2-mod-mono)を入れると,ASP.NETが使えるが,PHPが消されてしまう。PHPとASP.NETを同時に使う方法としても,これが使えます。



mod_php5 (パッケージ名 libapache2-mod-php5 ) をApache2に入れると,
apache2-mpm-worker (マルチスレッド駆動)がアンインストールされ,
apache2-mpm-prefork (フォーク駆動 Apache 1.3系と同じ)がインストールされる。

Ubuntu 7.10 Server ならLAMPサーバを入れるとデフォルトでApacheがフォーク駆動になる。
Debian GNU/Linux 4.0 R3 etch で
aptitude install apache2
aptitude install php5
として入れても,libapache2-mod-php5 + apache2-mpm-prefork になる。

php5パッケージは,インストールされているapacheを探し,
apache2が入っていれば,apache2-mpm-workerをアンインストールして
libapache2-mod-php5 と apache2-mpm-prefork をインストールする。


せっかくのマルチスレッド版のApacheが使えない。(マルチスレッド版の方が若干速い)


libapache2-mod-php5 では, apache2-mpm-worker (マルチスレッド駆動)が使えないのだ。



以下の手順で,libapache2-mod-php5 + apache2-mpm-prefork から php5-cgi + apache2-mpm-worker に入れ替える事が出来る。基本的にどちらも出来ることは同じ。

(以下のコマンドは,全てDebainならrootで。Ubuntu は頭に sudo を付けて実行。)

aptitude install php5-cgi apache2-mpm-worker
を実行。

libapache2-mod-php5 と apache2-mpm-prefork をアンインストールするので,
続行してもよいか聞いてくる。Yで続ける。


終わると普通に動く。
PHPの設定ファイルの位置が,
/etc/php5/cgi/ 内になるので,こちらで設定する。

Webサーバの /cgi-bin/ ディレクトリが /usr/lib/cgi-bin/ になっていること。

具体的には,

/etc/apache2/sites-available/default
の中に

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all


の記述があること。これがないと,上手く動かん。(初期状態で入っています。)
ちなみに,phpはここに入る。php5 と phpのシンボリックリンクが出来る。



phpMyAdmin は,php5-cgiには標準で対応していないっぽい。
Debian GNU/Linux 4.0 R3 etchでは一応,動くが,
Ubuntu 7.10 Serverでは動かなくなった。

vi /etc/apache2/conf.d/phpmyadmin.conf


から の間に

AddType application/x-httpd-php .php
Action application/x-httpd-php /cgi-bin/php5

を追加すること。

mod_actions を有効にする。以下のコマンドを実行。
a2enmod actions


Ubuntu 7.10のphpMyAdminのバージョンは
phpMyAdmin - 2.10.3deb1ubuntu0.2
このファイルに, /phpmyadmin/ を /usr/share/phpmyadmin/ へのエイリアス
にする設定が書かれている。


さらに,mod_php5 じゃないので以下の設定が使えない。
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_value include_path .

これらの中で,デフォルトじゃないのは,,magic_quotes_gpc Off だけ。
これを設定しておく。
vi /etc/php5/cgi/php.ini
の中のmagic_quotes_gpc On を magic_quotes_gpc Off に修正。

送信時に "や ' や \ の文字に \ を勝手に付けるもの。
これを有効にしておきたい人は,mod_php5 の方を使ったほうがいい・・・。
(いまさらかよ)
戻すには, aptitude install libapache2-mod-php5 でどうぞ・・・。あ,上記で行った設定ももどしておいて・・・。

だた,これらのphpMyAdminは php_flag magic_quotes_gpc が Onだろうが Offだろうが問題なく動いているみたいだが・・・。


おまけ
Debian GNU/Linux 4.0 R3 etchでは/etc/apache2/conf.d/phpmyadmin.conf の位置設定ファイルがになくて,かわりに /usr/share/phpmyadmin/.htaccess を使う。
/usr/share/phpmyadmin/ へはディレクトリ /var/www/ 内に
シンボリックリンクを置くことで設定している。


Debian GNU/Linux 4.0 R3 etchでのphpMyAdminのバージョンは
phpMyAdmin - 2.9.1.1-Debian-6

色々と違う・・・。


"DebianやUbuntu環境でApache2 + PHP5 でApache2をマルチスレッドに" へのコメントを書く

お名前
メールアドレス
ホームページアドレス
コメント