如何为 Apache 2.4/ubuntu 13.10 及更高版本设置虚拟主机?

Posted

技术标签:

【中文标题】如何为 Apache 2.4/ubuntu 13.10 及更高版本设置虚拟主机?【英文标题】:How to setup virtual host for Apache 2.4/ubuntu 13.10 and above? 【发布时间】:2014-01-25 00:42:36 【问题描述】:

在将 ubuntu 更新到 13.10 后,我很难设置虚拟主机! 这是我尝试过的:

启动终端并输入:

sudo a2enmod vhost_alias

如果您没有收到任何错误消息并且您的返回如下所示,那么您就在正确的轨道上。

Enabling module vhost_alias.
Run '/etc/init.d/apache2 restart' to activate new configuration!

接下来要做的是通过键入转到站点可用目录

cd /etc/apache2/sites-available/

好的,现在我们在 apaches 目录中,所有虚拟主机的定义文件都在其中。我们要复制默认模板一,隐晦地命名为 default

sudo cp default our-test-site

这将创建一个名为 our-test-site 的默认模板的副本(您当然应该将其替换为您想要的任何内容)。让我们编辑它,输入

sudo gedit our-test-site

这将在编辑器中打开文件,下面是默认 vhost 文件的内容(如果您进行了一些自定义,则与往常一样 YMMV)

 ServerAdmin webmaster@localhost

 DocumentRoot /var/www

      Options FollowSymLinks
      AllowOverride None


      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all


  ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

      AllowOverride None
      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
      Order allow,deny
      Allow from all


  ErrorLog /var/log/apache2/error.log

  # Possible values include: debug, info, notice, warn, error, crit,
  # alert, emerg.
  LogLevel warn

  CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"

        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128

我们需要添加一行并编辑两行。

在 DocumentRoot 指令上方(第 4 行前面)添加 ServerName our-test-site.local。

在第 4 行编辑 DocumentRoot /var/www 路径并将其设置为 /path-to-the-test-site-WITHOUT-trailing-slash。它应该看起来像这样

DocumentRoot /path-to-the-test-site-WITHOUT-trailing-slash

如果您没有注意到我的细微提示,路径末尾不应有斜杠。

编辑第 9 行的路径并将其设置为 /path-to-the-test-site-WITH-trailing-slash/。它应该看起来像这样

DocumentRoot /path-to-the-test-site-WITHOUT-trailing-slash

如果你没有注意到我的微妙提示,路径的末尾应该有一个斜杠。

您已经完成了,虚拟主机文件已设置完毕。通过键入启用它

sudo a2ensite our-test-site

响应应该是这样的

Enabling site our-test-site.
Run '/etc/init.d/apache2 reload' to activate new configuration!

此时虚拟主机设置完成,剩下的就是告诉服务器 our-test-site.local 应该被重新加载到 127.0.0.1。我们通过键入来做到这一点

sudo gedit /etc/hosts

并在 localhost(第 1 行)之后添加 127.0.0.1 our-test-site.local。

整个 hosts 文件应该是这样的

127.0.0.1    localhost
127.0.0.1 our-test-site.local
127.0.1.1 ubuntu-vm

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

保存,关闭编辑器,最后输入

sudo /etc/init.d/apache2 restart

sudo apache2ctl restart

到此为止,您的虚拟主机已设置完毕,打开浏览器并输入http://our-test-site.local 即可享受。

更新:如果您在访问 localhost 的内容时遇到问题,您应该将 ServerName localhost 添加到您的默认虚拟主机中(如上文针对新虚拟主机所述)。然后禁用和启用站点,然后重新启动 apache

sudo a2dissite default
sudo a2ensite default
sudo /etc/init.d/apache2 restart

更新 2:在您的新虚拟主机文件中,您应该更改您的

AllowOverride None

AllowOverride All

对于您的前两个目录节点(/ 一个和一个带有您站点路径的节点)。这将允许所有 .htaccess 文件正常工作并允许重定向。

当然不要忘记

sudo a2dissite our-test-site
sudo a2ensite our-test-site
sudo /etc/init.d/apache2 restart

【问题讨论】:

【参考方案1】:

问题在于 Apache 2.4/ubuntu 13.10 及更高版本的站点可用文件类似于 name.conf 而不是

sudo cp default our-test-siteof

我就是这样做的

sudo cp default.conf our-test-site.conf

等等。

【讨论】:

我使用的是 ubuntu 12.04,更新 apache 后我还必须更改文件名

以上是关于如何为 Apache 2.4/ubuntu 13.10 及更高版本设置虚拟主机?的主要内容,如果未能解决你的问题,请参考以下文章

XAMPP:如何为 PHP 配置 Apache

如何为 React 路由设置 apache 服务器?

如何为apache服务器设置codeigniter?

如何为开发环境配置 vhosts/apache 子域?

如何为 GET 请求正确配置 Apache 重写规则?

如何为 PHP 8 设置合适的 Apache 版本