HOMEインデックス

自宅サーバー構築記


6.PHP4+PostgreSQL環境の作成

a. はじめに

  • PHPとPostgreSQLで何か面白いことはできないかとインストールすることにしました。今回はコンパイル時にオプションを指定する必要があるためパッケージによるインストールは行わず、個別にプログラムをダウンロードしてコンパイル、インストールを行いました。途中、分からないことだらけで試行錯誤の連続でしたが、なんとかPHPが動作するところまでこぎつけました。こんがらがった頭の中を整理する意味で以下の記録を作成しました。使用したプログラムのバージョンは以下のとおり。
  • postgreSQL/7.3.1
  • apache/1.3.28
  • PHP4/4.3.3

b. PostgreSQLのインストール

  • まずpostgreSQL専用のユーザを作成します。postgreSQLはapache等と異なりroot以外のユーザでインストール、起動を行う必要があります。これはセキュリティの考慮によるものなのだそうです。専用ユーザとするpostgresは既に登録済みだったので新規登録は行いませんでしたがホームディレクトリが/var/lib/pgsqlとなっているため、/usr/local/pgsqlに変更しました。

# usermod -d /usr/local/pgsql postgres

  • ホームディレクトリはシェルbashの環境変数「.bashrc」が存在する場所を表し、いろいろな環境変数をユーザ固有に定義できます。以下は「.bashrc」に追加した記述です。

PATH="$PATH":/usr/local/pgsql/bin → コマンドサーチパス
export POSTGRES_HOME=/usr/local/pgsql → PostgreSQLがインストールされているディレクトリ
export PGLIB=$POSTGRES_HOME/lib → PostgreSQLのライブラリがインストールされているディレクトリ
export PGDATA=$POSTGRES_HOME/data → PostgreSQLで作成するデータベースファイルを格納するディレクトリ
export MANPATH=$POSTGRES_HOME/man → PostgreSQLのオンラインマニュアルがインストールされているディレクトリ。
export LD_LIBRARY_PATH="$PGLIB" → PostgreSQLのクライアント用sharedライブラリがインストールされているディレクトリ

  • 上記追加事項を反映させるには一旦LOGOFFしてから再度LOGONしなおすか以下のコマンドで再読み込みする必要があります。

# source ~/.bashrc

  • postgreSQLのバージョンは7.3.1。ソースディレクトリは/usr/local/src/postgresql-7.3.1。インストール先は/usr/local/pgsqlとし予めrootでディレクトリを作成しておきます。また所有者をpostgresに変更します。

# mkdir /usr/local/pgsql
# mkdir /usr/local/src/postgresql-7.3.1
# chown postgres /usr/local/pgsql
# chown postgres /usr/local/src/postgresql-7.3.1

  • ダウンロードしたソースを/usr/local/pgsrl/srcに移動してソースの展開、コンパイル、インストールを行います。このときユーザはpostgresに変更します。

# su postgres
$ cd /usr/local/src
$ tar zxvf postgres-7.3.1.tar.gz
$ cd postgresql-7.3.1
$ ./configure --enable-multibyte
$ make
$ make install

  • データベース領域の初期化を以下のコマンドで行います。環境変数PGDATAに設定したディレクトリ/usr/local/pgsql/dataがデータ領域として使用されます。

$ initdb

  • データベースを起動するにはpostmasterを直接起動する方法とpg_ctlコマンドを使用する方法があります。

$ postmaster -S -i

$ pg_ctl start

  • データベースを終了するにはpg_ctlコマンドを使用します。

$ pg_ctl -w stop

  • データベースの起動と停止をwebminの「起動及びシャットダウン」に登録しておきます。これでOS起動時に自動的にデータベースが起動されます。このとき注意したいのがpostmasterコマンドを実行する前にユーザをpostgresに変更するということです。終了時はpg_ctl -w stopを使用します。

su postgres -c "/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data -S -i" ← 起動時

/usr/local/pgsql/bin/pg_ctl -w -D /usr/local/pgsql/data stop ←  終了時

c. Apacheのインストール

  • 既に動作しているapacheは1.3.27。この環境は残したまま新しいapache_1.3.28をインストールしました。インストール先は/use/local/apache。まず/usr/local/srcにダウンロードしたapache-1.3.28.tar.gz.tarを移動。以下のコマンドでコンパイル、インストールを行いました。ユーザはroot。confugureのオプションに指定したものはPHPをインストールするときにapacheがDSO(Dynamic Shared Object)サポートになっている必要があるためです。

# cd /usr/local/src
# tar xzvf apache_1.3.28.tar.gz.tar
# cd apache_1.3.28
# ./configure --enable-module=most --enable-shared=max
# make
# make install

  • apacheの起動方法

/usr/local/apache/bin/apachectl start

  • apacheの終了方法

/usr/local/apache/bin/apachectl stop

  • apacheのconfigureファイルのチェック方法

/usr/local/apache/bin/apachectl configtest

d. PHP4のインストール

  • ダウンロードしたPHPは「php-4.3.3RC4.tar.gz.tar」これを/usr/local/srcに移動して以下のコマンドで展開、コンパイル、インストールを行いました。ユーザはroot。

# cd /usr/local/src
# tar xzvf php-4.3.3RC4.tar.gz.tar
# cd php-4.3.3RC4
# ./configure --with-pgsql --with-apxs=/usr/local/apache/bin/apxs --enable-mbstring --enable-mbstr-enc-trans
# make
# make install

  • configureに指定したオプションを説明すると「--with-pgsql」はDBインターフェースとしてpostgreSQLを有効にします。「--with-apxs=/usr/local/apache/bin/apxs」はapacheから呼ばれるモジュール版PHPを作成するためのもので、apacheの補助ツールapxsの場所を示します。「--enable-mbstring」はマルチバイト(日本語)処理を行う一群の関数を有効します。「--enable-mbstr-enc-trans」はHTTPからの入力を自動的にPHPが使用する文字コードに変換する機能を有効にします。
  • apacheのhttpd.confを編集し、従来と同じ機能、例えばcgiの利用、.htaccessファイルの使用が有効になるようにします。
  • httpd.confには以下の行が追加されていることを確認します。

Loadmodule php4_module libexec/libphp4.so

  • PHPの拡張子.phpが有効になるように以下の2行を追加します。

AddType application/x-httpd-php .php
AddType application/x-httpd-php-sourse .php

  • 最後に/usr/local/src/php-4.3.3RC4/php.ini-distを/usr/local/lib/php.iniとしてコピーします。

# cp /usr/loca/src/php-4.3.3RC4/php.ini-dist /usr/local/lib/php.ini

  • 以上でPHPのインストールは完了。以下のPHPスクリプトをxxx.phpという名前で作成しブラウザから表示させます。PHPのテスト画面が表示されれば成功です。

<?php
phpinfo();
?>

HOMEインデックス