
Después de instalar postgres-9.3
via yum
in my CentOS 7
, su configuración predeterminada coloca el socket en /tmp
el directorio. Lo tengo httpd
( yum
también lo instalé a través de), que se administra de forma predeterminada system.d
con PrivateTmp
la opción habilitada. Esto significa que cualquier aplicación web que se ejecute httpd
no puede acceder, /tmp
así que conéctese a postgres
. Cambié la configuración de Postgres por lo que debería colocar su socket /var/run/postgres
como en Ubuntu
.
Ahora el problema es que postgres
no tiene suficientes privilegios para escribir /var/run
. Mi primer pensamiento fue hacer simplemente:
chown postgres:postgres /var/run/postgres
Pero /var/run
el directorio se limpia después del reinicio, por lo que esto no funcionará. Mi pregunta es:
¿Cómo otorgar acceso al /var/run/postgres
usuario postgres
de tal manera que persistan los reinicios?No quiero cambiar la ubicación del socket y no quiero cambiar httpd
la system.d
configuración. Sólo quiero postgres
poder escribir a /var/run/postgres
. Cualquier ayuda es muy apreciada.
Respuesta1
¿Estás seguro de que el socket solo está en /tmp
CentOS 7?
Las versiones recientes de Fedora tienen dos copias del socket, una en /run/postgresql
(que es donde /var/run/postgresql
realmente se ubica después de que se resuelven los enlaces), que es la versión preferida en los sistemas modernos, y otra /tmp
para los clientes heredados que esperan encontrarla allí.
En cualquier caso, si necesita asegurarse de que el directorio se cree en el arranque, utilice un tmpfiles.d
archivo, como /usr/lib/tmpfiles.d/postgresql.conf
el que se incluye en Fedora y que contiene:
d /var/run/postgresql 0755 postgres postgres -
Respuesta2
El directorio /var/run
es un enlace simbólico /run
en CentOS 7. El directorio de socket para PostgreSQL es /run/postgresql
. Es un directorio temporal, creado en el momento del arranque.
Con la llegada de systemd, un nuevo mecanismo llamadoarchivos systemd-tmpSe ha introducido para gestionar archivos y directorios temporales.
Systemd-tmpfiles crea directorios temporales durante el arranque y establece su propietario, grupo y permisos. CentOS 7 tiene la configuración systemd-tmpfiles para PostgreSQL en formato /usr/lib/tmpfiles.d/postgresql-96.conf
. De forma predeterminada, el archivo contiene la siguiente línea:
d /run/postgresql 0755 postgres postgres -
Puede cambiar los permisos, el propietario y el grupo editando esa línea. Sin embargo, la forma recomendada de realizar dichos cambios no es editar directamente los archivos en /usr/lib/tmpfiles.d/
, sino copiar los archivos de configuración en y /etc/tmpfiles.d/
, en su lugar, realizar los cambios necesarios en esa copia.
Respuesta3
Simplemente coloque los comandos que desee en el archivo /etc/rc.local y se ejecutarán al final de cada proceso de arranque.