为什么升级到 Ubuntu 14.04 后我的 Apache 无法工作?

为什么升级到 Ubuntu 14.04 后我的 Apache 无法工作?
[aman@aman-Inspiron-1440:~$ apache2
[Mon Apr 21 17:36:38.019213 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Mon Apr 21 17:36:38.019345 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Mon Apr 21 17:36:38.019370 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Mon Apr 21 17:36:38.019385 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Mon Apr 21 17:36:38.019414 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.028756 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029032 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029056 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf:
Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}

/etc/apache2/apache2.conf是文件的内容。

答案1

尽管 Apache 可以正常工作,但我还是遇到了这个问题。我只是想快速

$ /usr/sbin/apache2 -V

找到 的值SERVER_CONFIG_FILE。因为这不再是启动 apache2 的方法,所以它会失败并出现 OP 发布的错误消息。一个快速而粗略的解决方法是先设置缺少的环境变量:

$ source /etc/apache2/envvars
$ /usr/sbin/apache2 -V

这将设置 APACHE_LOCK_DIR 变量并且一切正常(-D SERVER_CONFIG_FILE="apache2.conf")。

答案2

我遇到了这个问题:原因在于文件

/etc/apache2/sites-available/000-default.conf 

根发生改变的地方:

升级前 =/var/www
升级后 =/var/www/html

因此编辑修改此文件

sudo gedit /etc/apache2/sites-available/000-default.conf

并重启 apache

sudo service apache2 restart

答案3

症状和解决方案

在许多问答网站或论坛中,人们混淆了症状和实际原因。我刚刚将 ubuntu 服务器从 13.10 升级到 14.04.1,遇到了 OP 描述的完全相同的症状,包括:
1- apache 显然无法正常工作。2- apache 配置变量未定义。3- OP 提到的语法错误。

问题在于,并非所有这些症状都与实际问题相关,它们只会分散那些尽力提供帮助的人的注意力。

不同的根问题可能会导致管理员来到类似这样的网站,并且给出大致相同的描述:“我升级了操作系统,但现在 apache 无法运行...”

一个具体的原因

由于与原帖者有完全相同的症状,我被这个问题吸引了。不幸的是,唯一一个对我的问题的真正根源有有效暗示的答案被否决了(-1),由 user1469291 发布,其声誉为 1!!所以我进一步搜索了其他网站,直到我找到了对这个问题的清晰解释(从而找到了解决方案)。

以下解决方案可能无法解决 OP 的真正问题,但我确信它将帮助其他可能与我出于相同原因而被这个问题吸引的人。

/etc/apache2/apache2.conf 包含:

# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

这意味着只有 /etc/apache2/sites-enabled/ 中以 .conf 结尾的站点配置文件才会被加载。该目录中较旧的符号链接将被忽略。

它以前只是 sites-enabled/*。这就是为什么我的所有虚拟主机配置文件(我简单地命名为 ww1.example.com、ww2.example.com 等)以前都可以工作,但在升级后突然且最初莫名其妙地停止工作。

因此,要么更改上述指令并重新加载 apache,要么像我一样,手动删除 sites-enabled/ 中的所有旧符号链接,重命名 sites-available/ 中的所有文件以添加后缀 .conf,然后单独重新启用每个站点。

此外,apache.conf 中的默认指令更加严格:

<Directory />
  Options FollowSymLinks
  AllowOverride None
  Require all deny
</Directory>
<Directory /var/www/>
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
</Directory>

因此,如果您在 /home/user/somewhere 中托管虚拟站点,请确保适当地覆盖该指令。

答案4

编辑配置sudo leafpad /etc/apache2/apache2.conf::

# Include the virtual host configurations:

#before upgrade = 
IncludeOptional sites-enabled/*
#after upgrade = 
/IncludeOptional sites-enabled/*.conf

或刪除文件。

相关内容