*httpdとその仲間
#navi(OpenBlockS)
追加ソフトのインストール手順
OpenBlockS に apache とバックエントを入れて http サーバーを構築する手順
**目次
#contents
-Apache - 2.0 系はまだやばいのかな?
-expat - コンパイル時に無くても問題ないようだが、あったら使われる
-mod_dav - 外からファイルを書き込んだりできる
-php - PukiWiki を入れるため
**Apache
[2003/7/24] apache 1.3.28 へ更新
/usr/local/www/data 下や、/usr/local/etc/apache 下のファイルを必ずバックアップしてから実行する。ファイルの取得は適当なミラー・サイトから行う(WEBブラウザからダウンロードすればよい)。予め公開鍵を GnuPG にインポートしておく。
$ cd ~/src/01distfiles
$ wget http://www.apache.org/dist/httpd/apache_1.3.28.tar.gz
$ wget http://www.apache.org/dist/httpd/apache_1.3.28.tar.gz.asc
$ wget http://www.apache.org/dist/httpd/apache_1.3.28.tar.gz.md5
$ gpg --verify apache_1.3.28.tar.gz.asc
$ cat apache_1.3.28.tar.gz.md5
MD5 (apache_1.3.28.tar.gz) = 2cdece7b4881d541e072de6a2b65db77
$ md5sum apache_1.3.28.tar.gz
2cdece7b4881d541e072de6a2b65db77 apache_1.3.28.tar.gz
$ cd ..
$ tar xzvf 01distfiles/apache_1.3.28.tar.gz
$ cd apache_1.3.28
$ ./configure --with-layout=FreeBSD --enable-shared=max
$ time make
.. (途中省略) ..
real 3m42.685s
user 2m58.110s
sys 0m41.290s
$ mkdir ~/src/02localpkg/apache
$ make root=~/src/02localpkg/apache install
$ cd ../02localpkg/apache/
$ rm usr/local/etc/apache/httpd.conf
$ tar czvf apache_1.3.28-ssdlinux-1.tgz --owner=root --group=wheel usr var
$ rm -rf usr var
$ su
# apachectl stop
# rm -rf /usr/local/www
# rm -rf /usr/local/share/doc/apache
# tar xzvf apache_1.3.28-ssdlinux-1.tgz -C /
この後、/usr/local/etc/apache/httpd.conf を戻して、apachectl start する。php や mod_dav 等が不整合を起こしていないか確認する。幸い、1.3.27 → 1.3.28 の時は問題ないようだった。
1.3.27 に比べて、1.3.28 は libexpat.so.0 に依存していることが判明(ldd /usr/local/sbin/httpd で調べることができる)。Auto Configure の弊害というやつだ。apache には、xml parser として expat-lite というライブラリを自分で持っているが、システムに expat がインストールされている場合は、そちらを使うようになる。configure のオプションで、そうしないようにすることができるような気がするが、確認できていない。
バイナリのローカル・パッケージを作って、expat がインストールされていない環境へ持っていったときに初めて発覚するので注意。
[2003/6/2] ブラウザのキャッシュ問題。
掲示板の背景を毎月新しくするのだが、いちいちファイル名を変えると、cgi も変更しなければいけないので、同じファイル名で内容だけ入れ替えたのだが、ブラウザ(mozilla や Netscape 7 等)によっては、変わったことを認識してくれないようだ。
mozilla のキャッシュ設定には4種類あって、[ページをアクセスする毎に] [セッション毎に] [キャッシュしたページが古いとき] [しない] という選択肢で、デフォルトは、[キャッシュしたページが古いとき] のようだ。IE の場合は、[ページを表示するごとに確認する] [Internet Explorer を起動するごとに確認する] [自動的に確認する] [確認しない] の4種類だ。
キャッシュとサーバーのファイルの比較で古いかどうかの判断は、ブラウザで異なるようだが、キャッシュに無いファイルを読み込んだときは、Cache-Control: ヘッダか、Expires: ヘッダでどのくらいの期間キャッシュするか決めているようだ。どちらのヘッダも無いときは、ブラウザが適当に決めているらしい。過去にアクセスした履歴で更新されていない期間が長ければ、これからも更新されないだろう、というような判断も行っているかもしれない。
1月に1回背景の画像を変更するような場合、同じファイル名で内容だけ更新すると、ブラウザによっては何日も更新されていないように見えることがある。結局、一番簡単で無難な解決策は、画像ファイル名を更新の度に変える事だ。
$ cd ~/src/apache_1.3.27
$ configure --with-layout=FreeBSD --enable-shared=max
$ make
$ su
# make install
***expat (XML Parser)
apache コンパイル時に必要なわけではないが、php で XML Parser を使ったりする場合にあると便利。
[[SourceForge.net- Project Info - Expat XML Parser:http://sourceforge.net/projects/expat/]] から WEBブラウザでダウンロード、~/src/01distfiles へ保存。
$ cd ~/src
$ md5sum 01distfiles/expat-1.95.6.tar.gz
ca78d94e83e9f077b5da2bfe28ba986a 01distfiles/expat-1.95.6.tar.gz
$ tar xzvf 01distfiles/expat-1.95.6.tar.gz
$ cd expat-1.95.6
$ ./configure
$ make
$ sudo make install
***mod_dav
$ cd mod_dav-1.0.3-1.3.6
$ ./configure --with-apxs=/usr/local/sbin/apxs
$ make
$ su
# make install
$ cd mod_encoding-20020611a
$ ./configure --with-apxs=/usr/local/sbin/apxs
$ make
$ su
# make install
# cd /usr/local/etc/apache
# vi http.conf
# apachectl start
起動時に自動的に立ち上がるようにする。/etc/rc.local に以下の内容を加える。
if [ -f /usr/local/sbin/apachectl ]; then
/usr/local/sbin/apachectl start
echo -n ' apache'
fi
***log rotate
/var/log/access_log, /var/log/error_log をローテーションしなければいけない。[[WEB サーバ(Apache)の設定:http://freebsd.sing.ne.jp/FreeBSD/10apache/10.1.html]] を参考に /etc/newsyslog.conf に以下を加えた。毎週日曜日の午前4時に最大7世代のローテーションを行う。
/var/log/access_log 644 7 * W0D4 B /var/run/httpd.pid
/var/log/error_log 644 7 * W0D4 B /var/run/httpd.pid
**php
$ cd ~/src/01distfiles
$ wget http://downloads.php.net/jani/php-4.3.2.tar.bz2
$ cd ..
$ tar xjvf 01distfiles/php-4.3.2.tar.bz2
$ cd php-4.3.2
$ ./configure --with-apxs=/usr/local/sbin/apxs --enable-zend-multibyte \
--enable-mbstring=all --enable-mbregex
$ make
--with-mysql(デフォルト)で build すると以下のような警告が出た。
/home/otsuka/src/php-4.3.1/ext/mysql/libmysql/my_tempnam.c:115:
the use of `tempnam' is dangerous, better use `mkstemp'
【後日談】 php-4.3.3 を build したら、最後に (It is safe to ignore warnings about tempnam and tmpnam). と出るので、問題ないと思われる。
build ディレクトリを使うと、テストやインストールが出来ないようだ。
local package を作る場合は、ダミーの httpd.conf を用意しないとインストールに失敗する。
$ mkdir -p ~/src/02localpkg/php/usr/local/etc/apache
$ cp /usr/local/etc/apache/httpd.conf.default \
~/src/02localpkg/php/usr/local/etc/apache/httpd.conf
$ cd ~/src/php-4.3.2
$ make INSTALL_ROOT=~/src/02localpkg/php install
$ cd ../02localpkg/php
$ (cd usr/local/etc/apache; rm httpd.conf.bak; mv httpd.conf httpd.conf.php)
$ cp ../../php-4.3.2/php.ini-recomended usr/local/lib/php.ini
$ tar czvf ../php-4.3.2-ssdlinux-1.tgz --owner=root --group=wheel usr
$ rm -rf usr
$ cd ..
$ sudo tar xzvpf php-4.3.2-ssdlinux-1.tgz -C /
Apache でせっかくバージョン表記を隠しているのに、X-Powered-By: PHP/4.3.2 とか返されるのがいやなので、以下を追加。
/usr/local/lib/php.ini:
expose_php = Off
#include(免責事項)