はじめに
こんにちは、めちゃよわプログラマの@_amです。
前回はWebAPサーバの構築をまとめました。
インフラって難しそう…と避け続けためちゃよわプログラマが、克服のために頑張ってサーバを構築してみた。WebAPサーバ編 - Qiita
構築イメージ
環境
今回も、AWSのEC2で構築しました。
OS:Red Hat Enterprise Linux 7
今回はセキュリティゾーンに5432を設定しています。
必要な場合は、適宜設定を行います。
これから準備するもの…
・PostgreSQL
※バージョンは2019年1月時点のものです。適切なものを使います。
環境構築
その前に
WebAPサーバ構築時同様、パスを知りたい場合はfindコマンドで検索しました。
本文の中では、詳細パスは記載せず [インストールしたパス] で統一します。
また、root権限が必要なコマンドもありましたが、その際はsudoで実行しました。
(今回は記載は省きます。)
PostgreSQL
インストール
$ yum -y install postgresql11-server
データベース初期化
$ インストールしたパス/postgresql-11-setup initdb
PostgreSQLを起動
$ systemctl start postgresql-11
状態を確認
ActiveだったらOK
$ systemctl status postgresql-11
おまけ:自動起動の設定
$ systemctl enable postgresql-11
postgresユーザのパスワード設定
PostgreSQLをインストールするとLinuxのユーザとして「postgres」というユーザが追加される。
※初期状態はパスワードなし
ユーザ切り替え
$ su - postgres
パスワードを聞かれたらそのままEnter
※もしパスワード違いなどでログインできなかったら、新しいパスワードを設定する
$ sudo passwd postgres
postgresql.confを修正
$ vi インストールしたパス/postgresql.conf
開いたら、CONNECTIONS AND AUTHENTICATION を以下のように設定する
'#listen_address = 'localhost'
↓↓↓↓
listen_address = '*'
(#も外す)
pg_hba.confを修正
$ vi インストールしたパス/pg_hba.conf
pg_hba.confの最後らへんのエリア(IPアドレスなどが書いてあるところ)の "local" is for Unix domain socket connections onlyに、以下を追加する
host all all 接続元(webAPサーバなど)のプライベートIP/32 trust
PostgreSQLを再起動する
$ systemctl restart postgres-11
ファイアウォール
ポート5432を追加
$ firewall-cmd --add-port=5432/tcp --zone=public --permanent
※ firewalld not foundの場合はfirewalldコマンドをインストールする
$ yum -y install firewalld
再起動
$ systemctl restart firewalld
自動起動の設定
$ systemctl enable firewalld
確認
sudo firewall-cmd --list-all
ports: 5432/tcp ←追加されていればOK
おわり
無事にWebAPサーバとDBサーバを構築して、Javaアプリケーションを動かすことができました!
インフラって難しそう…と避け続けましたが、実際に手を動かしてみると成功したときの嬉しさはプログラミングと同じだな~と感じました。ほんの少しだけですが、自信もつきました!
また何かきっかけがあれば投稿してみたいと思います