はじめに

CentOS 7.5で、PosgreSQL ver.9.6をインストールし、Atlassian製品用のデータベースを作成する手順を説明します。
(info) 2018/6/4現在、標準パッケージでPostgreSQLをインストールすると、ver.9.2がインストールされます。最新のAtlassian製品のサポート外のバージョンですので、標準パッケージでのインストールはご控えください。

以下の説明の中で実行している各コマンドはroot権限を持つユーザーで入力してください。

1.PostgreSQLのインストール

以下のコマンドを入力し、PostgreSQLのリポジトリをインストールします。インストールにはroot権限が必要です。

コマンドの実行途中で、ダウンロードとインストールの確認が求められます。画面の表示内容を確認し、問題なければ「y」を入力してインストールを進めてください。 

# yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm


読み込んだプラグイン:fastestmirror
pgdg-centos96-9.6-3.noarch.rpm | 4.7 kB 00:00
/var/tmp/yum-root-iCvLs9/pgdg-centos96-9.6-3.noarch.rpm を調べています: pgdg-centos96-9.6-3.noarch
/var/tmp/yum-root-iCvLs9/pgdg-centos96-9.6-3.noarch.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ pgdg-centos96.noarch 0:9.6-3 を インストール
--> 依存性解決を終了しました。
依存性を解決しました================================================================================
Package アーキテクチャー
バージョン リポジトリー 容量
================================================================================
インストール中:
pgdg-centos96 noarch 9.6-3 /pgdg-centos96-9.6-3.noarch 2.7 k
トランザクションの要約
================================================================================
インストール 1 パッケージ合計容量: 2.7 k
インストール容量: 2.7 k


Is this ok [y/d/N]: y ……ここで[y][Enter]を押す。


Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : pgdg-centos96-9.6-3.noarch 1/1
検証中 : pgdg-centos96-9.6-3.noarch 1/1
インストール:
pgdg-centos96.noarch 0:9.6-3
完了しました!


つづけて、以下のコマンドで、PostgreSQL サーバーをインストールします。

# yum install -y postgresql96-server postgresql96-contrib

完了後、以下のコマンドでインストールされたバージョンをご確認ください。

# psql --version psql (PostgreSQL) 9.6.9

2.データベース領域の初期化

最初に、初期化で使うコマンドのファイル(/usr/pgsql-9.6/bin/postgresql96-setup)を修正します。
パフォーマンス悪化防止のため、initdbコマンドのオプションとして「--no-locale -E UTF-8」を追加します。

/usr/pgsql-9.6/bin/postgresql96-setup の以下の部分を変更してください。

# Initialize the database
initdbcmd="$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident'"
initdbcmd+=" $PGSETUP_INITDB_OPTIONS"

$SU -l postgres -c "$initdbcmd" >> "$PGLOG" 2>&1 < /dev/null

# Initialize the database
initdbcmd="$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident' --no-locale -E UTF-8 "
initdbcmd+=" $PGSETUP_INITDB_OPTIONS"

$SU -l postgres -c "$initdbcmd" >> "$PGLOG" 2>&1 < /dev/null

以下のコマンドを使用してデータベース領域を初期化します。

# /usr/pgsql-9.6/bin/postgresql96-setup initdb
Initializing database ... OK

3.設定ファイル修正

パフォーマンス調整

/var/lib/pgsql/9.6/data/postgresql.conf 内の「shared_buffers」「work_mem」「wal_buffers」の値を、以下のように編集します。コマンドはエディタとしてviを使ったときの例です。
work_mem」と「wal_buffers」はコメントアウトされていますので、先頭の「#」を削除してコメントを解除してから編集してください。

# vi /var/lib/pgsql/9.6/data/postgresql.conf

shared_buffers = 512MB
work_mem = 4MB ……先頭の「#」を削除してコメント解除する。
wal_buffers = 64kB ……先頭の「#」を削除してコメント解除する。

接続クライアント・認証方式設定

/var/lib/pgsql/9.6/data/postgresql.conf 内の「listen_addresses」の以下のように修正し、localhost から接続できるようにします。コマンドはエディタとしてviを使ったときの例です。
この行もコメントアウトされていますので、 先頭の「#」を削除してコメントを解除してから編集してください。

# vi /var/lib/pgsql/9.6/data/postgresql.conf

listen_addresses = 'localhost' ……先頭の「#」を削除してコメント解除する。

/var/lib/pgsql/9.6/data/pg_hba.conf 内を以下のように修正して、host接続の認証方式をパスワード認証(md5) にします。

host    all         all       127.0.0.1/32         ident

host    all         all       127.0.0.1/32         md5

設定ファイル修正後、PostgreSQLを起動します。

起動には「systemctl start postgresql-9.6.service」コマンド、 起動しているか確認するには「ps -ef | grep pgsql」コマンドを使用します。 

# systemctl start postgresql-9.6.service

# ps -ef | grep pgsql

postgres 1099 1 0 09:55 ? 00:00:00 /usr/pgsql-9.6/bin/postmaster -D /var/lib/pgsql/9.6/data/
root 6478 2114 0 11:10 pts/0 00:00:00 grep --color=auto pgsql

4.自動起動設定

yumコマンドを使用してPostgreSQLをインストールすると、自動的にサービスとして登録されます。
ただし、自動起動するようには設定されていません。「systemctl enable postgresql-9.6.service」コマンドを実行して、自動起動するように設定します。

# systemctl enable postgresql-9.6.service

PostgreSQLの起動と停止は、以下のコマンドで行います。 

# systemctl start postgresql-9.6.service

# systemctl stop postgresql-9.6.service

5.インストール完了

これでPostgreSQLのインストールが完了しました。

6.ユーザー作成、データベース作成

JIRA、Confluenceなどの接続先DBとして使用するため、専用のユーザーとデータベースを用意します。

(PostgreSQLに接続します。)
# su - postgres
$ psql

psql (9.6.9)
"help" でヘルプを表示します.


(ユーザーを作成します。ユーザー名とユーザーパスワードに値を入力してCreateします。)
postgres=# create role <ユーザー名> PASSWORD '<ユーザーパスワード>' CREATEDB LOGIN;
CREATE ROLE

(データベースを作成します。データベース名に値を入力し、ユーザー名には作成したユーザー名を入力します。)
postgres=# create database <データベース名> owner <ユーザー名> template=template0 encoding='utf-8';
CREATE DATABASE

(psqlコマンドを終了します。)
postgresql=# \q 

psqlコマンドを終了するには、「\q」と入力してください。「\h」と入力するとヘルプが表示されます。

ユーザー名、ユーザーパスワード、データベース名は任意の内容を入力してください。 パスワードは外部から推測されにくいものをおすすめします。
ここでは、以下の想定で作業を行います。


ユーザー名データベース名
JIRAjira_db_usrjira_db
Confluenceconf_db_usrconf_db
FishEyefisheye_db_usrfisheye_db
Bitbucketbitbucket_db_usrbitbucket_db
Crowdcrowd_db_usrcrowd_db
Bamboobamboo_db_usrbamboo_db

作成されていること確認するために、作成したデータベースに接続します。

$ :psql -h 127.0.0.1 -U <ユーザー名> <データベース名>

(実行例)
# su - postgres
$ psql -h 127.0.0.1 -U conf_db_usr conf_db
Password for user conf_db_usr:

psql (9.6.9)
"help" でヘルプを表示します.

conf_db=> \q

接続を確認できたらデータベース作成完了です。