我的 httpd.conf 中有这个:
Listen 216.XX.YY.ZZZZ:80
只是为了确保,我确保在启动时启用了 httpd:
systemctl httpd enable
当系统启动时,我有:
systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Thu 2017-02-23 22:21:03 PST; 8min ago
Process: 719 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
Main PID: 719 (code=exited, status=1/FAILURE)
Feb 23 22:21:00 centosXXXXXX.aspadmin.net systemd[1]: Starting The Apache HTTP Server...
Feb 23 22:21:03 centosXXXXXX.aspadmin.net httpd[719]: (99)Cannot assign requested address: AH00072: make_sock: could not bind to address 216.XX.YY.XXX:80
Feb 23 22:21:03 centosXXXXXX.aspadmin.net httpd[719]: no listening sockets available, shutting down
Feb 23 22:21:03 centosXXXXXX.aspadmin.net httpd[719]: AH00015: Unable to open logs
Feb 23 22:21:03 centosXXXXXX.aspadmin.net systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Feb 23 22:21:03 centosXXXXXX.aspadmin.net systemd[1]: Failed to start The Apache HTTP Server.
Feb 23 22:21:03 centosXXXXXX.aspadmin.net systemd[1]: Unit httpd.service entered failed state.
Feb 23 22:21:03 centosXXXXXX.aspadmin.net systemd[1]: httpd.service failed.
然后我可以通过运行来启动它:
systemctl start httpd
一切正常:
systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2017-02-23 22:31:53 PST; 3s ago
Main PID: 2804 (httpd)
Status: "Processing requests..."
CGroup: /system.slice/httpd.service
├─2804 /usr/sbin/httpd -DFOREGROUND
├─2805 /usr/sbin/httpd -DFOREGROUND
├─2806 /usr/sbin/httpd -DFOREGROUND
├─2808 /usr/sbin/httpd -DFOREGROUND
├─2824 /usr/sbin/httpd -DFOREGROUND
└─2831 /usr/sbin/httpd -DFOREGROUND
Feb 23 22:31:53 centosXXXXXX.aspadmin.net systemd[1]: Starting The Apache HTTP Server...
Feb 23 22:31:53 centosXXXXXX.aspadmin.net httpd[2804]: AH00558: httpd: Feb 23 22:31:53 centosXXXXXX.aspadmin.net systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
使用. 中的普通网络脚本将 IP 分配给 eth0 /etc/sysconfig/network-scripts/ifcfg-eth0
。
检查/lib/systemd/system/httpd.service
我有:
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
网上唯一类似的问题在这里:https ://unix.stackexchange.com/questions/207063/apache-httpd-failing-to-start-on-boot-centos-7但是,他们的建议:
systemctl enable NetworkManager-wait-online.service
Failed to execute operation: No such file or directory
似乎不起作用。
我完全迷路了。
事实证明,您需要使用 NetworkManager 才能工作,因为您想等待 IP实际可用。CentOs 7 默认不安装 NetworkManager。
所以:
启用它:
然后:
并添加:
此时,HTTPD 只会在 IP 分配给接口和 bingo 后才会启动,它才会真正启动。