[server] 부팅 할 때마다 Apache의 PidFile 디렉토리가 제거됩니다.

서버가 재부팅 될 때마다 / run / httpd 디렉토리가 제거됩니다. / run은 tmpfs 파일 시스템이므로 RAM에 마운트됩니다.

/ run / httpd는 설치 중에 만 작성됩니다. 재부팅 후 httpd를 시작하면 디렉토리가 다시 생성되지 않습니다.

서버가 CentOS 7 및 oficial 저장소 Apache 패키지 (v. 2.4.6-18)를 설치했습니다.

Apache 설치 및 시작 후 디렉토리는 다음과 같습니다.

# ls -alR /run/httpd/
/run/httpd/:
total 8
drwx--x---.  3 root   apache  120 Sep 30 08:39 .
drwxr-xr-x. 28 root   root   1020 Sep 30 08:37 ..
-rw-r--r--.  1 root   root      8 Sep 30 08:39 authdigest_shm.2953
drwx------.  2 apache apache   40 Jul 23 10:48 htcacheclean
-rw-r--r--.  1 root   root      5 Sep 30 08:39 httpd.pid
srwx------.  1 apache root      0 Sep 30 08:39 wsgi.2953.0.1.sock

/run/httpd/htcacheclean:
total 0
drwx------. 2 apache apache  40 Jul 23 10:48 .
drwx--x---. 3 root   apache 120 Sep 30 08:39 ..

그러나 재부팅 후 :

# ls -l /run/httpd
ls: cannot access /run/httpd: No such file or directory

다음은 Apache를 다시 시작하려고 할 때의 로그입니다.

/ var / log / httpd / error_log

[Tue Sep 30 09:30:32.310825 2014] [core:notice] [pid 3370] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Tue Sep 30 09:30:32.312072 2014] [suexec:notice] [pid 3370] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Tue Sep 30 09:30:32.330380 2014] [auth_digest:notice] [pid 3370] AH01757: generating secret for digest authentication ...
[Tue Sep 30 09:30:32.330421 2014] [auth_digest:error] [pid 3370] (2)No such file or directory: AH01762: Failed to create shared memory segment on file /run/httpd/authdigest_shm.3370
[Tue Sep 30 09:30:32.330440 2014] [auth_digest:error] [pid 3370] (2)No such file or directory: AH01760: failed to initialize shm - all nonce-count checking, one-time nonces, and MD5-sess algorithm disabled
[Tue Sep 30 09:30:32.330445 2014] [:emerg] [pid 3370] AH00020: Configuration Failed, exiting
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

/ var / log / message

Sep 30 08:56:09 brejetuba2 systemd: Starting The Apache HTTP Server...
Sep 30 08:56:09 brejetuba2 systemd: httpd.service: main process exited, code=exited, status=1/FAILURE
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.
Sep 30 08:56:09 brejetuba2 systemd: Failed to start The Apache HTTP Server.
Sep 30 08:56:09 brejetuba2 systemd: Unit httpd.service entered failed state.

/var/log/audit/audit.log

Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.
type=SERVICE_START msg=audit(1412083740.602:469): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg=' comm="httpd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=failed'

디렉토리를 수동으로 만들면 Apache가 시작됩니다.

# mkdir /run/httpd
# systemctl restart httpd
# ls -lRa /run/httpd/
/run/httpd/:
total 8
drwxr-xr-x.  2 root   root  100 Sep 30 09:36 .
drwxr-xr-x. 28 root   root 1020 Sep 30 09:36 ..
-rw-r--r--.  1 root   root    8 Sep 30 09:36 authdigest_shm.3452
-rw-r--r--.  1 root   root    5 Sep 30 09:36 httpd.pid
srwx------.  1 apache root    0 Sep 30 09:36 wsgi.3452.0.1.sock

재부팅 후 다시 사라졌습니다.

왜 이런 일이 일어나고 있는지에 대한 생각?



답변

문제는 Apache를 설치할 때 그룹 아파치 가 생성되지 않았다는 것입니다.

# systemctl status systemd-tmpfiles-setup.service
systemd-tmpfiles-setup.service - Create Volatile Files and Directories
  Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-setup.service; static)
  Active: failed (Result: exit-code) since Tue 2014-09-30 09:40:30 EDT; 3h 24min ago
Docs: man:tmpfiles.d(5)
      man:systemd-tmpfiles(8)
  Process: 724 ExecStart=/usr/bin/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev (code=exited, status=1/FAILURE)
Main PID: 724 (code=exited, status=1/FAILURE)

Sep 30 09:40:30 servername systemd-tmpfiles[724]: [/usr/lib/tmpfiles.d/httpd.conf:1] Unknown group 'apache'.
Sep 30 09:40:30 servername systemd-tmpfiles[724]: [/usr/lib/tmpfiles.d/httpd.conf:2] Unknown user 'apache'.
Sep 30 09:40:30 servername systemd[1]: systemd-tmpfiles-setup.service: main process exited, code=exited, status=1/FAILURE
Sep 30 09:40:30 servername systemd[1]: Failed to start Create Volatile Files and Directories.
Sep 30 09:40:30 servername systemd[1]: Unit systemd-tmpfiles-setup.service entered failed state.

NIS 아파치 사용자 와 함께 NIS 서버를 구성했기 때문 입니다. 아파치 사용자 가 있기 때문에 아파치 설치는 아파치 그룹을 생성하지 않습니다 . 그러나 아파치 그룹도 NIS에 존재합니다! 글쎄, NIS는 엉망입니다.

결론은 : ypbind를 중지하고 Apache를 설치 한 다음 ypbind를 다시 시작해야합니다 (또는 / etc / group에서 수동으로 아파치 그룹을 작성하십시오 ).


답변

재부팅 후 다시 죽었다는 점에서 차이가 나는 @datakid 와 같은 문제에 대한 해결책이 systemd-tmpfiles-setup.service있습니다.

내 솔루션의 경우 먼저 / var 디렉토리를 다른 디스크에 마운트했음을 알아야합니다. 그리고 문제가있었습니다. 내 /etc/fstab에 대해 /var다음과 같이 보았다 :

/dev/xvdb1 /var ext4 defaults,noatime,_netdev,nofail 0 2

그래서 문제는 _netdev였습니다. 이것은 NFS가 유용 할 수 있기 때문에 네트워크가 필요하지만 /var디렉토리의 경우에는 그렇지 않습니다.

_netdev에 대한 설명은 다음과 같습니다.

파일 시스템은 네트워크 액세스가 필요한 장치에 상주합니다 (시스템에서 네트워크가 활성화 될 때까지 시스템이 이러한 파일 시스템을 마운트하지 못하도록하는 데 사용됨).

_netdev를 제거한 후 다시 부팅 한 후 모든 것이 다시 작동했습니다.


답변

나는이 같은 문제가 있었지만 약간 다른 해결책이있었습니다.

@joaoolavo 의 솔루션을 사용하여 시도했습니다 systemctl status systemd-tmpfiles-setup.service.

[root@server ~]# systemctl status systemd-tmpfiles-setup.service
● systemd-tmpfiles-setup.service - Create Volatile Files and Directories
   Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-setup.service; static; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)

활성 : 비활성 (죽음)입니다.

systemd-tmpfiles-setup을 다시 시작하면 / run /에 필요한 파일이 생성되었으며 상태는 Active : active (exited)로 변경되었지만 httpd (및 필자의 경우 postgresql)는로드되지 않았습니다.

[root@server ~]# systemctl start systemd-tmpfiles-setup.service
[root@server ~]# systemctl status systemd-tmpfiles-setup.service
● systemd-tmpfiles-setup.service - Create Volatile Files and Directories
   Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-setup.service; static; vendor preset: disabled)
   Active: active (exited) since Fri 2016-03-18 13:35:36 AEDT; 8s ago
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)
  Process: 2551 ExecStart=/usr/bin/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev (code=exited, status=0/SUCCESS)
 Main PID: 2551 (code=exited, status=0/SUCCESS)

Mar 18 13:35:36 server.org systemd[1]: Starting Create Volatile Files and Directories...
Mar 18 13:35:36 server.org systemd[1]: Started Create Volatile Files and Directories.

재부팅 후에도 지속됩니까?

그렇습니다. 사실, 재부팅은 이제 예상대로 시작됩니다. 생성 된 모든 tmpfile, httpd 및 postgresql도 시작됩니다.

것으로 보인다 systemd-tmpfiles-setup.service요구가 활성 상태로 활성화 (종료) 보다는 비활성 (죽은) 제대로 부팅 후 작업한다.


답변