PostgreSQLをソースからインストールした時の備忘録です。

PostgreSQL公式
http://www.postgresql.org/

PostgreSQLのバージョン
postgresql-8.4.4.tar.gz

使用OS
CentOS 32bit

インストール方法
①「PostgreSQL」のグループ、ユーザを作成する。

[root@testmachine ~]# groupadd postgres
[root@testmachine ~]# useradd -g postgres -d /usr/local/pgsql -s /bin/sh postgres

②「PostgreSQL」に必要なパッケージのインストールを行う。
[root@testmachine ~]# yum -y install readline-devel zlib-devel

③「PostgreSQL」のダウンロードをする。
[root@testmachine ~]# wget http://wwwmaster.postgresql.org/redir/311/h/source/v8.4.4/postgresql-8.4.4.tar.gz

④ダウンロードした「PostgreSQL」を解凍する。
[root@testmachine ~]# tar zxvf postgresql-8.4.4.tar.gz

⑤解凍した「PostgreSQL」に移動する。
[root@testmachine ~]# cd postgresql-8.4.4

⑥「./configure」を実行する。
[root@testmachine postgresql-8.4.4]# ./configure --prefix=/usr/local/pgsql/ --bindir=/usr/bin/ --libdir=/usr/lib/pgsql --datarootdir=/usr/share/pgsql --sysconfdir=/etc

⑦「./configure」終了後、コンパイル、インストールを行う。
[root@testmachine postgresql-8.4.4]# make && make install

⑧データベースを作成する。
[root@testmachine ~]# mkdir -p /var/pgsql/db
[root@testmachine ~]# chown -R postgres:root /var/pgsql/
[root@testmachine ~]# su - postgres
-sh-3.2$ initdb -D /var/pgsql/db/
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale ja_JP.UTF-8.
The default database encoding has accordingly been set to UTF8.
initdb: could not find suitable text search configuration for locale ja_JP.UTF-8
The default text search configuration will be set to "simple".

fixing permissions on existing directory /var/pgsql/db ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 32MB
creating configuration files ... ok
creating template1 database in /var/pgsql/db/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects' descriptions ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the -A option the
next time you run initdb.

Success. You can now start the database server using:

    postgres -D /var/pgsql/db
or
    pg_ctl -D /var/pgsql/db -l logfile start

-sh-3.2$ exit ← 作成後ログアウト
)ここでは「/var/pgsql/db」直下に「PostgreSQL」で使用するデータベースを作成した。

⑨「PostgreSQL」のログ保存先を作成する。
[root@testmachine ~]# mkdir /var/log/pgsql
[root@testmachine ~]# chown postgres:root /var/log/pgsql/

⑩起動スクリプトを作成する。
[root@testmachine ~]# vi /etc/rc.d/init.d/postgresql
#!/bin/sh
# postgresql script
#
#
# chkconfig: - 64 36
# description: Starts and stops the PostgreSQL backend daemon that handles \
#              all database requests.

#include functions
. /etc/rc.d/init.d/functions

#PostgreSQL DataBase
POSTDB=/var/pgsql/db

#PostgreSQL Log File
LOG=/var/log/pgsql/postgres.log

start() {

        action $"Starting Postgresql: "  su - postgres -s /bin/sh -c "/usr/bin/pg_ctl -D $POSTDB -l $LOG start 2>&1 > /dev/null"
        RESULT=$?

        if [ $RESULT -eq 0 ] ; then

                touch /var/lock/subsys/postgresql

        else

                failure

        fi

        }

stop() {

        action $"Stoping Postgresql: " su - postgres -s /bin/sh -c "/usr/bin/pg_ctl -D $POSTDB -l $LOG stop 2>&1 > /dev/null"
        RESULT=$?

        if [ $RESULT -eq 0 ] ; then

                rm /var/lock/subsys/postgresql

        else

                failure

        fi

        }

status() {

        su - postgres -s /bin/sh -c "/usr/bin/pg_ctl -D $POSTDB -l $LOG status"

        }

reload() {

        action $"Reloading Postgresql: " su - postgres -s /bin/sh -c "/usr/bin/pg_ctl -D $POSTDB -l $LOG reload 2>&1 > /dev/null"

        }

case "$1" in
   start)
   start ;;

   stop)
   stop ;;

   restart)
   stop
   start ;;

   status)
   status ;;

   reload)
   reload ;;

   *)
   echo $"Usage: $0 {start|stop|restart|status|reload}" ;;
esac
[root@testmachine ~]# chmod 755 /etc/rc.d/init.d/postgresql

⑪起動する。
[root@testmachine ~]# /etc/rc.d/init.d/postgresql start
Starting Postgresql:                                       [  OK  ]

⑫「PostgreSQL」のテストユーザを作成してみる。
-sh-3.2$ createuser test
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y
-sh-3.2$ createdb test1 -O test
-sh-3.2$ exit ← 作成後ログアウト

⑬上で作成したテストユーザで「PostgreSQL」にログインしてみる。
[root@testmachine ~]# su - test
[test@testmachine ~]$ psql test1 -U test
psql (8.4.4)
Type "help" for help.

test1=> \q

MySQL派だったからいまいち使い方が分からない・・・orz

勉強しなきゃな・・・。


9月 8, 2010 at 9:44 pm by 黒ぶちメガネ
Category: Linux