1.8 设置一个虚拟主机

    我的设想是,我们可以在Windows中利用比较丰富的GUI资源和程序进行PHP和Web应用的编程,对目录和文件的操作会即时反应到盒子中,然后我们在盒子中来提供这个Web应用的访问。在这种配置下,我们能最大限度地模拟最终的生产环境。用一张图来说明可能更好:

    如果我们在Windows机器中用浏览器访问Vagrant盒子:http://192.168.2.100,我们已经能够看到由Vagrant盒子伺服的Web内容(现在当然只是Apache缺省的欢迎页面)。

    但是我们想做得更完善一点。我想做到的是,在Windows中可以通过这样的方式来访问Vagrant中的Web应用,而且这个应用是放在一个我们指定的目录中,便于管理和分发。

    要能在Windows中用vagrant这样的“域名”来访问远程服务器,我们需要修改Windows的系统文件hosts,它位于C:\Windows\System32\drivers\etc目录下。

    注意:这是一个系统文件。你需要有Administrator权限才能对这个文件进行修改。

    在这个文件中加入这么一行:

    如果我们现在用http://vagrant来访问我们的Vagrant盒子,我们还是会得到同样的Apache欢迎页面。这是因为,我们并没有在Vagrant中设置一个“记录”来处理针对vagrant的Web访问。

    我建议使用虚拟主机的方式来伺服我们的Web应用。自Apache 2.4以来,Apache对虚拟主机的设置和伺服做了一些改动,因此需要一些相关的指令来设置虚拟主机。

    登录Vagrant后,我们进入/etc/apache2/sites-available目录,目前这里应该只有一个名为的站点配置文件和一个default-ssl.conf的文件。

    要创建我们自己虚拟主机(站点)配置,我们可以从这个000-default.conf出发。先将这个文件做个拷贝:

    sudo cp 000-default.conf 001-vagrant.conf

    然后在终端中用文本编辑其对其进行编辑如下。

    说明如下:

    • DocumentRoot /vagrant。为了方便站点文件的同步,我简单地将该站点的根目录设置到了/vagrant这个目录。我们应该还记得,这个目录是映射到Windows下的f:\vagrant_env\remote目录的。
    • <Directory "/vagrant">…</Directory>这一段基本应该按照样本书写。这样才能保证我们能在远程用来访问这个站点。
      修改完毕后,我们用如下命令使该站点成为可用:

    这个命令其实就是在/etc/apache2/sites-enabled中做了一个符号链接到001-vagrant.conf而已。

    最后,我们重启Apache服务。

    一切就绪,让我们来测试一下。

    f:\vagrant_env\remote中创建一个index.php文件,内容很简单:

    保存文件,然后在浏览器中访问这个地址:。浏览器应该显示如下内容:

    1.8. 设置一个虚拟主机  - 图2

    你需要花一点时间来浏览一下这个非常长的页面。需要关注的地方有:

    • Apache调用PHP时所使用的php.ini。在我的配置中,这个文件是 /etc/php5/apache2/php.ini
    • PHP API版本。我的是20131106,因为我用的是PHP 5.6.4。
    • 确定index.php文件内容正确,也在正确的位置;
    • Apache服务已经启动;
    • PHP安装正确;
    • Windows下的文件有vagrant这个域名的解析;