Как предоставить postgres доступ к /var/run на CentOS?

Как предоставить postgres доступ к /var/run на CentOS?

После установки postgres-9.3via yumв моем CentOS 7, его конфигурация по умолчанию помещает сокет в /tmpкаталог. У меня есть ( также httpdустановленный via ), который по умолчанию управляется с включенной опцией. Это означает, что любое веб-приложение, работающее на , не может получить доступ , поэтому подключайтесь к . Я изменил конфигурацию postgres, поэтому он должен поместить свой сокет в , как в .yumsystem.dPrivateTmphttpd/tmppostgres/var/run/postgresUbuntu

Проблема в том, что postgresу него недостаточно прав для записи в /var/run. Моей первой мыслью было сделать просто:

chown postgres:postgres /var/run/postgres

Но /var/runкаталог очищается после перезагрузки, так что это не сработает. Мой вопрос:

Как предоставить доступ /var/run/postgresпользователю postgresтаким образом, чтобы перезагрузки не прерывались?Я не хочу менять расположение сокета и не хочу менять httpdконфигурацию system.d. Я просто хочу postgresиметь возможность писать в /var/run/postgres. Любая помощь будет оценена по достоинству.

решение1

Вы уверены, что сокет есть только в /tmpCentOS 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, и они будут выполняться в конце каждого процесса загрузки.

Связанный контент