作成開始 : 平成23年08月08日(月) 最終更新 : 平成23年08月13日(土) 

PHP と hiawatha Webサーバーの連携をしてみる (Puppy Linux)


hiawatha Webサーバーがインストールできましたので、PHP5と連携してみます。

1.PHPのインストール

PETパッケージマネージャで検索してみましたがありませんでした。
LANP入れたくないし、ソースからコンパイルなんてしたくないしぃーーー、でネットで検索してみたらありました。
PHP5.2.5 だけどまぁいいや!
http://dotpups.de/dotpups/Programming/php-5.2.5-i486.pet
「ブラウザ」を起動し上記のURLを入力します。

 ↑
「システムの標準設定(petget)を使用」を選択し「OK」をクリックします。

 ↑
ダウンロードを開始します。

 ↑
「OK」をクリックします。

 ↑
「OK」をクリックします。
ダウンロードマネージャとブラウザを閉じます。

 ↑
とりあえず入ったようです。

2./etc/hiawatha/hiawatha.conf の編集

次のように PHP に関する部分を追加しました。

3./etc/hiawatha/php-fcgi.conf の編集

PHP 5.3 以降のバージョンは、自動的にFastCGI を有効にするらしいのですが、今回のは PHP 5.2.5 なので php-fcgi.conf を設定しなければ動いてはくれません。
オリジナルは以下のように全てコメントアウトされています。
・・・で環境は次のようにしました。

4.実行確認

(1)設定ファイルの構文をチェック
hiawatha -k でエラーが無いことを確認します。
(2)設定ファイルを読み込み・起動
hiawatha -c /etc/hiawatha で設定ファイルを読み込み起動させます。

 ↑
動いていますね。
(3)php-fcgiに設定を読み込み起動
/usr/sbin/php-fcgi -c /etc/hiawatha/php-fcgi.conf で設定ファイルを読み込み起動します。

 ↑
動いていますね。
例によって、<?php phpinfo(); ?> を書いたドキュメントを test.php とかで保存します。
場所は、/InetPub/wwwroot/php です。
そして、クライアントPCからアクセスしてみます。
LAN内で名前解決の仕組みが無い場合、クライアントPC の hosts ファイルに 「192.168.1.2   t623xphp」として Hostname = t623xphp がわたるようにします。
クライアントPCからは http://t23xphp/test.php とします。

 ↑
おぉ、できましたね。

5.自動起動

さてさて、シェル・スクリプトに以下を書いて自動起動してあげるようにしたいと思います。
hiawatha -c /etc/hiawatha
/usr/sbin/php-fcgi -c /etc/hiawatha/php-fcgi.conf
しかし、これだけでは、次回起動時に /usr/sbin/php-fcgi.pid が残ってしまい php-fcgi が起動できません。
ちょっと姑息ではありますが、起動の最初に rm /usr/sbin/php-fcgi.pid をつけてみたいと思います。
(もっと気の利いた方法があるとは思いますが・・・)
rm /usr/sbin/php-fcgi.pid
/usr/sbin/php-fcgi -c /etc/hiawatha/php-fcgi.conf
hiawatha -c /etc/hiawatha
・・・でこれを /etc/rc.d/hia_php_rc として 保存し chmod -x /etc/rc.d/hia_php_rc で実行権限を付与します。
さらに、「ファイル」を二つ開き、/etc/rc.d/hia_php_rc をもう1つの「ファイル」の Startup にドラッグ&ドロップし出てきたプルダウンで「絶対パス」を指定しショートカットを作成しました。
これでOS再起動時に hiawatha と php-fcgi が起動しました。

【メモ】

delegate リバースプロキシの設定に以下を追加しましたが、PHPとかZENDのロゴが「×」になってしまいます。
これは、/InetPub/wwwroot/php に画像ファイルを置いても同じでした。
MOUNT=/t623xphp/* http://t623xphp:80/* # T623X & puppy linux & php
REACHABLE=192.168.1.2
※djbdns + tinydnsによりLAN内で名前解決しているので ホストとして t623xphp が使えています。
アクセスは http://takaq1.plala.jp/t623xphp/test..php です。
画像のプロパティを見ると・・・・
 
 ↑                                             ↑
NGですね。                                       http://t623xphp だとOKです。
これじゃー、使えないですね。残念!
・・・と思ったら、delegateの設定ファイルに URICONV=full:+,-SRC/IMG を追加すればOKになりました。
具体的には、以下のように追加します。。
URICONV=full:+,-SRC/IMG または URICONV=mount,normal,partial:+,-SRC/IMG です。
URICONV=full:+,-SRC/IMG というのは、DeleGate version 9.9 リファレンスマニュアル の日本語訳 によると SRC, IMG 属性以外のURIを書き換えるとのことです。
・・・これでOKかと思ったら、今度は delegate機 が errorslog に「オーバーフロー」のようなメッセージを頻繁に出力してしまって /var が full になってしまいます。
top で見ると CPU states: 100%, 0% idle です。
delegate のプロセスが一つだけで CPU 30% とか 70% とかになってしまいます。
URICONV の設定が無い時は 一つの CPU 使用率は 多くてもせいぜい 1〜2%程度です。
残念ですが、URICONV の設定は無しにしました。
・・・でも、もう少し頑張ってみました。
そしたら 「URICONVを設定しないと、クライアントに返すHTMLドキュメント中のURIが/に書き換えられてしまう。cssやimageタグ、aタグのsrcにhttp://〜から指定しても/から書き換えられてしまう。なので、わざとURICONVの設定を効かないようにする。」・・・という記事を見つけました。

それは、delegateの設定ファイルに URICONV="" を追加するものです。
(ディフォルトでは URICONV=mount,normal,partial:+ なのだそうです。)
そしたら、バッチリOK になりました。また、CPU使用率も低く、他のドキュメント表示も良好でした。

戻る

サイトトップへ