
my 를 postgres-9.3
통해 설치한 후 기본 구성은 소켓을 디렉토리에 넣습니다. 기본적으로 옵션이 활성화되어 관리되는 (설치도 포함 ) 있습니다 . 즉, 에서 실행 중인 모든 웹 애플리케이션은 액세스할 수 없으므로 에 연결해야 합니다 . Postgres 구성을 변경 하여 .yum
CentOS 7
/tmp
httpd
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
어떤 경우든 부팅 시 디렉터리가 생성되었는지 확인해야 하는 경우 Fedora에 제공되고 다음을 포함하는 tmpfiles.d
파일을 사용하십시오./usr/lib/tmpfiles.d/postgresql.conf
d /var/run/postgresql 0755 postgres postgres -
답변2
디렉터리는 CentOS 7의 /var/run
심볼릭 링크입니다 /run
. PostgreSQL의 소켓 디렉터리는 입니다 /run/postgresql
. 부팅 시 생성되는 임시 디렉터리입니다.
systemd의 출현으로 새로운 메커니즘이 등장했습니다.systemd-tmp파일임시 파일과 디렉터리를 관리하기 위해 도입되었습니다.
Systemd-tmpfiles는 부팅 중에 임시 디렉터리를 생성하고 소유자, 그룹 및 권한을 설정합니다. CentOS 7에는 PostgreSQL에 대한 systemd-tmpfiles 구성이 있습니다 /usr/lib/tmpfiles.d/postgresql-96.conf
. 기본적으로 파일에는 다음 줄이 포함됩니다.
d /run/postgresql 0755 postgres postgres -
해당 줄을 편집하여 권한, 소유자 및 그룹을 변경할 수 있습니다. 그러나 이러한 변경을 수행하는 권장 방법은 에서 파일을 직접 편집하는 것이 아니라 /usr/lib/tmpfiles.d/
구성 파일을 로 복사하고 /etc/tmpfiles.d/
대신 해당 복사본에서 필요한 변경을 수행하는 것입니다.
답변3
원하는 명령을 /etc/rc.local 파일에 넣으면 각 부팅 프로세스가 끝날 때 실행됩니다.