ページ

2014-10-31

CentOS7.0のsystemd用postgresql制御ファイル


CentOS7.0からsystemdに変わったことで起動スクリプトを今までとは違う記述をしないといけなくなった。サービス制御ファイルを作らないといけない。
PostgreSQLをソースからインストールした最に今まで用意されていたinit.d以下にコピーするスクリプトが使えないので、いろいろ参考にしながら書いたのでメモっとく。


それぞれの項目の説明はしないけどw
自分の環境に合わせて記述してある。
Timeoutの数値とかは適時変更。

# /lib/systemd/system/postgresql.service
[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres
Environment=PGPORT=5432
Environment=PGDATA=/usr/local/pgsql/data
# StandardOutput=syslog
OOMScoreAdjust=-1000

ExecStart=/usr/local/pgsql/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D ${PGDATA} -s

TimeoutSec=300

[Install]
WantedBy=multi-user.target


# systemctl enable postgresql
ln -s '/usr/lib/systemd/system/postgresql.service' '/etc/systemd/system/multi-user.target.wants/postgresql.service'

# systemctl start postgresql
# systemctl status postgresql
postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled)
   Active: active (running) since 金 2014-10-31 16:15:28 JST; 6s ago
  Process: 7881 ExecStart=/usr/local/pgsql/bin/pg_ctl start -D ${PGDATA} -s -o -p ${PGPORT} -w -t 300 (code=exited, status=0/SUCCESS)
 Main PID: 7884 (postgres)
   CGroup: /system.slice/postgresql.service
           ├─7884 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data -p 5432
           ├─7886 postgres: checkpointer process
           ├─7887 postgres: writer process
           ├─7888 postgres: wal writer process
           ├─7889 postgres: autovacuum launcher process
           └─7890 postgres: stats collector process

PIDFileとか指定してないけど出来てるな・・・

multi-user.targetは、runlevel3相当だそうで。
UnitのAfterはnetworkの後ということで順番だね。
initdよりは楽という感じだね。

Typeはforkingじゃなくて、別なの推奨ってどっかに書いてあったけどどこだかわからなくなったのでそのまま。でも、他のもforkingだしな。

追記
Type=forking はメインプロセスの追跡にPIDファイルが必要になることから、systemdのサービス設定ではType=ForkingよりType=simple,Type=notifyの利用が推奨される。


参考
Linux - Systemd メモ書き - Qiita

0 件のコメント :