CentOS 上の postgres に /var/run へのアクセスを許可するにはどうすればいいですか?

CentOS 上の postgres に /var/run へのアクセスを許可するにはどうすればいいですか?

経由postgres-9.3で にインストールした後、デフォルト設定によりソケットがディレクトリに配置されます。経由でもインストールしましたが、これはデフォルトで オプションが有効になっているによって管理されます。つまり、 で実行されている Web アプリケーションはにアクセスできないため、 に接続できません。 postgres の設定を変更したので、の場合と同じようににソケットが配置されるはずです。yumCentOS 7/tmphttpdyumsystem.dPrivateTmphttpd/tmppostgres/var/run/postgresUbuntu

ここで問題となるのは、postgresに書き込むための十分な権限がないことです/var/run。私が最初に考えたのは、次のようにすることでした。

chown postgres:postgres /var/run/postgres

しかし、/var/run再起動後にディレクトリが消去されるため、これは機能しません。私の質問は次のとおりです:

再起動しても継続されるようにユーザー/var/run/postgresにアクセスを許可するにはどうすればよいですか?postgreshttpdソケットの場所を変更したり、の設定を変更したりするつもりはありませんsystem.dpostgresに書き込めるようにしたいだけです/var/run/postgres。 ご協力いただければ幸いです。

答え1

ソケットは/tmpCentOS 7 にのみ存在しますか?

最近のバージョンの Fedora にはソケットのコピーが 2 つあります。1 つは にあり/run/postgresql(リンクが解決された後に が実際に配置される場所/var/run/postgresql)、これは最新のシステムで推奨されるバージョンです。もう 1 つは にあり、/tmpそこにソケットがあることを期待しているレガシー クライアント用です。

いずれにしても、起動時にディレクトリが作成されるようにする必要がある場合は、Fedora に同梱されている次tmpfiles.dのような内容のファイルを使用します。/usr/lib/tmpfiles.d/postgresql.conf

d /var/run/postgresql 0755 postgres postgres -

答え2

ディレクトリはCentOS 7 の/var/runへのシンボリック リンクです。PostgreSQL/runのソケット ディレクトリは です/run/postgresql。これは起動時に作成される一時ディレクトリです。

systemdの登場により、systemd-tmpファイル一時ファイルとディレクトリを管理するために導入されました。

Systemd-tmpfiles は起動時に一時ディレクトリを作成し、その所有者、グループ、権限を設定します。CentOS 7 には、PostgreSQL 用の systemd-tmpfiles 設定があります/usr/lib/tmpfiles.d/postgresql-96.conf。デフォルトでは、ファイルには次の行が含まれています。

d /run/postgresql 0755 postgres postgres -

この行を編集することで、権限、所有者、グループを変更できます。ただし、このような変更を行うには、 の下のファイルを直接編集するのではなく/usr/lib/tmpfiles.d/、設定ファイルを にコピーし/etc/tmpfiles.d/、そのコピーで必要な変更を行うことをお勧めします。

答え3

必要なコマンドを /etc/rc.local ファイルに入れるだけで、各ブートプロセスの最後に実行されます。

関連情報