[pgsql-jp: 41752] Re: pg_ctlの動作の質問

Tomoaki Sato sato @ sraoss.co.jp
2014年 12月 3日 (水) 14:59:55 JST


佐藤です。

> ci5kym と申します。
> 
> linuxでのpostgres 9.1の起動方法について質問させて下さい。
> 
> postgresサーバーの起動は、起動パラメータで”config_file”を指定した場合、
> そのファイルに以下の3つが指定されていれば、データクラスタの位置をパラメータで
> 指定しなくても良いと理解しています。
> 
> /etc/dbconf/postgresql.confを作成し、
> 
> data_directory=/usr/local/pgsql/data
> hba_file=/etc/dbconf/pg_hba.conf
> ident_file=/etc/dbconf/pg_ident.conf
> 
> を記述。
> 
> # su - postgres
> $ /usr/local/pgsql/bin/pg_ctl start -w -s -o ' -c
> config_file=/etc/dbconf/postgresql.conf '
> 
> した場合、何の問題もなく動作します。

環境変数 PGDATA が定義されているだけだと思います。

> ところが、systemd で /etc/systemd/system/postgresql.service を作成し、
> 以下のように記述し
> 
> PIDFile=/etc/dbconf/postgres.pid
> ExecStart=/usr/local/pgsql/bin/pg_ctl start -w -s -o '-c
> config_file=/etc/dbconf/postgresql.conf'
> ....
> 
> 起動した場合、エラーで起動できない状況に遭遇しました。
> エラーの内容は、データクラスタ位置が指定されていないか、PGDATA変数が指定されていない
> というもので、-o '-c config_file=/etc/dbconf/postgresql.conf'  の部分が解析されていないまま
> 起動しているように思えます。

以下の URL の下のほうに

  http://www.postgresql.jp/document/9.3/html/runtime-config-file-locations.html

以下のように書いてあるので

  config_file は postgres コマンドラインによってのみ指定されますが、...

pg_ctl コマンドでは config_file パラメータは設定できません。

> ExecStartを
> Environment="PGBASE=/usr/local/pgsql"
> ExecStart=/usr/local/pgsql/bin/pg_ctl start -w -D ${PGBASE}/data -s -o
> '-c config_file=/etc/dbconf/postgresql.conf'
> とした場合は、問題なく起動してくれます。
> 
> この現象がpg_ctlの問題なのか、systemdの問題なのか判断できない為、質問させて頂きました。

systemd はあまり詳しくないですが

----
[Service]
Type=simple
User=postgres
Group=postgres
ExecStart=/usr/local/bin/postgres -c config_file=/etc/dbconf/postgresql.conf
-----

とかで起動できませんか。


----
Tomoaki Sato <sato @ sraoss.co.jp>
SRA OSS, Inc. Japan


pgsql-jp メーリングリストの案内