После установки postgres-9.3
через yum
в моем CentOS 7
, его конфигурация по умолчанию помещает сокет в /tmp
каталог. у меня есть httpd
(устанавливается через yum
а также), которым по умолчанию управляет system.d
с участием PrivateTmp
опция включена. Это означает, что любое веб-приложение, работающее на httpd
не может получить доступ /tmp
так что подключитесь к postgres
. Я изменил конфигурацию 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
. Любая помощь очень ценится.
Вы уверены, что розетка только в /tmp
на CentOS 7?
В последних версиях Fedora есть две копии сокета, одна в /run/postgresql
(где /var/run/postgresql
действительно находится после разрешения ссылок), которая является предпочтительной версией в современных системах, и одна в /tmp
для устаревших клиентов, которые ожидают найти его там.
В любом случае, если вам нужно убедиться, что каталог создается при загрузке, используйте tmpfiles.d
файл, как /usr/lib/tmpfiles.d/postgresql.conf
который поставляется в Fedora и содержит:
d /var/run/postgresql 0755 postgres postgres -
Каталог /var/run
символическая ссылка на /run
в CentOS 7. Каталог сокетов для PostgreSQL: /run/postgresql
. Это временный каталог, создаваемый во время загрузки.
С появлением systemd появился новый механизм под названием systemd-tmpfiles был введен для управления временными файлами и каталогами.
Systemd-tmpfiles создает временные каталоги во время загрузки и устанавливает их владельца, группу и разрешения. CentOS 7 имеет конфигурацию systemd-tmpfiles для PostgreSQL в /usr/lib/tmpfiles.d/postgresql-96.conf
. По умолчанию файл содержит следующую строку:
d /run/postgresql 0755 postgres postgres -
Вы можете изменить права доступа, владельца и группу, отредактировав эту строку. Однако рекомендуемый способ внесения таких изменений - не редактировать файлы напрямую в /usr/lib/tmpfiles.d/
, но чтобы скопировать файлы конфигурации в /etc/tmpfiles.d/
, и вместо этого внесите необходимые изменения в эту копию.
Просто поместите желаемые команды в файл /etc/rc.local, и они будут выполняться в конце каждого процесса загрузки.