2008年9月25日 星期四

PostgreSQL--(一)安裝與設定

1. 下載PostgreSQL, 並且解壓縮至/usr/目錄中
$> mkdir /usr/src/postgresql
$> cp postgresql-8.x.x.tar.gz /usr/src/postgresql
$> tar -zxvf postgresql-8.x.xx.tar.gz
2. 安裝PostgreSQL
$> su - root
$> cd /usr/src/postgresql/postgresql-8.x.xx/
$> ./configure
--prefix: specify installation directory, default is /usr/local/pgsql
--with-pgport: set the port number, default is 5432
--with-pam: build the pam support

$> gmake
$> gmake install
3. 建立postgres帳號, 並建立存放資料庫的目錄
$> adduser postgres
$> mkdir /usr/local/pgsql/data
$> chown postgres /usr/local/pgsql/data
4. 函式庫設定
$> vi /etc/profile
LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH

$> /sbin/ldconfig /usr/local/pgsql/lib
5. 環境變數設定
$> su - postgres
$> vi .bash_profile
PATH=$PATH:/usr/local/pgsql/bin
export PATH
MANPATH=/usr/local/pgsql/man:$MANPATH
export MANPATH
PGDATA=/usr/local/pgsql/data
export PGDATA
6. 資料庫叢集(Database Cluster)初始化
##以postgres帳號登入執行..
$> initdb -D /usr/local/pgsql/data
7. 啟動伺服器
##啟動服務, 並且記錄其訊息輸出及錯誤訊息
$> postgres -D /usr/local/pgsql/data >logfile 2>&1 &

$> pg_ctl start -D /usr/local/pgsql/data -l logfile

##以root身份登入
$> /etc/init.d/postgresql start
8. 查看伺服器有無正常運作
##須設定環境變數PGDATA
$> pg_ctl status

##輸出訊息
pg_ctl: server is running (PID: 3974)
/usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data/"
9. 設定開機時, 自動啟動PostgreSQL服務
#以root權限登入
$> vi /etc/rc.d/rc.local
if [ -x /usr/local/pgsql/bin/pg_ctl -a -x /usr/local/pgsql/bin/postgres ]; then
su postgres -c '/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data -l /usr/local/pgsql/data/serverlog -s'
echo -n 'postgresql server is running...'
fi

cp /usr/src/postgresql/postgresql-8.x.xx/contrib/start-scripts/linux /etc/init.d/postgresql
chkconfig --add postgresql
8. Shared Memory配置
$> sysctl -w kernel.shmmax=134217728
$> sysctl -w kernel.shmall=2097152
9. 關閉伺服器
$> pg_ctl stop

$> kill -INT 'head -1 /usr/local/pgsql/data/postmaster.pid'

##以root身份登入
$> /etc/init.d/postgresql stop
10.解除安裝
##註:不會自動刪除已建立的目錄##
$> cd /usr/src/postgresql/postgresql-8.x.xx/
$> gmake uninstall

3 則留言:

Unknown 提到...
作者已經移除這則留言。
Unknown 提到...

在啟動PostgreSQL時, 發生以下錯誤訊息??

waiting for postmaster to start...FATAL 1: data directory /usr/local/pgsql/data/

has group or world access; permissions should be u=rwx (0700)

Unknown 提到...

請檢查/usr/local/pgsql/data之權限設定是不是postgres擁有, 且讀寫模式為700

如下:
drwx------ 11 postgres postgres 4096 10月 22 13:21 yarddb

若非如上述, 請更新其目錄之權限
$> chown postgres:postgres /usr/local/pgsql/data
$> chmod 700 /usr/local/pgsql/data