====== CentOS KickstartでPostgreSQLを自動セットアップする ======
===== %postスクリプト =====
[[centos:kickstart:kscfg|CentOS Kickstart 設定ファイル]]から抜粋してます。
# create working directory
mkdir /tmp/postgres
# create logging directory
mkdir /tmp/postgres/logs
cd /tmp/postgres
cp -r /root/postgres/* .
bash /tmp/postgres/postgres-setup.sh 2>&1 | tee /tmp/postgres/logs/postgres-setup.log
===== postgres-setup.sh =====
#!/bin/bash
chmod -R 777 /tmp/postgres
# initialize database
/etc/rc.d/init.d/postgresql initdb
# copy config file
\cp -rf /tmp/postgres/postgresql.conf /var/lib/pgsql/data/postgresql.conf
\cp -rf /tmp/postgres/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf
\cp -rf /tmp/postgres/etc/init.d/postgresql /etc/init.d/postgresql
# start service
/etc/rc.d/init.d/postgresql start
# set database password
sudo -u postgres bash /tmp/postgres/postgres-create-database.sh
chkconfig postgresql on
===== postgres-create-database.sh =====
postgresユーザで実行されます。
自分の環境ではportを変えていますが、デフォルトのポートの場合は-pのオプションは不要です。
またパスワードはマスクかけてます。
#/bin/bash
# set password
psql -p ???? -c "alter user postgres with password '??????????????'"
# create user
createuser -p ???? --superuser --createdb --createrole scpostgres
# set password
psql -p ???? -c "alter user scpostgres with password '??????????????'"
# create schema
psql -p ???? -c "create schema scmain authorization scpostgres"
psql -p ???? -c "alter user scpostgres set search_path to scmain"
exit
===== postgresql.conf =====
外部からの接続を許可します。
listen_addresses = '*' # what IP address(es) to listen on;
デフォルトからportを変えます。
port = ????? # (change requires restart)
ログの出力形式を変えます。
log_line_prefix = '%t %u %d ' # special values:
エンコーディングをsjisに変えます。
client_encoding = sjis # actually, defaults to database
===== pg_hba.conf =====
以下の行を追加します。
host all all 0.0.0.0/0 trust
===== etc/init.d/postgresql =====
portを変更したものに置き換えます。