
経由postgres-9.3
で にインストールした後、デフォルト設定によりソケットがディレクトリに配置されます。経由でもインストールしましたが、これはデフォルトで オプションが有効になっているによって管理されます。つまり、 で実行されている Web アプリケーションはにアクセスできないため、 に接続できません。 postgres の設定を変更したので、の場合と同じようににソケットが配置されるはずです。yum
CentOS 7
/tmp
httpd
yum
system.d
PrivateTmp
httpd
/tmp
postgres
/var/run/postgres
Ubuntu
ここで問題となるのは、postgres
に書き込むための十分な権限がないことです/var/run
。私が最初に考えたのは、次のようにすることでした。
chown postgres:postgres /var/run/postgres
しかし、/var/run
再起動後にディレクトリが消去されるため、これは機能しません。私の質問は次のとおりです:
再起動しても継続されるようにユーザー/var/run/postgres
にアクセスを許可するにはどうすればよいですか?postgres
httpd
ソケットの場所を変更したり、の設定を変更したりするつもりはありませんsystem.d
。postgres
に書き込めるようにしたいだけです/var/run/postgres
。 ご協力いただければ幸いです。
答え1
ソケットは/tmp
CentOS 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 ファイルに入れるだけで、各ブートプロセスの最後に実行されます。