インストール
とりあえずCentOSとPostgreSQLをインストール。
CentOSインストール時にPostgreSQLを選択できます。(2015/1/17現在、PostgreSQLは9.2.7がデフォルトでインストールされます)
PostgreSQLがインストールされているかどうかを調べるには、
rpm -qa | grep postgres
でOK
PostgreSQLの設定
passwd postgres
でパスワード設定。
以下でデータベースシステムを初期化します。
cd /var/lib/pgsql
su postgres
initdb --encoding=UTF8 --no-locale --pgdata=/var/lib/pgsql/data
postgresql.confを編集します。
cd /var/lib/pgsql/data
vi postgresql.conf
#listen_addresses = ‘localhost’
↓
listen_addresses = ‘*’
コメントアウトを外して、ここではすべてlistenしちゃうことにしてます。
(【備忘録】Linuxの基本操作)
続いてpg_hba.confを編集。
vi pg_hba.conf
host all all 192.168.10.0/24 md5
などなど、環境に合わせて、ファイルの末尾に足す。
必要ないのはコメントアウト。
PostgreSQL起動関連
CentOS 7ではinit.dがなくなって、systemctlが採用されました。
・サービスの起動と停止
systemctl (start|stop) postgresql.service
・自動起動の設定と解除
systemctl (enable|disable) postgresql.service
・稼働中のサービス確認には
systemctl list-units --type=service
参考資料:
RHEL 7 に採用される Systemctl コマンド
CentOS7で使われているsystemctlについて少しまとめた -Qiita
ここでは
systemctl start postgresql.service
systemctl enable postgresql.service
プロセスが動いてるか確認
ps -ef | grep postgres
su postgres
psql
select now();
\q
psql -U postgres -l
これで時間が表示されたり、データベースが表示されたりしたら、ちゃんと動いてます。
firewalldの設定
firewall-cmd --permanent --zone=public --add-service=postgresql
systemctl restart firewalld.service
参考資料:
Install PostgreSQL 9.3 on Fedora 20/19, CentOS/RHEL/SL 7/6.6/5.11
UnixPower on Networking | CentOS7 firewalldの設定
SSLで接続する
openssl req -new -text -out server.req
実行するといろいろ聞かれます。
最初にパスフレーズを入力。
あとはCountry NameにJPと答えるのと、「Common Name」にローカルホスト名を入力するだけで、あとはエンターキーを押していれば大丈夫です。
サーバーを自動起動させたい場合は、下記でパスフレーズを削除します。
openssl rsa -in privkey.pem -out server.key
rm privkey.pem
既存のキーのロックを外すために、古いパスフレーズを入力します。
続いて下記実行。
openssl req -x509 -in server.req -text -key server.key -out server.crt
パーミッションとauthor、User Groupを変更するのを忘れずに。
chmod 0600 server.key
chown postgres:postgres server.crt server.key
これを/var/lib/pgsql/data($PGDATAで代替可能)にコピー。
mv ./server.key $PGDATA/server.key
mv ./server.crt $PGDATA/server.crt
同フォルダにpg_hba.confがあるので、
hostssl all all 192.168.1.0/24 md5
など、運用する環境に合わせて設定。
同フォルダのpostgresql.confで
#ssl=off
を
ssl=on
に変更。
PostgreSQLを再起動。
systemctl restart postgresql.service
これでSSLで接続できるはずです。
参考資料:
SSLによる安全なTCP/IP接続 | PostgreSQL 9.5.1文書
蛇足:posgresのパスワードがあかんって怒られてつなげられなかったら
su postgres
psql
ALTER USER postgres password 'ここにパスワード';