戦略
WebベースのデータベースプラットフォームとしてApache+PHP3+PostgreSQLを使用する場合のインストールと設定方法を説明します。 Apache、PHP3、および PostgreSQL の詳細については、ソフトウェアに付属のドキュメント、Linux HOWTO ファイル、および次のサイトを参照してください。
Apache: http://www.apache.org
PHP3: http://www. php.net
PostgreSQL: http://www.postgresql.org
1. PostgreSQL のインストールとセットアップ
1.1 ソース プログラムの入手
PostgreSQL の最新バージョンのソース プログラムは、http:// www.postgresql.org。現在の最新バージョンは 6.5.X です。以下では、バージョン 6.4 を例としてインストール方法を説明します。
1.2 準備
PostgreSQL をコンパイルするには、GNU make バージョン 3.75 以降 (gmake -v でバージョン番号を確認する)、GNU C バージョン 2.7.2 以降 (gcc -v でバージョン番号を確認する)、および bison と flex (通常はこれら 2 つのツールはすべてインストールされています)。
PostgreSQLのデフォルトのインストール場所は/usr/local/pgsql/で、システムファイルには約3~10Mの容量が必要です。付属のテスト プログラムは実行時に約 20M のスペースを必要とするため、インストール中に十分なスペースを確保する必要があります。/usr/local/pgsql/ ディレクトリには 50M 以上のスペースを確保することをお勧めします。また、ソースプログラムの展開とコンパイルには、約 30 ~ 60M のスペースが必要です。
マルチユーザーアプリケーション環境の場合は、postgres のような専用のユーザー名を設定することをお勧めします:
$ su まず root としてログインします
#/usr/sbin/adduser postgres
さらに、PostgreSQL は、次のような共有メモリメカニズムを使用しますシステムV。 FreeBSD はデフォルトではこのメカニズムをサポートしていません。使用中のカーネルの設定ファイルに以下の項目が無い場合は、カーネルを追加して再コンパイルする必要があります。
オプション SYSVSHM
オプション SYSVSEM
オプション SYSVMSG
ソースプログラムを保存するディレクトリを作成 /usr/local/src /pgsql とインストールディレクトリ /usr /local/pgsql:
#mkdir /usr/local/pgsql
#chown postgres:postgres /usr/local/pgsql
#mkdir /usr/local/src
#mkdir /usr/local /src/pgsql
#chown postgres :postgres /usr/local/src/pgsql
1.3 コンパイル
postgres ユーザーとしてログインし、ソースプログラムを解凍します: # su postgres
$ tar -xzvf /tmp/postgresql-v6.4 .tar.gz
[ダウンロードファイルを /tmp ディレクトリに保存すると仮定]
完了後、以下で postgresql-v6.4 ディレクトリが生成されるはずです:
$ cd /usr/local/src/pgsql/postgresql-v6 .4/src
$ ./configure --with-mb=EUC_CN
このうち --with-mb= はシステムのデフォルトの文字エンコーディングを指定します。 GBコード(EUC_CN)のほか、日本語(EUC_JP)、韓国語(EUC_KR)、台湾(EUC_TW)、UNICODE、MULE_INTERNAL、LATIN1なども指定できます。
バージョン 6.3.2 を使用する場合は、--with-template=... を使用してオペレーティング システムを指定する必要があることに注意してください。詳細については、ソース プログラムに添付されているドキュメントを参照してください。
configureが正常に完了すると、GNUmakefile、Makefile.global、Makefile.portなどのファイルが生成されます。 $ gmake all は、コンパイルが完了すると次の情報を表示します。 PostgreSQL はすべて正常にインストールされます。
インストール:$ gmake install
正常に完了すると、PostgreSQlの実行ファイルとライブラリファイルが/usr/local/pgsqlディレクトリにインストールされます。
インストールに含まれるドキュメント:
$ gmake install-man
$ cd /usr/local/src/postgresql-v6.4/doc
$ make install
この時点でPostgreSQLのコンパイルとインストールは完了したので、やってみましょう。初期設定を開始します。
1.4 初期設定
環境変数を設定します:
使用するシェルが bash の場合、次のコマンドを .bashrc に追加します:
PATH="$PATH":/usr/local/pgsql/bin
export POSTGRES_HOME=/usr/ local /pgsql
Export PGLIB=$POSTGRES_HOME/lib
Export PGDATA=$POSTGRES_HOME/data
Export MANPATH="$MANPTH":$POSTGRES_HOME/man
Export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
その後、source ~ / .bashrc
使用するシェルが csh/tcsh の場合は、.cshrc に次のコマンドを追加します:
setenv PATH="$PATH":/usr/local/pgsql/bin
setenv POSTGRES_HOME=/usr/local/pgsql
setenv PGLIB =$POSTGRES_HOME/lib
setenv PGDATA=$POSTGRES_HOME/data
setenv MANPATH="$MANPTH":$POSTGRES_HOME/man
setenv LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
次にsource ~/.cshrcを実行します
A上記環境変数は、データベースを使用するすべてのユーザーが設定する必要があります。
データベースディレクトリの初期化:
$ initdb
使用できるパラメータ:
pgdata=/pgsql/dbはデータベースディレクトリを指定し、環境変数PGDATAで指定された場所がデフォルトで使用されます
pgencoding=EUC_CNは文字を指定しますデータベースのエンコーディング。configure がデフォルトのエンコーディングで使用されるときに指定されます。
なお、initdbを実行するユーザーは、作成されたデータベースディレクトリの管理権限を持つことになります。
次のコマンドを使用してPostgreSQLを起動します:
$ postmaster -S
テストプログラムを実行します:
$ cd test/regression
$ gmake all runtest
テストプログラムが正常に動作すれば、PostgreSQLも正常に動作することになります。
システム起動時に PostgreSQL が自動的に起動するようにするには、次の変更を行う必要があります:
まず root でログインします
$ su
Linux: /etc/rc.d/rc.local に次の内容を追加します:
POSTGRESDIR=/usr/ local/pgsql
if [ -x $POSTGRESDIR/bin/postmaster -a
d $POSTGRESDIR/data ];then
rm -f /tmp/s.PGSQL.5432
su - postgres -c "postmaster -S -i"
echo -n 'postmaster'
fi
FreeBSD:
pgsql.sh という名前のファイルを /usr/local/etc/rc.d に次の内容で作成します:
#!/bin/sh
POSTGRESSDIR= /usr/ local/pgsql
if [ -x $POSTGRESDIR/bin/postmaster
-a -d $POSTGRESDIR/data ];then
rm -f /tmp/s.PGSQL.5432
su - postgres -c "postmaster - S -i "
echo -n 'postmaster'
fi
pgsql.sh ファイルの権限を変更します:
# chmod 755 pgsql.sh
これでPostgreSQLのインストールと設定は基本的に完了しましたが、今のところデータベースを使用できるユーザーは postgres です。
他のユーザーがデータベースを利用するには、データベースユーザーにログインしてユーザーデータを生成する必要があります。
たとえば、WebサーバーApache経由でクエリする場合、ユーザー名はnobodyです:
% createuserEveryone
unixを使用するにはユーザーのpostgres IDを入力するかRETURNしてください
ユーザーID: 1000 ->1000
ユーザー「nobody」はdataaseの作成を許可されていますか( y/n)n
Is user "nobody" allowed to add users?(y/n)n
createuser: 誰も正常に追加されました
ユーザーを削除するには、destroyuser username コマンドを使用できます
PostgreSQL は複数のデータベースを管理できます同時に実行できます (ただし、それらの間で結合などのデータベース操作は実行できません)。新しいデータベースを作成します:
$ createdb データベース名
新しく作成されたデータベースは、/usr/local/pgsql/data/base (環境変数 PGDATA で指定されたパスのベース ディレクトリの下) の同名のディレクトリに配置されます。 )。データベース名パラメータを省略した場合、ユーザー名が自動的にデータベース名として使用されます。
例えば、db1という名前のデータベースは/usr/local/pgsql/data/base/db1ディレクトリに保存されます。 initlocation コマンドを使用して他の場所を指定することもできます:
$ initlocation /pgsql/data
$ export PGDATA2=/pgsql/data
$ createdb -D PGDATA2 db2
データベース db2 は /pgsql/data ディレクトリに保存されます。さらに、PostgreSQL バージョン 6.4 では、データベースの作成時にテキスト エンコーディングを指定できます: createdb -E "文字エンコーディング" "文字エンコーディング" configure、initdb を参照してください。
データベースの削除:destroydbデータベース名
PostgreSQLの最も基本的なデータベース管理ツールは
pgsqlです 基本的な使い方:pgsqlデータベース名
1.5 セキュリティ設定:
PostgreSQLはホストベースの認証(HBA)とパスワードベースの認証方法を提供します セキュリティメカニズムユーザーの本人認証やユーザーの操作権限の設定など。
1.5.1 HBAモードとパスワードによるユーザー認証モード
HBAモードの設定ファイルはpg_hba.confです。形式は次のとおりです:
Host DBNAME IP_ADDRESS ADDRESS_MASK USRAUTH [AUTH_ARGUMENT]
Host: 固定フラグ、変更不可
DBNAME: データベース名、all はすべてのデータベースを表します
IP_ADDRESS、ADDRESS_MASK: IP アドレスまたはサブネットを指定します (例: 192.168.10.0 /) 255.255.255.0
USERAUTH: ユーザー認証方法。ident (RFC1413)、trust (認証なし)、reject (限定アクセスの拒否)、パスワード [passwd_file] (フラット ファイル パスワード ファイルに基づく認証)、crypt (PostgreSQL のシステム データベース pg_shadow を使用)認証用)、kbr4/kbr5 (Kerberos V4/V5 認証)。 Web データベースとして使用する場合、ローカルでログインするときに passwd パスワード ファイルを次のように設定できます:
Host all 127.0.0.1 255.255.255.255 passwd passwd
passwd ファイルのデフォルトの場所は /usr/local/pgsql/data です。データベース管理権限があれば、ユーザーは pg_passwd コマンドを使用してこのファイルを管理できます (注: フラット ファイルのパスワード認証方法では、プレーン テキストを使用してパスワードを送信するため、ネットワーク上の他のホストからログインするには、crypt 認証方法を使用することをお勧めします) )。
1.5.2 ユーザーの操作権限設定
SQLコマンドのgrant/revokeを使用して、ユーザー/ユーザーグループがselect/insert/update/ruleコマンドを使用できるかどうかを設定します。
SQLの標準によれば、データテーブルファイル(テーブル)を最初に作成するときは、テーブルファイルを作成したユーザーのみがアクセス権を持ちます。ユーザーにアクセス許可を割り当てるには、grant コマンドを使用できます。
grant
Permission type: all,select,insert,update,delete,rule
Table name: set Tableユーザーのアクセス許可のファイル
ユーザー/グループ: public (すべてのユーザー) またはユーザー名/グループ名
revoke コマンドは、grant コマンドの逆です:
テーブルに設定されているユーザー権限は、pgsqlのzコマンドで確認できます。
2.Apache+PHP3のインストールと設定
2.1 ソースプログラム
ApacheとPHP3の最新版のソースプログラムはhttp://www.apache.org/とhttp://www.php.net/にあります。
以下では、Apache 1.3.6 と PHP3 3.0.5 を例に挙げます。
2.2 コンパイル
ApacheとPHP3のソースプログラムが/tmpディレクトリに保存されているとして、まずrootでログインします:
$ su
# cd /usr/local/src
# tar -xzvf /tmp/apache_1.3.6 .tar.gz
# ./configure
# cd /usr/local/src
# tar -xzvf /tmp/php3-3.0.5.tar.gz
# cd php-3.0.5
# ./configure -- with-pgsql --with-apache=
../apache_1.3.6 --enable-track-vars
# make
# make install
最後のステップでは、/usr/local/src/apache_1.3.6/src/ が作成されます。 modules/php3 ディレクトリに移動し、次のファイル
をこのディレクトリにコピーします:
Makefile.libdir libmodphp3.a mod_php3.c php_version.h Makefile.tmpl libphp3.module mod_php3.h
Apache をコンパイルしてインストールします:
環境変数 LD_LIBRARY_PATH を設定します。 cshおよびtcshシェル次のコマンドを使用します。
#setenv ld_library_path/usr/local/pgsql/lib
shおよびbashに次のコマンドを使用します。 # cd /usr/local/ src/apache_1.3.6
# ./configure --activate-module=src/modules/php3/libphp3.a
# make
# make install
2.3 設定ファイルを修正
# cd /usr /local/src/php-3.0 .5
# cp php3.ini-dist /usr/local/lib/php3.ini
/usr/local/apache/etc/srm 内の以下の 2 行の前にある # 番号を削除します。 conf,
.php3の場合 PHP3ファイルの拡張子として、.phtmlを.php3に変更します:
#AddType application/x-httpd-php3 .php3
#AddType application/x-httpd-php3-source .phps
DirectoryIndex内srm.conf ファイルの以下のindex.php3を追加します:
DirectoryIndexindex.htmlindex.php3
2.4 Apacheの起動
# /usr/local/apache/sbin/apachectl start
apachectl start: httpd starting
Webブラウザを起動しますローカル マシンにアクセスし、アドレス バーに「://localhost/」と入力します (または、別のコンピューターのブラウザのアドレス バーに Apache サーバーのアドレスを入力します)。Apache の開始画面が表示されたら、Apache が正常にインストールされたことを意味します。 PHP3 モジュールが適切に動作しているかどうかをテストしてみましょう:
# cd /usr/local/apache/share/htdocs/
# ln -s /usr/local/src/php-3.0.5
そしてアドレスバーに
を入力します。ブラウザの http://localhost/php-3.0.5/examples/date.php3
php3ファイルの実行結果が正常かどうかを観察します。 date 関数が正しい結果を表示できれば、PHP3 モジュールが正しく動作していることを意味します。
この時点で、Apache Web サーバーとサーバーサイド スクリプト言語 PHP3 に基づく PostgreSQL データベース システムのインストールが完了しました :-)