每次服务器重新启动时,目录/ run / httpd都将被删除。 / run是一个tmpfs文件系统,因此安装在RAM中。
/ run / httpd仅在安装过程中创build。 当我重启后启动httpd时,目录不会被重新创build。
服务器安装了CentOS 7和官方的Apache软件包(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 /日志/的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 /日志/消息
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'
当我手动创build目录时,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时,组apache没有被创build。
# 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.
那是因为我configuration了一个NIS服务器,并且有一个NIS apache用户。 由于它有一个apache用户,Apache安装不会创buildapache组。 但是NIS上也存在apache组! 那么,NIS搞乱了事情。
底线是:我必须停止ypbind,安装Apache,然后重新启动ypbind(或者在/ etc / group中手动创build一个apache组)。
我的问题与@datakid有相同的解决scheme,不同之处在于在重新启动后systemd-tmpfiles-setup.service再次死机。
对于我的解决scheme,首先需要知道我将我的/ var目录安装在不同的磁盘上。 这是问题所在。 我/etc/fstab的/var看起来像这样:
/dev/xvdb1 /var ext4 defaults,noatime,_netdev,nofail 0 2
所以问题是_netdev。 因为这可能对于NFS来说很有用,在那里你需要一个networking,而不是我/var目录的情况
以下是对_netdev的解释:
文件系统驻留在需要networking访问的设备上(用于防止系统尝试挂载这些文件系统,直到系统启用networking)。
在我删除了_netdev之后,一切又重新开始了
我有同样的问题,但有一个稍微不同的解决scheme。
使用@joaoolavo的解决scheme,我试过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)
请注意Active:无效(死)。
重新启动systemd-tmpfiles-setup在/ run /下创build了我需要的文件,状态变成了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.
它会重新启动吗?
是的,它确实。 事实上,重启现在已经出现了 – 所有创build的tmpfiles,httpd和postgresql也都启动了。
看起来systemd-tmpfiles-setup.service需要在启动后处于活动状态(活动状态),而不是非活动状态( 无效)才能正常工作。