PostgreSQL6.5.1 Apache1.3.9+PHP3.0.12+openssl0.9.3a+mod_ssl2.4.5 on FreeBSD 3.2-RELEASE
FreeBSDも3.2になり、Apacheも・PHPもPostgreSQLもどんどん新しいヴァージョンがリリースされてきました。 心機一転インストール記です。
PostgreSQL6.5.1のインストール
openssl0.9.3aのインストール
Apache1.3.9+PHP3.0.12+openssl0.9.3a+mod_ssl2.5.4のインストール
mod_sslの設定
まず一連の作業で必要なツールをインストールしておきます。
●GNUmake gmake
●gdbm
●gcc 2.7.2以上
●bison
●flex 2.5.2または2.5.4gmakeとgdbmは/usr/portsからインストールしました。FreeBSD 3.2Rをフツーにインストール するとgcc/bison/flexはインストールされます。FreeBSD 2.2.8Rで必要だったカーネルの再構築も不要です。rootになってpostgres:postgresと言うuserとgroupを作っておき
tar zxvf postgresq.-6.5.1.tar.gz してから
mkdir /usr/local/pgsql
chown -R postgres:postgres /usr/local/pgsql
chown -R postgres:postgres /usr/local/src/postgresql-6.5.1
しておきます。postgresになって
cd /usr/local/src/postgresql-6.5.1/src
./configure --with-mb=EUC_JP
gmake all ★必ずGNUmakeを使うこと
gmake install
これでインストールは終わり。その後設定。
.bash_profileに以下を追加します。
PATH="$PATH":/usr/local/pgsql/bin
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH="$MANPATH":$POSTGRES_HOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
を加えて以上が完了したら
source ~/.bash_profile
データベースを初期化します。(これは一度だけ実行すれば良いです。)$ initdb
これで /usr/local/pgsql/data/ 以下にデータベース領域が初期設定されます。
次にpostgres デーモン(postmaster)を立ち上げます。
デフォルトでは localhost からの接続のみ許可されておりremote host からのアクセスは
一切できないようになっています。とりあえずどこからでもアクセスできるようにしたい場合
は、
/usr/local/pgsql/data/pg_hba.conf の
#host all 0.0.0.0 0.0.0.0 trustの
行頭の#を削除。
なお変更したいときは
chmod 600 pg_hba.conf
しておかないと変更できません。あとでちゃんと
chmod 400 pg_hba.confで元通りにしておくこと。それからいよいよ動作テストです。postmaster が動いていなければ立ち上げます。
$ postmaster -S -i
(あとで起動用スクリプトをつくっておきますが。)
regression 用のディレクトリに移ります。
$ cd href/test/regress
regression test を実施します。
$ gmake all runtest
テスト項目毎に ok/fail が出力されますが "fail" と出てもあわてないこと。
いくつかのエラーはでます。全滅に近ければコンパイルに失敗していますが、3つや4つの
エラーはOKです。(かなりいい加減。)
最後に /usr/local/etc/rc.d/ にpostgresqlの起動スクリプトを書いて実行属性を与えて おきます。(例)
postgresql.sh
#! /bin/sh
rm /tmp/.s.PGSQL.*
su postgres -c "/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data -S -i"
★ rm /tmp/.s.PGSQL.* は異常終了するとロックファイルができて、postgresqlが起動しない ことがあるのでいれておきます。高村のホームに戻る いとうのホームへ
openssl0.9.3aのインストール先にopensslをインストールしておきます。 以下はrootで作業。ftp://ftp.openssl.org/source/ からopenssl-0.9.3a.tar.gz をgetしてきます。 cd /usr/local/src/ tar xzfv openssl-0.9.3a.tar.gz cd openssl-0.9.3a ./Configure FreeBSD-elf (-elfを付けないとエラーになります。3.2からelfなのね。) make clean
make
make rehash
make test
make install で終わり。インストール先はSSLeayと同じ /usr/local/ssl になります。いとうのホームへ
Apache1.3.9+PHP3.0.12+mod_ssl2.4.5のインストールApacheインストールの方針は、mod_sslはApacheと一緒にmake、他はADOで組み込むことに します。 以下はrootで作業します。 すでに apache 1.3.x を動かしている場合は、 /usr/local/apache/bin/apachectl stop でapacheを停止させます。 念のために httpd.confやDocumentRoot以下をバックアップしてから、古い /usr/local/apache以下を削除します。 ソースは /usr/local/src 以下にあるものとします。 apache_1.3.9.tar.gz mod_ssl-2.4.5-1.3.9.tar.gz php-3.0.12.tar.gz です。
tar xvzf /usr/local/src/apache_1.3.9.tar.gz
tar xvzf /usr/local/href/mod_ssl-2.4.5-1.3.9.tar.gz
export LD_LIBRARY_PATH=/usr/local/pgsql/lib
( make の途中で PostgreSQL のライブラリ libpq を見に行けるように)
cd /usr/local/src/apache_1.3.9/
./configure --prefix=/usr/local/apache
cd ../mod_ssl-2.4.5-1.3.9
./configure --prefix=/usr/local/apache \ --with-layout=Apache --with-apache=/usr/local/src/apache_1.3.9 \ --with-ssleay=/usr/local/src/openssl-0.9.3a --with-perl=/usr/bin/perl
終わると
Now proceed with the following commands:
$ cd /usr/local/src/apache_1.3.9
$ make
$ make certificate
$ make install
と言われるが、
cd /usr/local/src/apache_1.3.9/src/modules/standard
で
makemake mod_so.o
を一発かまして mod_so.c から mod_so.o を作ってから
cd /usr/local/src/apache_1.3.9/
OPTIM="-O2" ./configure --prefix=/usr/local/apache --enable-module=most \--enable-module=so
(ここでSSL関係のモジュールが表示されなければ×)
make clean
make
make certificate で鍵の作成がされます。
以下ここを参照のこと。
以下略
と適当に答えておいてから
make install
で取りあえず終了。mod_ssl付きのapacheとしてはこれで動くはずなので確認
します。
cd /usr/local/apache/bin/
./apachectl start
してブラウザで見てみて例の「It Worked!」が表示されれば良し。動いているのが 確認できたら
./apachectl stop する。
次にphp3.0.12を作ります。
cd /usr/local/src/php-3.0.12
./configure --with-pgsql --with-apxs=/usr/local/apache/bin/apxs
make
make install
その後apacheのconfiguration
cd /usr/local/apache/conf
ee httpd.conf
で
LoadFile /usr/local/pgsql/lib/libpq.so
LoadModule php3_module libexec/libphp3.so
LoadModule php3_module libexec/libphp3.so
User wwwadmin
Group www
(あたりまえだけどこのユーザとグループはあらかじめ作っておく)
ServerAdmin webmaster@itoh.co.jp
ServerName db.itoh.co.jp
DirectoryIndex index.html index.php3
と変更・追加してから
/usr/local/etc/rc.d/apache.sh
に
#!/bin/sh
#
apache=/usr/local/apache/bin/httpd
apachectl=/usr/local/apache/bin/apachectl
export LD_LIBRARY_PATH=/usr/local/pgsql/lib
if [ -f $apache ]; then
$apachectl startssl
echo -n ' Apache SSL Server Started '
fi
のような内容を作っておき実行属性をあたえます。 途中のexportはphpを組み込むときのおまじないです。(これが無いとapacheが動きません。)
/usr/local/etc/rc.d/apache.sh
すると
パスフレーズを聴いてくるのでさっきapacheをmake するときの
make certificate
で入力したパスフレーズを入れて起動完了。
やっぱりブラウザで動作確認する。http://localhost/ の他に
https://localhost/ も試してみる。php3の動作確認は
/usr/local/src/php-3.0.12/examples/date.php3をhtdocs以下にコピーを取ってきて
http://localhost/date.php3 して試してみて、現在の時刻がでてくればOK。
しかし、このままではapacheを起動するときにいちいちパスフレーズを入れるのが大変なので
/usr/local/apache/conf/httpd.conf
の中の
SSLPassPhraseDialog builtin
を
SSLPassPhraseDialog exec:/usr/local/apache/etc/ssl/keys/pp-filter
に変更しておいて
/usr/local/apache/etc/ssl/keys/pp-filter
に
#!/bin/sh
echo <** パスフレーズ **>
を書いておき、rootだけが実行できるようにしておきます。(絶対!!)なお、https://localhost/ とやると http://localhost/ と同じところが見えます。(初めからVirtualDomainの設定がされてます。)
いとうのホームへ