【问题标题】:set up a vhost with vagrant用 vagrant 建立一个虚拟主机
【发布时间】:2014-09-06 19:22:16
【问题描述】:

我在使用 vagrant 设置虚拟主机时遇到了麻烦。 我已经在我的主机(192.168.33.10 local.dev)上配置了我的主机文件。但是我不知道如何在我的虚拟机中设置我的虚拟主机以及如何访问它。而且我不想使用木偶或厨师或其他人,因为我想了解我在做什么...... :) 目前这是我的虚拟主机设置:

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/support/mysite
<Directory /var/www/html/support/mysite>
     Options -Indexes +FollowSymLinks
     AllowOverride All
     Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/mysite-error.log
CustomLog ${APACHE_LOG_DIR}/mysite-access.log combined

问题是我真的不知道我应该把什么作为服务器名称或别名以及如何访问它。 感谢您的帮助!!!

【问题讨论】:

    标签: vagrant vhosts


    【解决方案1】:

    我认为对于 Vagrant Box 上的 VHosts 问题有一个更优雅的解决方案。

    直接在 Vagrant 文件中设置您的虚拟主机,以便您的配置可以提交到 git。

    在此处查看在 Vagrantfile 中设置 VHosts 的说明:

    https://github.com/onema/vagrant-lamp-development#creating-custom-vhosts

    这里有关于 Chef Solo 的文档

    https://docs.chef.io/chef_solo.html

    【讨论】:

      【解决方案2】:

      如果您已经在主机文件中添加了所有要作为虚拟站点运行的站点(都具有相同的 IP),那么您需要做的就是将多个“VirtualHost”配置添加到您的 apache conf 文件并使用相同的您定义的“site.dev”名称。 Apache 将读取它并指向正确的“DocumentRoot”。

      这是一个定义了两个站点的 sn-p。只需为更多网站添加更多定义:

      <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/site1/
        ErrorLog logs/site1_error_log
        CustomLog logs/site1_access_log combined
        ServerName site1.dev
      </VirtualHost>
      
      <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/site2/
        ErrorLog logs/site2_error_log
        CustomLog logs/site2_access_log combined
        ServerName site2.dev
      </VirtualHost>
      

      【讨论】:

      • 谢谢!我实际上是在一段时间后自己发现的。不幸的是,我没有早点看到你的答案:)
      【解决方案3】:

      只要每台机器只为一个站点提供服务,您就不需要虚拟主机 - 在这种情况下为 local.dev。您可以保留默认的 apache2 配置。

      您需要了解虚拟主机的实际用途才能看到:

      虚拟主机的主要目的是可以在一台机器上运行多个具有不同 DNS 域名的网站,并且只分配一个公共 IP 地址。虽然有许多网站由于流量低而永远不会耗尽服务器的物理能力,但最明显的优势是可用域的数量现在独立于可用 IP (v4) 地址的数量,这是非常有限的.

      这是通过在 1.1 版中启动的 HTTP 更改来实现的。更改将 Host 标头添加到包含服务器域名的 HTTP 请求中。 HTTP 服务器通常不会有以下信息:“客户端用来访问我的主机名是什么”,因为 DNS 解析将在客户端发出 HTTP 请求之前发生,然后服务器将通过其 IP 地址访问。

      拥有来自Host 标头的信息,服务器在通过其IP 地址访问时,可以决定应该为哪个站点提供服务。然后,多个站点将为此具有不同的文档根文件夹。


      但是,您只从 vagrant box 提供一个页面,因此不需要设置虚拟主机。只需使用 apache 的 default 之一。

      【讨论】:

      • 感谢您的回答。但是,我想为不同的项目设置 1 个 VM,因为它们使用相同的配置。这就是我想设置虚拟主机的原因:)
      • 你设置了两个虚拟机?每个项目一个?
      • 我想为多个项目使用 1 台虚拟机……这可能吗?还是我必须为每个项目保留一个虚拟机?
      • 我想要的是,当我输入我的项目 url 时,我会进入一个项目,然后我输入另一个项目,我会得到另一个......但所有这些都在 1 个 VM 内。这就是为什么我需要虚拟主机
      • 那么它仍然只是一个问题:“如何使用 apache2 设置虚拟主机”。虽然这真的很直观,但那里有数十亿的答案。
      猜你喜欢
      • 2017-08-01
      • 2012-07-18
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 2015-06-19
      • 2015-09-17
      • 2014-11-04
      • 2018-05-15
      相关资源
      最近更新 更多