PostgreSQL+PHP+Apacheインストール

PostgreSQL8.0の解説

パッケージの削除

# rpm -qa | grep postgres | xargs rpm -e
# rpm -qa | grep httpd | xargs rpm -e
# rpm -qa | grep php | xargs rpm -e

PostgreSQL準備

バージョンアップする場合はpg_dumpしてpg_ctl stopしておきましょう

postgres ユーザーの作成

# /usr/sbin/useradd -d /usr/local/pgsql postgres
# passwd postgres

作業ディレクトリ作成

# mkdir -p /usr/local/src/postgresql-7.4.3
# chown postgres /usr/local/src/postgresql-7.4.3
# mkdir -p /usr/local/pgsql
# chown postgres /usr/local/pgsql

ソース取得 http://www.postgresql.jp/

ソースの展開とパッチ

# su postgres
$ tar xvzf postgresql-7.4.3.tar.gz
$ cd postgresql-7.4.3
$ ./configure

7.3以降はマルチバイトサポートはデフォルトで有効になる
ログを取るときは --enable-syslog ODBC接続する場合は --enable-odbc --with-unixodbc
JDBCドライバをビルドする場合は --with-java でもANT1.5以上がいるらしい

$ make all
$ make check
$ make install

バージョンを上げるとエラーが出てmake checkができないことがある こんな感じ↓

============== removing existing temp installation    ==============
============== creating temporary installation        ==============
============== initializing database system           ==============
============== starting postmaster                    ==============
running on port 65432 with pid 4246
============== creating database "regression"         ==============
/usr/local/src/postgresql- 7.4.2/src/test/regress/./tmp_check/install//usr/local/pgsql/bin/createdb:

relocation error: /usr/local/src/postgresql-7.4.2/src/test/regress/./tmp_check/install//usr/local/pg sql/bin/createdb: undefined symbol: get_progname

pg_regress: createdb failed
make[2]: *** [check] エラー 2
make[2]: 出ます ディレクトリ `/usr/local/src/postgresql-7.4.2/src/test/regress'
make[1]: *** [check] エラー 2
make[1]: 出ます ディレクトリ `/usr/local/src/postgresql-7.4.2/src/test'
make: *** [check] エラー 2

これは古いlibpq.soが残っているかららしい

# rm -fr /usr/local/pgsql/lib

などとして削除しちゃいましょう

contrib関連のインストール

別にインストール必要はありません bisonが必要です

$ su postgres $ cd /usr/local/src/postgresql-7.4.3/contrib $ gmake all $ gmake install ↑ パスの設定 † postgresとPostgreSQLを使用するユーザー全ての.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="$MANPATH":$POSTGRES_HOME/man export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB" 設定の反映

$ source ~/.bashrc データベース初期化

$ initdb --encoding=EUC_JP --no-locale postmasterの起動

$ pg_ctl -w start nobodyユーザーの追加

$ createuser nobody $ n $ n /etc/ld.so.confに以下の一行を追加

/usr/local/pgsql/lib

# /sbin/ldconfig 自動起動の設定

# cp /usr/local/src/postgresql-7.4.3/contrib/start-scripts/linux /etc/rc.d/init.d/postgresql

# chmod 755 /etc/rc.d/init.d/postgresql

# /sbin/chkconfig --add postgresql ↑ Pg.pmのインストール † Pg.pmは7.3から別管理になったそうな PerlからPg.pmで接続する場合は以下を実行

http://gborg.postgresql.org/project/pgperl/download/download.php

pgperl-2.0.2.tar.gz

# tar xvzf pgperl-2.0.2.tar.gz

# cd Pg-2.0.2

# POSTGRES_HOME=/usr/local/pgsql

# export POSTGRES_HOME

# perl Makefile.PL

# make

# make test

# make install ↑ syslog関連設定 † 参考サイト

$ vi /usr/local/pgsql/data/postgresql.conf

log_connections = true # 接続ログを残す log_statement = true # 全てのSQL文を記録 debug_print_parse = true # パースツリーを出力します debug_print_rewritten = true # 書き換え後のパースツリーを出力します debug_print_plan = ture # 問合せプランを出力します syslog = 2 # 出力を制御します(0:出力なし 1:syslogとstdoutに出力 2:syslogのみに出力) syslog_facility = 'LOCAL0'

$ pg_ctl stop $ pg_ctl -w start PostgreSQLのログファイルは別に吐き出すように設定

$su

# vi /etc/syslog.conf

local0.* /var/log/postgres # 他にlocal0を使っていないか注意

# ps ax | grep syslog

# kill -HUP 調べたsyslogdのPID ログローテーション設定

# vi /etc/logrotate.d/postgres

"/var/log/postgres" {

  rotate 4
  weekly
  sharedscripts
  postrotate
    /usr/bin/killall -HUP syslogd
  endscript

} ↑ Apacheのインストール † http://www.apache.or.jp/

# tar xvzf apache_1.3.31.tar.gz

# cd apache_1.3.31

# OPTIM="-O2" ./configure --enable-module=so --enable-module=rewrite

# make

# make install Options

FollowSymLinks? シンボリックリンクを有効 Indexes ディレクトリ内丸見え Includes SSI有効 ExecCGI CGI有効 MultiViews? ブラウザを判定(?)

AllowOverride?

AuthConfig? 認証有効 FileInfo? ドキュメントタイプのディレクディブ使用許可 Indexes ディレクトリインデックス制御 Limit ホストへのアクセス制御

Apacheのバージョンを表示させないようにするには httpd.conf において

ServerSignature Off ServerTokens ProductOnly # 他にminimal,OS,Fullが指定できる 画像ファイルはログに記録しないためには httpd.conf において

IfModule mod_setenvif.c>

  # no add images log
  SetEnvIf Request_URI "\.(gif)|(jpg)|(png)$" no_log

.....

CustomLog /usr/local/apache/logs/access_log combined env=!no_log ↑ PHP4のインストール †

# tar xvzf php-4.3.7.tar.gz

# cd php-4.3.7

# ./configure --with-pgsql --with-apxs=/usr/local/apache/bin/apxs --enable-zend-multibyte --enable-mbstring --enable-mbregex

GDを使用する場合はこんな感じ

# ./configure \

php.iniの設定

# cp /usr/local/src/php-4.3.7/php.ini-dist /usr/local/lib/php.ini php.iniの編集

;; 出力バッファリングを有効にする output_buffering = On

;; mb_output_handlerによる出力変換を有効にする output_handler = mb_output_handler

;; HTTPヘッダ charset を設定 default_charset = Shift_JIS

;;日本語主体で使用 mbstring.language = Japanese

;; 内部エンコーディングをEUC-JPに設定 mbstring.internal_encoding = EUC-JP

;; HTTP入力エンコーディング変換をautoに設定 mbstring.http_input = auto

;; SJISに変換 mbstring.http_output = SJIS

mbstring.encoding_translation = On 必要? mbstring.detect_order = auto 必要?

;; 無効な文字を出力しない mbstring.substitute_character = none;

mbstring.func_overload = 0

;; 4.1.0から推奨 register_globals = Off

# make

# make install httpd.confの書き換え

#AddType application/x-httpd-php .php のコメントをはずしてApache再起動

CGI版をインストールする場合(4.3.0以降は不要)

# make distclean

# ./configure --with-pgsql --enable-track-vars --enable-force-cgi-redirect --enable-mbstring --enable-mbstr-enc-trans

# make

# make install これで/usr/local/bin/php にバイナリがインストールされる

↑ Apache自動起動の設定 † /etc/rc.d/rc.localに以下を記述

if [ -x /usr/local/apache/bin/apachectl ]; then

 /usr/local/apache/bin/apachectl start

fi ↑ ログのローテーション設定 † インストールしたままではログファイルが肥大してディスク容量を圧迫するので必ず設定しましょう /etc/logrotate.d/apache ファイルを作成して以下を記述

"/usr/local/apache/logs/access_log" "/usr/local/apache/logs/error_log" {

 rotate 4
 compress # ZIP圧縮する場合
 weekly
 sharedscripts
 postrotate
 /usr/local/apache/bin/apachectl restart
 endscript

}

# /usr/sbin/logrotate -f /etc/logrotate.d/apache コマンドにて /usr/local/apache/logs 内に access_log.1 error_log.1 が作成されていればOK

$_GET GETを通じて送信された内容が格納されます $_POST POSTを通じて送信された内容が格納されます $_COOKIE HTTPクッキーの内容が格納されます $_SERVER サーバ変数の内容が格納されます(例:REMOTE_ADDR) $_ENV 環境変数が格納されます $_REQUEST GET, POST, クッキーの内容が格納されます $_SESSION セッションモジュールにより登録された内容が格納されます

↑ ミニメモ † PostgreSQL7.3からはホームディレクトリの .pgpass に、 データベースホストとユーザパスワードが記述できるようになりました。 環境変数 PGPASSWORD ではなく、.pgpass を使用するようにしてください。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS