検討!目論見検討委員会

最近はコミケの締切情報メイン

NetBSD4.0にapache+PHPを入れる

微妙に変なことになった。apacheはソースからコンパイルした2.2系が入っていてPHPはpkg_addから入れたというちぐはぐ環境。libxml2のばかぁ。
昨日は、phpのインストールだけしたが、httpd.confのDocumentRootのディレクトリで

# echo "<? phpinfo(); ?>" > phpinfo.php

して、phpinfo()だけのファイルを作り、ブラウザからアクセスしたらダウンロードが始まったのでよくよく考えたら、AddTypeはしたが、LoadModuleをしていないことに気づき、libphp5.soを探すがない。
こうしてまたpkg_addが始まるのだった。
さてその前に、$PKG_PATHにftpサイトのパスを書いておかなければならない。前回exportしたので、.bash_profileに書いてしまおうとした。が、ちょっとはまった。

PKG_PATH="ftp://ftp.jp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/4.0/All"

と書いたらなぜかpkg_add失敗し、

export PKG_PATH="ftp://ftp.jp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/4.0/All"

と書いたらなぜかうまくいった。
さて、phpのModule名だが、ap22-php5という名前で指定する。こんなのすぐ分んねえよ。

# pkg_add ap22-php5

したら、最後の方に

===========================================================================
The following files should be created for apache-2.2.8:

        /etc/rc.d/apache (m=0755)
            [/usr/pkg/share/examples/rc.d/apache]

===========================================================================

===========================================================================
$NetBSD: MESSAGE,v 1.2 2005/03/30 03:25:00 darcy Exp $

In order to use this module in your Apache 1.x installation, you need to
add the following to your httpd.conf file:

  LoadModule php5_module lib/httpd/mod_php5.so
  AddType application/x-httpd-php .php

You may also add following if you still use .php3 files:

  AddType application/x-httpd-php .php3

For Apache 2.x installation, you need following:

  LoadModule php5_module lib/httpd/mod_php5.so
  AddHandler application/x-httpd-php .php

You may also add following if you still use .php3 files:

  AddHandler application/x-httpd-php .php3

===========================================================================

と出てきた。親切。そういえばpkg_add phpやったときにも同じようなガイドが出てきた気が。
mod_php5.soは、/usr/pkg/lib/httpd/mod_php5.soにあった。apacheだけソースからコンパイルしたので、httpd.confには絶対パスで書かないとあかんか。
あと、apacheの起動スクリプト用意。と起動。と思ったら昨日動かしてたapacheが立ち上がりっぱなしだったので終了させておいた。

# cp  /usr/pkg/share/examples/rc.d/apache /etc/rc.d/apache
# chmod 755 /etc/rc.d/apache
# /usr/local/apache2/httpd -k stop # 以前実行してたの止める
# /etc/rc.d/apache start

早速、さっき作ったphpinfo.phpにアクセス。が、404 Not Found
なんてことない、ap22-php5をインストールしたときに依存関係でapache22がインストールされた模様。で、cpして実行権限与えたapacheスクリプトは、今依存関係で入ったapache22を起動してた。そりゃあDocumentRootも違うさな。

な、なんだってー!11!!!俺のビルドを返せ!!11!!

もはや何に向かって言っているのかまったく不明。
んで、思いついたので

# /etc/rc.d/apache stop # 動いてたapacheを終了
# cp /usr/pkg/lib/httpd/mod_php5.so /usr/local/apache2/modules/
# httpd.conf内、LoadModule php5_module modules/mod_php5.soを書き
# /usr/local/apache2/httpd -k stop

して、ブラウザでphpinfo.phpを見たけど、phpinfo();のphpのソースが返ってきた。失敗。ログを調べたけどロード読み込み失敗したとか見あたらなかったので(httpd -tでsyntax OKだた)、apacheとphp5_moduleの相性エラーでしょうという結論にして、結局pkg_addから依存関係で入ったhttpdを使うことにした。起動スクリプトも用意しちゃったし。
で、LoadModuleもAddTypeも書いてapache再起動、ブラウザから見たら、phpinfo();というソースが返ってきた。あれ?まだ設定するところあったっけ?
うー、また明日。