*PostgreSQL+PHP+Apacheインストール [#v11f3a4a]
#contents

[[PostgreSQL8.0の解説:http://itpro.nikkeibp.co.jp/members/ITPro/oss/20050124/155152/]]

*パッケージの削除 [#je4bf41d]
 # rpm -qa | grep postgres | xargs rpm -e
 # rpm -qa | grep httpd | xargs rpm -e
 # rpm -qa | grep php | xargs rpm -e

*PostgreSQL準備 [#va7cd56a]
バージョンアップする場合は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/

*ソースの展開とパッチ [#nb14e5e2]
 # 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以上がいるらしい~
--without-readline を指定しろとか言われると readline-devel と libtermcap-devel を入れてみよう

 $ 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関連のインストール [#z3453a89]
別にインストール必要はありません
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
--enable-mbstr-enc-trans は4.3.0以降は廃止
--enable-trans-sid は4.2.0移行は常にコンパイルされます
コマンドライン版は4.3.0から常に構築される
CGI版とCLI版は違うものらしいぞっ


GDを使用する場合はこんな感じ
# ./configure \
--with-pgsql --with-apxs=/usr/local/apache/bin/apxs \
--enable-zend-multibyte --enable-mbstring --enable-mbregex \
--with-gd --with-zlib-dir=/usr --with-jpeg-dir=/usr \
--with-png-dir=/usr --with-freetype-dir=/usr --with-ttf \
--enable-gd-native-ttf --enable-gd-jis-conv
libpng, libjpeg, freetype がないと言われたら devel を入れてみる

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 を使用するようにしてください。
#exlink


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