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