好了,我们现在有一台运行了Ubuntu的虚拟机,我们可以在宿主机器上编辑文件然后自动同步到虚拟机中。现在让我们使用webserver来处理这些文件。
我们可以使用ssh进入虚拟机,然后安装webserver,但是每个使用vagrant的人都需要做同样的事情。相反,vagrant内置了对自动配置的支持,使用此功能,vagrant可以自动安装软件,以便用户机器可以重复创建和使用。
安装Apache
我们将为我们的基础项目设置Apache,我们将使用shell脚本来完成。 使用以下内容创建shell脚本并将其作为bootstrap.sh保存在与Vagrantfile相同的目录中:
#!/usr/bin/env bash
apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
rm -rf /var/www
ln -fs /vagrant /var/www
fi
接下来。我们设置vagrant,配置vagrant来运行这个shell脚本。我们通过编辑Vagrantfile文件来做到这一点,现在Vagrantfile看起来应该是这个样子:
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/precise64"
config.vm.provision :shell, path: "bootstrap.sh"
end
provison这一行是新的,它告诉Vagrant使用bootstrap.sh脚本来配置机器。文件路径相对于项目根目录(Vagrantfile所在的位置)。
## Provision!
所有配置完成之后,只需要运行vagrant up
命令就可以创建你的机器了,而vagrant将自动配置。你应该可以看到shell脚本的输出显示显示在你的终端中。如果你的虚拟机已经在上一步中运行了,那么你运行vagrant reload ---provision
命令,这将快速重新启动虚拟机,跳过初始导入步骤。reload命令中的provision指示vagrant运行配置程序,因为通常只会在第一次执行vagrant up
命令时才会执行此操作。
vagrant运行完成后,webserver将启动并运行。你现在无法从浏览器中查看网站,但是你可以通过在计算机中从SSH中加载一个文件来验证配置是否正常工作。
$ vagrant ssh
...
vagrant@precise64:~$ wget -qO- 127.0.0.1
因为在上面的shell脚本中,我们安装了Apache,并将Apache的默认DocumentRoot设置指向/ vagrant
目录,这是由Vagrant设置的默认同步文件夹。
您可以通过创建更多文件并从终端查看来进行更多的操作,但下一步我们将介绍网络选项,以便您可以使用自己的浏览器访问虚拟机。
对于复杂的配置脚本,将自定义的Vagrant box和需要预先安装的软件打包在一起,比每次构建他们可能会更高效。入门指南中没有涵盖此主题,但你可以在打包定制box文档中找到该主题。
下一步
您已经成功地为您的第一个虚拟机配置了Vagrant。 继续阅读以了解网络。