Назад | Перейти на главную страницу

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

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