Apache 无法重新启动

尝试使用以下命令从终端重新启动Apache:
 sudo service apache2 restart

执行该命令时,我遇到了以下错误:
Job for apache2.service failed. See "systemctl status apache2.service" and "journalctl -xe" for details.

执行"systemctl status apache2.service"命令后,我得到以下输出:
apache2.service - (null)
   Loaded: loaded (/etc/init.d/apache2)
   Active: failed (Result: exit-code) since Sat 2015-05-30 02:22:41 IST; 12s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 4866 ExecStart=/etc/init.d/apache2 start (code=exited, status=1/FAILURE)

Apache error.log
AH00489: Apache/2.4.12 (Unix) configured -- resuming normal operations
AH00094: Command line: '/usr/local/apache2/bin/httpd'

10在你运行apache2重启并出现错误后,运行sudo journalctl -xe,这将给你更好的了解发生了什么。如果你仍然不明白,请在这里发布结果。 - grag42
1好的。那也没能帮到我。Apache日志文件里有什么?/var/log/apache2/error.log - grag42
@grag42,谢谢你的建议。我运行了sudo journalctl -xe命令,并发现一些重写规则问题,已经修复好了,现在它正常运行。 - Gautam Savaliya
好听到这个消息 - grag42
4可能是Apache无法启动的重复问题。 - rancho
3@rancho:你为什么认为这个问题是重复的?链接的问题中包含了一个非常具体的错误信息,而我们这里没有。目前导致楼主问题的可能原因还不太明确。 - David Foerster
在我的情况下,端口80被占用了,所以我不得不关闭它,使用命令sudo fuser 80/tcp -l,然后我才能启动Apache。 - Armin
12个回答

文件apache2.conf中存在一些语法错误。

在终端中输入:

cd /etc/apache2

然后:

apache2ctl configtest

它会告诉你在apache2.conf文件中的错误位置以便进行修正。

2非常好的方法,谢谢,节省了我的时间。 - George G
1太棒了。 - abalter
1谢谢。Redmine和PassengerResolveSymlinksInDocumentRoot选项出了问题。 - Vadim
4哈哈,执行了apache2ctl configtest后得到语法正确,但是当我运行apache2 --help时,出现了apache2: Syntax error on line 82 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot的错误,并且在apache的error.log中没有任何错误记录! - Vladimir Ch
1在仔细查看/etc/apache2/sites-enabled/目录后,我注意到我有一个文件,而不是对site.conf的符号链接。重新启用mod php5.6(sudo a2dismod php5.6; sudo a2enmod php5.6),我的apache2服务已经启动,没有出现“哦-啊”的情况。 - Vladimir Ch
感谢这个技巧。在我的电脑上,问题是Apache2的日志目录在/var/log/目录中丢失了。一旦我使用mkdir /var/log/apache2重新创建了该目录,它就不再抱怨了。 - Puspam
谢谢,真是救命稻草。 - ericgr
非常感谢,这节省了我很多时间。 - Nirali Khoda
你可能需要使用sudo来运行此命令,否则它的输出可能会有些误导性。 - tyler.frankenstein
错误是由于这一行Include /etc/phpmyadmin/apache.conf引起的,它包含了一个空文件,所以我已经将其注释掉了,现在一切都正常了。 - NAND

也许这会有助于找到原因:
journalctl | tail

在我的情况下,这是配置文件中的一个错误。
AH00526: Syntax error on line 5 of /etc/apache2/sites-enabled/mydomain-wsf.lan.conf

7No journal files were found. - tread
6@StevieG,尝试使用sudo journalctl | tail命令。 - Dherik
1你是怎么修好那个东西的? - Léo Léopold Hertz 준영
在我的情况下,我在apache2.config文件中也犯了一个错误。 - alamin
谢谢。我错误地输入了我的新添加的站点配置文件的目录。 - Lynnell Neri

问题是由于某些配置文件被删除,您必须重新安装它。

重新安装APACHE2:

要替换已删除的配置文件,而不清除软件包,您可以执行以下操作:

sudo apt-get -o DPkg::Options::="--force-confmiss" --reinstall install apache2

要完全删除apache2的配置文件,您应该:
sudo apt-get purge apache2

这将使您能够以通常的方式重新安装它。
sudo apt-get install apache2

需要进行清除操作以删除所有的配置文件 - 如果你只删除了配置文件但是没有移除软件包,那么这个操作会被记住,并且缺失的配置文件不会被默认重新安装。
然后重新安装 PHP5:
apt-get purge libapache2-mod-php5 php5 && \
apt-get install libapache2-mod-php5 php5

2你认为为什么会有一些配置文件被删除了? - Léo Léopold Hertz 준영
谢谢你指导我使用purge!这个命令解决了我的apache2无法运行的问题:$ sudo apt purge apache2 && sudo apt install apache2 - Fred
这对我来说很有效。天才! - Carlos Eduardo Baldocchi

问题:
Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.

解决方案:

  • 要完全删除 apache2 配置文件,您应该执行以下操作:

    1)sudo apt-get purge apache2

  • 然后,您可以使用以下命令以通常的方式重新安装它:

    2)sudo apt-get install apache2

==> 运行良好...

谢谢....


在删除虚拟主机后,我遇到了同样的错误。问题是与该主机关联的残留SSL配置文件位于/etc/apache2/sites-enabled目录中。这个SSL是通过Let's Encrypt实现的,所以我需要删除的代码是:
sudo rm yourdomain.com-le-ssl.conf

你很可能有一个语法错误。对我来说,它在我的'sites-enabled'文件夹里。
我将'ServerAlias'错误地拼写成了'ServerAlisa'。

我弄错了我的文件夹。 - Lynnell Neri

我在使用.htaccess时遇到了相同的错误。
我只是输入了这个命令。
<Directory /var/www/html>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
</Directory>

在`/etc/apache2/sites-enabled/000-default.conf`这个文件夹中,
添加了这个之后,我遇到了错误。
然后我从文件中删除了这些命令片段,我的错误问题得到了解决。

在我的情况下,在执行了apt upgrade之后,错误开始出现。经过一番尝试后,我去了以下目录查看可以禁用哪些内容。
  • /etc/apache2/mods-enabled - 使用a2dismod(重新启用a2enconf
  • /etc/apache2/conf-enabled - 使用a2disconf(重新启用a2enconf
在我的情况下,我必须启用这些模块。

enter image description here

看起来 apt-upgrade 一定是移除/损坏了 php7.2 ,因为一旦我禁用它并重新启动,一切都正常工作。当然,在其他人的情况下,可能是其他原因。当 Apache 崩溃时,可能是配置问题或模块问题。你必须选择你要解决的问题。

这主要是一个配置错误。我刚刚在apache上启用了一个旧网站,导致了这个错误。所以我必须在重新加载apache之前将其禁用。
sudo a2dissite <my-site>
sudo service apache2 reload

问题解决了 :)

谢谢你的帮助!我成功地安装好了,解决方法如下:
要完全删除apache2的配置文件,你需要执行以下步骤:
1. 使用命令sudo apt-get purge apache2来彻底卸载它,然后可以按照正常方式重新安装: 2. 使用命令sudo apt-get install apache2 现在一切都正常运行。