从 Apache 2.2 升级到 2.4 需要更新哪些 Virtual Host 设置?

在我们的博客中, 记录了我们在开发过程中所使用的技术和遇到的问题, 希望作为其他开发和设计者的一个学习交流平台.

从 Apache 2.2 升级到 2.4 需要更新哪些 Virtual Host 设置?


如果你和我们一样从Ubuntu 12.04升级到Ubuntu14.04, 那么你会发现Apache版本从2.2变成了2.4; 或者你只是将Apache 2.2升级为2.4. 那么你可能会发现Apache无法正常工作了. 你可以使用本篇中所提到的设置时Apache重新工作. 本篇中所提到的Virtual Host设置文件的更新是必须要做的, 否则Apache就无法工作. 本篇博文并不是一个完整的升级指导, 如果需要查看完整的升级指导, 请访问Apache官方升级指导

1. 备份

在升级之前请备份数据文件, 因为升级有可能会使你丢失数据.

2. Virtual Host设置更新

从apache 2.2升级到Apache 2.4:

  • 对于Ubuntu和Debian, 在etc/apache2/sites-available目录中的文件必须以.conf结尾才能被读取
  • Virtual host设置中的Directory必须有Require all granted才行
    <Directory /path/to/public/website/>
        Require all granted
    </Directory>

所以, 对于Ubuntu和Debian用户, 你需要修改Virtual host中的2处设置才能使Apache 2.4重新运作, 而其他Linux的用户则只需要做第二项的修改.

a. 增加.conf扩展名 (针对Ubuntu和Debian用户)

我们可以使用mv命令为Virtual host文件添加cong扩展名:

    mv /etc/apache2/sites-available/example.com /etc/apache2/sites-available/example.com.conf

然后使用阿ensite命令重新增加virtual host, 不要忘了添加.conf后缀:

    a2ensite example.com.conf

对所有virtual host文件重复以上两步, 最后重新载入:

    sudo service apache2 reload

b. 增加权限 (针对所有用户)

打开网站的virtual host文件, 例如/etc/apache2/sites-available/example.com.conf, 在VirtualHost下的Directory中添加Require all granted. 如果存在Require all denied, 则改为Require all granted:

    <VirtualHost *:80>
        ...
        <Directory /path/to/public/website/>
            Require all granted
        </Directory>
    ...
    </VirtualHost>

保存并对其他virtual host文件执行以上步骤, 最后重新载入:

Ubuntu/Debian:

    sudo service apache2 reload

CentOS:

    /etc/init.d/httpd reload

Fedora:

    systemctl reload httpd.service

此时检查网站是否能正常运行.

3. 其他注意事项

升级过程中默认的virtual host文件可能会从/var/www变为var/www/html, 不要忘了重新静止它.

升级后如果有不兼容的模块的话, 这些模块也会组织apache正常运行, 此时Apache官方升级指导是检查的起点.


原文链接: http://weiguda.com/blog/71/