最終更新日:2000-11-27

Copyright (c)1999,2000
M.Dosho, DO-Building Software.

Menu
[ トップページ ]
[掲示板]
ネットワークの構成
Linuxの導入
Linuxの設定
DreamCastを接続しよう
温泉に行こう
(あつまれぐるぐる温泉)

アプリケーションの導入

SMBサーバを立ち上げよう
(Sambaの導入/設定)

プリンタサーバを構築しよう
(Sambaの設定)
ルータ環境を構築しよう
(IP forwarding / IP masqueradeの設定)
Webサーバを立ち上げよう
( Apacheの導入/設定)

データベースを立ち上げよう
(PostgreSQLの導入/設定)

Webサーバを拡張しよう
(PHPの導入/設定)
グループウェアで遊んでみよう
(SkyBoardの導入/設定)
Webアプリケーションサーバを使ってみよう
(Zopeの導入/設定)

Webアプリケーションを作ってみよう(1) PHP+PostgreSQL
  
1. 開発環境について
  2. 開発ユーザ・DBの作成
  3. 図書管理システムの開発
  4. データベースの設計

このページはNetscape Navigator 4.0以上、もしくはInternet Explorer 4.0以上でご覧になってください。
このページはMacromedia Dreamweaver 3.0Jで作成しています。
このページの画像、記事等の無断転載を禁止します。

PostgreSQLとは

 PostgreSQLはオープンソースなデータベースソフトです。商用データベースのフリー版(Sybaseなど)を導入する方法も考えましたが、PostgreSQLにはPerl等とのインタフェースも用意されており、今回はWebアプリケーションを構築してみたいという希望もあったので、比較的容易に開発が可能なPostgreSQLを選択しました。

PostgreSQLの導入

 フルインストールを行なっている為、今回はPostgreSQLはインストール済みです。バージョンはLaser5 Linux6.2に付属のバージョン6.5.3です。

 インストールされていない場合は、RPM形式パッケージが準備されていますのでこちらからインストール可能です。インストールはGnoRPMを用いるか、コマンドラインから下記コマンドでインストールできます。

[root@linux01]# rpm -ivh postgresql_6.5.3-1LL3.i386.rpm
[root@linux01]# rpm -ivh postgresql-server_6.5.3-1LL3.i386.rpm
[root@linux01]# rpm -ivh postgresql-devel_6.5.3-1LL3.i386.rpm
[root@linux01]# rpm -ivh postgresql-jdbc_6.5.3-1LL3.i386.rpm
[root@linux01]# rpm -ivh postgresql-odbc_6.5.3-1LL3.i386.rpm
[root@linux01]# rpm -ivh postgresql-perl_6.5.3-1LL3.i386.rpm
[root@linux01]# rpm -ivh postgresql-python_6.5.3-1LL3.i386.rpm
[root@linux01]# rpm -ivh postgresql-tcl_6.5.3-1LL3.i386.rpm

PostgreSQL用アカウントの登録

 PostgreSQLはセキュリティ上の理由の為、rootアカウントでDBサーバを起動できないようになっています。まずはPostegreSQL用のユーザを追加します。(初期インストール時にPostgreSQLをインストールしている場合は自動的にpostgres用アカウントは作成されます。)

[root@linux01]# useradd postgres -g postgres -d /home/postgres

.bash_profileの修正

 PostgreSQLサーバを起動するユーザアカウント(postgres)にはパスの設定等を行わなければなりません。そこで、.bash_profileに下記の設定を追加します。

export PGLIB=/usr/lib/pgsql
export PGDATA=/home/postgres/data
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"

 設定後は下記コマンドを実行して設定を反映させます。(または再ログオンでも可)

bash$ source ~/.bash_profile

データベースの初期化

 初期状態ではデータベースが存在していません。そこでまずはデータベースの初期化を行います。postgresでログオンした後、下記コマンドにてデータベースを作成します。.bashrcのPGDATAで設定したディレクトリにデータベースが作成されます。このコマンドを実行したユーザ(今回はpostgres)がこのデータベースの管理者となります。

bash$ su -
[root@linux01]# mkdir /home/postgres
[root@linux01]# mkdir /home/postgres/data
[root@linux01]# chown -R postgres.postgres /usr/postgres
[root@linux01]# exit
bash$ initdb

データベースサーバの起動

 下記のコマンドでデータベースサーバを起動します。前述の通りrootアカウントでは起動できないのでユーザpostgresでログオンした後、下記のコマンドを実行します。

bash$ postmaster -S -i

 指定したオプションはそれぞれ下記の意味になります。

オプション 機能
-S サーバをデーモンとして起動する。
-i 他のホストからの接続を許可する。

PostgreSQL 7.xへの入替え作業

 待望のPostgreSQL 7.xがリリースされました。今回のリリースより外部参照キーが実装されたので、早速入替えを行なってみることにしました。今回はバージョン7.0.2を導入してみました。今回はRPMを入手できなかったので、ソースコードよりコンパイルを行ないました。

 なお、この作業を行なう前に、必ずpg_dumpコマンドを利用してデータベースのバックアップを行ないましょう。

 まず、アーカイブの入手ですが、これはRing Server Projectのミラーサイトより入手させていただきました。

 入手したアーカイブを下記のコマンドで解凍します。2000年11月現在でいくつかのパッチがリリースされていますので、こちらも同様にインストールします。(今回は石井達夫氏がまとめられているjumbo.patchを利用させていただきました。)

[root@linux01]# cd /usr/local/src
[root@linux01]# tar xvfz postgresql-7.0.2.tar.gz
[root@linux01]# cd postgresql-7.0.2
[root@linux01]# gunzip -c ../jumbo-20001025.patch.gz | patch -p1
[root@linux01]# cd ..
[root@linux01]# chown -R postgres.postgres postgresql-7.0.2

 これ以降の作業はPostgreSQLのスーパーユーザにするアカウントで実施します(今回はpostgres)。INSTALLファイルの指示どおりにコンパイル作業を実施します。今回はインストールベースディレクトリに/usrを指定、マルチバイト指定(EUC_JP)としています。また、インストール前にはpostmasterが終了されていることを必ず確認してください。(起動している場合はプロセスを終了させる)

bash$ cd /usr/local/src/postgresql-7.0.2/src
bash$ ./configure --enable-multibyte=EUC_JP
bash$ make clean
bash$ make all
bash$ make install
bash$ cd ../doc
bash$ make install

 今回は/usr/localにインストールを行ないましたので、.bash_profileも変更する必要があります。(※:今回の環境には6.5.3と7.0.2が共存している状態になっているので、PATHの順番には注意してください。)

export PGHOME=/usr/local/pgsql
export PGLIB=$PGHOME/lib
export PGDATA=/home/postgres/data
export PATH=$PGHOME/bin:"$PATH"
export LD_LIBRARY_PATH="$PGLIB":"$LD_LIBRARY_PATH"

 下記コマンドを実行後、initdbコマンドでデータベースを初期化します。


Copyright (c)1999,2000 M.Dosho, DO-Building Software
このページへのご意見、ご感想はこちらまで\
土性雅史<dual@po.jah.ne.jp>