我正在关注这在 Centos 7 中设置两个虚拟主机的教程。
问题是我在重新启动 httpd 时收到以下错误。
[userme@server ~]$ sudo systemctl restart httpd.service
[sudo] password for userme:
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
我的配置是
[userme@server ~]$ cat /etc/hosts
127.0.0.1 server.workstation.com server
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[userme@server ~]$ hostname
server.workstation.com
[userme@server ~]$ cat /etc/sysconfig/network
# Created by anaconda
NETWORKING=yes
HOSTNAME=server
[userme@server ~]$ cat /etc/resolv.conf
# Generated by NetworkManager
search workstation.com
nameserver fe80::1%p3p1
nameserver 192.168.100.1
[userme@server ~]$ domainname
(none)
编辑根据要求
[userme@server ~]$ systemctl status httpd -l
● 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 2018-01-18 12:55:25 +04; 57min ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 1285 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
Process: 1283 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
Main PID: 1283 (code=exited, status=1/FAILURE)
Jan 18 12:55:25 server.workstation.com systemd[1]: Starting The Apache HTTP Server...
Jan 18 12:55:25 server.workstation.com httpd[1283]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using server.workstation.com. Set the 'ServerName' directive globally to suppress this message
Jan 18 12:55:25 server.workstation.com systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Jan 18 12:55:25 server.workstation.com kill[1285]: kill: cannot find process ""
Jan 18 12:55:25 server.workstation.com systemd[1]: httpd.service: control process exited, code=exited status=1
Jan 18 12:55:25 server.workstation.com systemd[1]: Failed to start The Apache HTTP Server.
Jan 18 12:55:25 server.workstation.com systemd[1]: Unit httpd.service entered failed state.
Jan 18 12:55:25 server.workstation.com systemd[1]: httpd.service failed.
[userme@server ~]$ sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: p3p1
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[userme@server ~]$ apachectl configtest
Syntax OK
我的网络/主机名设置有什么问题?任何帮助,将不胜感激。
答案1
这看起来像是 CentOS 7 上默认启用的 SELINUX 的问题。
设置SELINUX=permissive
并重新启动服务器会将问题记录到 /var/log/audit/audit.log 中,以便设置适当的 SELINUX 设置以允许 SELINUX 保护服务器。
此外,还需要设置firewalld
允许访问端口 80 和 443 以允许外部连接:
firewall-cmd --add-service=http
firewall-cmd --add-service=https
linode 有一篇关于firewalld 的很好的文章但我还没有找到好的 SELINUX 资源...
答案2
根据您的错误消息:Set the 'ServerName' directive globally to suppress this message
在该httpd.conf
文件中,您应该找到ServerName
,在其上方您可能会找到以下注释:
ServerName gives the name and port that the server uses to identify itself.
This can often be determined automatically, but we recommend you specify
it explicitly to prevent problems during startup.
If your host doesn't have a registered DNS name, enter its IP address here.
因此添加以下行:
ServerName server:[PORT]
应该可以解决您的启动问题。