postgres外部接続備忘録
サーバーエンジニアが退職して、サーバー関連のことを任されることになった私の備忘録。
今回はpostgresSQLを外部から接続できるように設定した際にハマったのでメモ。
環境
SentOS 6.7
postgres 9系
まずは外部接続できるように設定
私の環境ではまずpostgresというユーザーでログイン
# su - postgres
dataディレクトリに移動
$ cd $PGDATA
$PGDATAにはdataディレクトリのPATHが入っているみたい
この辺の理解はかなり薄いのでインストールする機会があれば勉強してみようと思う。
postgres.conf内の内容を書き換える。
$ vi postgres.conf
# listen_addresses = 'localhost'
listen_addresses = '*' #ここを追記
IPアドレスを指定することも出来るらしいが今回はこれで。
外部接続できるIPアドレスを登録
同ディレクトリ内のpg_hba.confを編集
一番下より少し上の方に
# IPv4 local connections:
という場所に以下に追記していく
host DBname Username ***.***.***/32 md5
hostというのはTCP/IPの事らしい、fmfm。
設定を読み込むために
$ pg_ctl reload
ポート開放する
sentOS6ではiptablesとやらを設定してポート開放しないといけないらしい
とりあえず中身を見てみる。
rootに戻って
# cd /etc/sysconfig
# vi iptables
うーーーーん、ずらずらと記述がしてある・・・
参考サイトには該当箇所をコピーして、番号を書き直せばOKと書いてあるのでその通りやってみる。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
22というのはsshのことだな
こいつを利用させてもらう
今回はデフォルトの5432を利用
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
設定を読み込み
# /etc/init.d/iptables restart
よしこれでOK!!!なはず!
手元のphpのプログラムから接続を試みる・・・・・
・・・・・
・・・・・
・・・・・
接続できない・・・・
記述ミスがないか確認
強強エンジニアに聞いても書き間違い無いですか??
ちゃんとリロードしました??
という返答しか返ってこない。
リモートワークはすぐに手元が見せれないのが難点ですよね。
いろいろ調べた結果
postgres.confの設定を変えると変えた中身次第ではpostgres本体の再起動が必要みたい。
ということでpostgresの再起動。
# su - postgres
$ pg_ctl stop
$ pg_ctl start
とここで起動した際にエラー
FATAL: lock file "postmaster.pid" already exists
・・・
・・・
・・・
動いているプロセスがあるのにシャットダウンしたらこんなエラーがでるらしい??
プロセスを確認
$ ps auxww
たくさん動いてるのでとりあえずkillコマンドで削除しまくる。
そしてpostmaster.pidというファイルがあるとLOCKされていると書いてあるので削除
$ rm postmaster.pid
改めて
$ pg_ctl start
無事接続、お疲れ様でした。
色々省いている部分もありますが、変なこと書いてたら指摘していただけると嬉しいです。
サーバーに関してはまだまだひよっこなので危なっかしいところもありますが
顧客は待ってくれませんので、がんばります!!
参考サイト
https://qiita.com/nao_yoshi/items/a5106e8f08547a54d5ea
https://loups-garous.hatenablog.com/entry/20120917/1347900472
https://gist.github.com/taea/8865831
忘れっぽいので記憶に留める&見返すためにちょくちょく更新していこうと思います。