CentOS 7でのPostgreSQLの自動起動スクリプト


PostgreSQLをルート権限でインストールできないような場合や複数のバージョンのPostgreSQLを準備するような場合など、ソースをコンパイルして特定のディレクトリにインストールすることがあります。


CentOS 6.Xまではソースの中に自動起動スクリプトが入っていて、そのままコピーして/etc/rc.d/init.d/内に配置すれば良かったのですが、CentOS 7からは構成が変わってしまい、/etc/rc.d/init.d/内に起動スクリプトを配置できなくなってしまいました。


そこで、実際にPostgreSQLの自動起動スクリプトを作成し、CentOS 7で動作するようにできましたのでご紹介したいと思います。


今回のPostgreSQLのバージョンやインストール先の情報は以下のようになります。

インストールした環境とプログラムのバージョン

Cent OS 7.2
PostgreSQL 9.4.5


PostgreSQLをインストールするディレクトリ

/home/testUser/postgres


起動スクリプトを配置するディレクトリとファイル名

/usr/lib/systemd/system/postgresql.service


インストール先は、/home/testUserディレクトリになります。


起動スクリプトは/usr/lib/systemd/system以下に配置します。viなどで、postgresql.serviceというファイルを作成して、以下のようなスクリプトを書きます。


起動スクリプト


自動起動スクリプトは以下のようになります。


[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking
User=testUser
Group=admin
Environment=PGDATA=/home/testUser/postgres/data
Environment=PGLOG=/home/testUser/postgres/data/serverlog
OOMScoreAdjust=-1000

ExecStart=/home/testUser/postgres/bin/pg_ctl -w -D /home/testUser/postgres/data start

ExecStop=/home/testUser/postgres/bin/pg_ctl stop -D /home/dynacom/testUser/data stop -m fast

TimeoutSec=300

[Install]
WantedBy=multi-user.target



スクリプトの反映


上のスクリプトを作成したら、root権限でシステムに反映します。以下のコマンドを入力してください。

#sudo systemctl enable postgresql

以下のようなメッセージが表示されればOKです。

Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql.service to /usr/lib/systemd/system/postgresql.service.


PostgreSQLを起動します。以下のコマンドを入力してください。

#systemctl start postgresql


もし、うまく起動しない場合は、以下のコマンドを入力するとログを表示させることができます。

#journalctl -xn

または、

#systemctl status postgresql.service


エラーになった個所を修正したら、以下のコマンドを入力して再度反映作業を行います。

#systemctl daemon-reload


そして、systemctl start postgresqlと入力して、PostgreSQLを起動します。

以上の設定でCentOS 7でのPostgreSQLの自動起動ができます。

このエントリーをはてなブックマークに追加



関連記事 

1.PostgreSQLが使えるレンタルサーバー
2.PGroongaをインストールしてPostgreSQLの全文検索を高速に実行する




▲ このページの上部へ戻る