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の設定を行います。
以上で、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の接続を確認します。