【PostgreSQL-0009】Google Compute EngineのインスタンスにPostgreSQLをインストールしてどこからでもアクセスできるようにする

 Google Compute EngineのインスタンスにPostgreSQLをインストールして、どこからでもアクセスできるデータベース(以下、DB)の構築について調査及び研究し、その成果をまとめています。

 これは研究用であり、通常はDBへのアクセスはデータ保存の観点から制限されるべきものですのでご注意下さい。

ファイアウォールルールの設定

 GCEのインスタンスを作成する前に、ファイアウォールルールの設定を行い、GCEインスタンスにネットワークタグの設定ができるようにします。

Google Cloud Platformの左端のアイコンから、VPCネットワークファイアウォールルールを選択します。

ファイアウォールルール一覧
ファイアウォールルール一覧
ファイアウォールルールの詳細
ファイアウォールルールの詳細

 postgresというファイアウォールルールに対して、ターゲットに"指定されたターゲットタグ"を選択し、ターゲットタグに"postgres"を選択します。このタグを、このファイウォールルールを適用したいGCEインスタンスに設定する事になります。

 今回は、アクセス制限しませんので、ソースフィルタにIP範囲を設定し、ソースのIP範囲に0.0.0.0/0と入力します。これですべてのIPからアクセスする事ができます。

 そして、PostgreSQLのポートはデフォルトの5432を使用する予定ですので、指定したプロトコルとポートはtcpの5432とします。

 

GCEインスタンスの作成

 まずは、GCEインスタンスを作成します。

インスタンスの作成
インスタンスの作成

 今回はOSはUbuntu16.04LTSを選択しました。そしてHTTPでは接続しないので、HTTPとHTTPSのトラフィックは許可しないようにします。

 

ネットワークタグとSSHの設定

 ファイアウォールルールの設定で指定したネットワークタグを入力し、インスタンスへ接続するためにSSHの設定を行います。

ネットワークタグとsshの設定
ネットワークタグとsshの設定

 以上で、Google Compute Engineの設定は終了です。

 

PostgreSQLのインストールと初期設定

 作成したインスタンスにSSHで接続して、PostgreSQLをインストールます。

PostgreSQLのインストール

 

$ sudo apt-get install postgresql

 ※Ubuntu16.04LTSのリポジトリでは、PostgreSQL9.5がインストールされます。

 

postgresql.confの設定

 以上で、postgresql.confの設定を行います。 

$ sudo nano /etc/postgresql/9.5/main/postgresql.conf

 

 listen_addressを「localhost」から「*」に変更しておきます。 

listen_addresses = '*'

 

pg_hba.confの設定

 以上で、pg_hba.confの設定を行います。 

$ sudo nano /etc/postgresql/9.5/main/pg_hba.conf

 

【変更例】

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# "local" is for Unix domain socket connections only

local      all      all                                trust

# IPv4 local connections:

host      all      all          0.0.0.0/0         trust

host      all      all      127.0.0.1/32        trust

# IPv6 local connections:

host      all      all      ::1/128                trust

   0.0.0.0/0の設定でPostgreSQLとしてもすべてのIPアドレスを受け入れる設定になります。

 設定を有効にするために、PostgreSQLをリスタートさせます。

$ sudo service postgresql restart

 

 

 

データベースの作成

 PotgreSQLのインストールを初期設定が完了したので、ユーザーとデータベースを作成し、リストアしていきます。

ユーザーの作成

 

$ sudo su - postgres

$ psql -U postgres -c "CREATE ROLE adempiere SUPERUSER LOGIN PASSWORD 'adempiere'"

$ logout 

iDempiere用のデータベースの作成

 

$ createdb --template=template0 -E UNICODE -O adempiere -U adempiere idempiere

$ psql -d idempiere -U adempiere -c "ALTER ROLE adempiere SET search_path TO adempiere, pg_catalog"

データベースのリストア

 あとはダンプファイルをサーバーに転送し、リストアすれば完了です。

$ psql -d idempiere -U adempiere -f  ExpDat.dmp

 最後にDBの接続を確認します。

DBの接続設定
DBの接続設定