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
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の自動起動ができます。