我已经安装了Centos 7的新副本。然后我重新启动了Apache,但是Apache无法启动。我有3天时间陷入这个问题。甚至支持也无法弄清楚错误。
sudo service httpd start
Failed to start apache :
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2016-05-09 16:08:02 BST; 59s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 5710 (code=exited, status=1/FAILURE)
May 09 16:08:02 mike079.startdedicated.de systemd[1]: Starting The Apache HTTP Server...
May 09 16:08:02 mike079.startdedicated.de httpd[5710]: (98)Address already in use: AH00072: make_sock: could not bind to address 85.25.12.20:80
May 09 16:08:02 startdedicated.de httpd[5710]: no listening sockets available, shutting down
May 09 16:08:02 startdedicated.de httpd[5710]: AH00015: Unable to open logs
May 09 16:08:02 startdedicated.de systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
May 09 16:08:02.startdedicated.de kill[5712]: kill: cannot find process ""
May 09 16:08:02 .startdedicated.de systemd[1]: httpd.service: control process exited, code=exited status=1
May 09 16:08:02startdedicated.de systemd[1]: Failed to start The Apache HTTP Server.
May 09 16:08:02 startdedicated.de systemd[1]: Unit httpd.service entered failed state.
May 09 16:08:02 mike: httpd.service failed.
答案 0 :(得分:2)
从你的输出:
没有可用的侦听套接字,关闭
基本上意味着,一个apache将要监听的任何端口已被另一个应用程序使用。
netstat -punta | grep LISTEN
将为您提供所有正在使用的端口的列表以及识别哪个流程所需的信息,以便您kill
stop
或做任何您想做的事情。
在执行了nmap
你的ip后我可以看到
80/tcp open http
所以我猜你把它整理出来了。
答案 1 :(得分:2)
在我的情况下,我得到错误的原因仅仅是因为我已将侦听80更改为侦听文件中的443
/etc/httpd/conf/httpd.conf
自从我使用yum命令安装了mod_ssl
yum -y install mod_ssl
在ssl.conf
安装期间创建的文件mod_ssl
中存在重复的listen 443指令。
如果您在Linux centos(My linux)中运行以下命令,可以验证是否有重复的侦听80或443
grep '443' /etc/httpd/conf.d/*
下面是示例输出
/etc/httpd/conf.d/ssl.conf:Listen 443 https
/etc/httpd/conf.d/ssl.conf:<VirtualHost _default_:443>
/etc/httpd/conf.d/ssl.conf:#ServerName www.example.com:443
只需将httd.conf中的监听443还原为监听80,即可解决我的问题。
答案 2 :(得分:1)
在命令行上输入journalctl -xe
,结果将为
SELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket port 83 or 80
这意味着SELinux正在您的计算机上运行,您需要禁用它。然后通过键入以下内容来编辑配置文件
nano /etc/selinux/config
然后找到行SELINUX=enforce
并更改为SELINUX=disabled
然后键入以下内容并运行命令以启动httpd
setenforce 0
最后启动服务器
systemctl start httpd
答案 3 :(得分:1)
允许Apache通过防火墙
通过firewalld允许使用默认的HTTP和HTTPS端口80和443:
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
然后重新加载防火墙:
sudo firewall-cmd --reload
答案 4 :(得分:0)
<VirtualHost *:80>
ServerName www.YOURDOMAIN.COM
ServerAlias YOURDOMAIN.COM
DocumentRoot /var/www/YOURDOMAIN.COM/public_html
ErrorLog /var/www/YOURDOMAIN.COM/error.log
CustomLog /var/www/YOURDOMAIN.COM/requests.log combined
DocumentRoot /var/www/YOURDOMAIN.COM/public_html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/YOURDOMAIN.COM/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
答案 5 :(得分:0)
由于vhost.conf中有一个简单的错字,我也遇到了同样的错误。 请记住要确保配置文件中没有任何错误。
apachectl configtest
答案 6 :(得分:0)
某些其他服务可能正在使用端口80:尝试使用命令 sudo systemctl stop 停止其他服务:HTTPD,SSL,NGINX,PHP,然后使用命令 sudo systemctl开始httpd