httpd.service的作业失败,因为控制进程退出并显示错误代码。请参阅" systemctl status httpd.service"和" journalctl -xe"详情

时间:2016-05-09 15:19:35

标签: apache centos7

我已经安装了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.

7 个答案:

答案 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