Apache 配置在 12.04.2 和 12.04.3 LTS 之间的变化

Apache 配置在 12.04.2 和 12.04.3 LTS 之间的变化

所以,今天我将一堆 Web 服务器从 12.04.2 更新到 12.04.3,你猜怎么着,更新后没有一个 vhost 可以工作。

主要原因是:

在 apache2.conf 中,该行 IncludeOptional sites-enabled/* 被替换为 IncludeOptional sites-enabled/*.conf

好的,没什么大不了的。我们启用站点的目录中的所有符号链接都缺少 .conf 扩展名,因此这些文件不会包含在配置中。

然而,Apache 处理访问控制的方式在各个版本之间也发生了变化。根据http://httpd.apache.org/docs/2.4/upgrading.html#access我必须改变

Order allow,deny
Allow from all

在 vhost 配置中

Require all granted

或包含该mod_access_compat 模块。

现在,我的问题是……我一直觉得 LTS 版本应该可以更新而不会破坏任何东西。我的意思是能够在 sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade不破坏任何东西的情况下运行。这个假设错了吗?如果错了,我在哪里以及如何提前知道下次会发生什么?我的意思是,我如何知道更新后我必须修改我的 apache / php / 任何配置?

答案1

您确定 Apache 2.4 是从 Ubuntu 的规范存储库之一安装的吗?您是否使用了任何 PPA?

第三方 PPA 为 PHP 5.4 将 Apache 2.2 升级到了 2.4。后来它被改为 PHP 5.5,并且 Apache 2.4 被添加到 PPA 中。当我遇到与您相同的问题时,一个新的 Vagrant 在破坏后启动时崩溃了,并且 vhost 配置与 Apache 2.4 不兼容。

“apt-cache policy apache2” 的输出是什么样的?我刚刚创建了一个新的空白 Vagrant 实例并执行了sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade。这是我的输出:

t# apt-cache 策略 apache2
阿帕奇2:
  已安装:(无)
  候选版本:2.2.22-1ubuntu1.4
  版本表:
     2.2.22-1ubuntu1.4 0
        500 http://us.archive.ubuntu.com/ubuntu/precise-updates/main amd64 软件包
        500 http://security.ubuntu.com/ubuntu/precise-security/main amd64 软件包
     2.2.22-1ubuntu1 0
        500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 软件包

我怀疑你会看到 Apache 2.4 来自第三方存储库,而不是 12.04 的规范存储库。

答案2

我也可以确认这个问题。11 月 27 日,我使用 Webmin 进行了所有 Ubuntu 更新。vhosts 坏了,但现在可以通过添加 .conf 扩展轻松修复。添加

<Directory />
  Options All
  AllowOverride All
  Require all granted
</Directory>

我的 vhost 文件就成功了。

同样,在我的案例中,根据我的 Drupal 状态报告,uploadprogess PHP 扩展也损坏了。最终有效的解决方案是使用 PECL 卸载并重新安装。Apache 更新显然将 .so 文件移到了另一个目录中,重新安装后将其放回了正确的位置。

至于第三方存储库是 2.4 的来源,唯一添加的是 2 个用于 Webmin 的存储库。我以前从未担心过系统更新,但现在我想我必须担心了 :( 我认为 Ubuntu 搞砸了。

相关内容