如何在你自己的运行Ubuntu的VPS上使用Vagrant
状态: 已弃用
本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:
原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.
请参阅:
本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。
关于流浪者
Vagrant 是一款功能强大的开源软件,用于配置和部署多个开发环境。 它旨在在 Linux、Mac OS X 和 Windows 上运行,尽管它带有 VirtualBox 来满足虚拟化需求,但它也可以与其他提供商一起使用,例如 VMware 或 AWS。
本教程继续 之前的 ,我们在其中介绍了安装 Vagrant 并在现有 DigitalOcean VPS 之上设置您的第一台运行 Ubuntu 的简单客户机。 因此,它假定您已遵循其中涵盖的步骤并熟悉其课程。
VirtualBox 的盒子
正如我在之前的教程中提到的,Vagrant 默认安装了 VirtualBox 作为它的提供者。 这意味着我们添加的盒子 (precise32) 是专门为 VirtualBox 制作的,并且不会 ' 与其他提供商一起使用。 precise32 框是运行 Ubuntu Precise 12.04 32 位 的客户机的映像。 但是,您可以添加其他带有不同操作系统的盒子。
Vagrant github 项目 为您提供了其他盒子的官方链接,您可以添加到由 VirtualBox 驱动的 Vagrant。 还有 3 个可用:precise64(Ubuntu Precise 12.04 的 64 位版本)、lucid32 和 lucid64(用于 Ubuntu 12.04 的 Lucid 发行版)。 这些是官方的。
然而,有一个 社区网站 有许多其他可供 VirtualBox 和其他各种供应商使用的盒子。 但是,此列表尚未经过 Vagrant 项目的验证,使用风险自负。 但是,如果您想将这些中的任何一个添加到您的 Vagrant 中,请按照与上一个教程中相同的步骤进行操作。
自动配置
现在您知道了什么是盒子以及如何将它们添加到您的 Vagrant 中,您可能想知道接下来会发生什么? 你可以配置一个 Vagrant 文件来使用一个盒子来快速启动运行 Ubuntu 的来宾机器,但是呢?
假设您想在上一篇文章中使用的 Ubuntu 客户机上安装 Apache。 您可以通过 SSH 连接并手动完成。 但是,这意味着无论何时您或其他任何人想要在销毁这台访客机器后使用它,都需要一遍又一遍地执行所有这些操作。
Vagrant 最酷的事情之一是自动配置。 这意味着您可以指定每次使用 vagrant up 命令时要运行的 shell 脚本。 因此,假设我们希望我们的来宾机器始终在部署时安装 Apache。 为此,我们可以将所有需要执行的命令放入项目根文件夹中的一个文件中(在 Vagrantfile 旁边):
nano bootstrap.sh
在这个新创建的文件中,粘贴以下脚本:
#!/usr/bin/env bash apt-get update apt-get install -y apache2 rm -rf /var/www ln -fs /vagrant /var/www
此脚本安装 Apache 并将 /var/www 文件夹链接到 /vagrant 文件夹(如果您记得的话,该文件夹与主机项目根文件夹同步)。 这样,您可以从主机编辑 Apache 服务器的文件,而无需担心同步问题。
接下来,我们需要编辑 Vagrantfile 并指定当客户机被部署时,它应该使用这个脚本:
nano Vagrantfile
在这个文件中,在我们指定要使用的默认框的正下方,添加以下行:
config.vm.provision :shell, :path => "bootstrap.sh"
这基本上告诉 Vagrant 使用 shell 配置程序并运行位于该文件中的脚本(相对于主机的项目根文件夹的路径)。
保存文件并运行 vagrant up 命令来部署一台新的客户机,该机器现在将安装 Apache。 如果您已经在运行客户机,您可以使用以下命令重新加载它:
vagrant reload
这将重新启动机器并运行配置。 现在,您每次运行 vagrant up 或 vagrant reload 时都会在客户机上安装 Apache。
联网
在您的客户机上安装 Apache 的目的很明显:您希望 VPS 向浏览器提供页面。 但是还没有办法从浏览器访问来宾机器。 进入 Vagrant 的网络和端口转发功能。
端口转发允许您指定主机上的一个端口以与来宾计算机共享。 这意味着,如果您将浏览器指向使用特定端口的主机地址,您最终将访问来宾计算机。 为此,在您的主机上导航到 Vagrant 项目根文件夹并编辑您的 Vagrantfile:
nano Vagrantfile
在您进行配置时在上面添加的行下,粘贴以下行:
config.vm.network :forwarded_port, host: 4567, guest: 80
这指定如果在主机上请求端口 4567,它应该将请求路由到客户机上的端口 80(这是默认的 Apache 端口)。 如果客户机尚未运行,则保存文件并运行 vagrant up。 如果是,您可以使用 vagrant reload 命令。
如果您使用了我在上面向您展示的 bootstrap.sh 脚本,您可以让安装在客户机上的 Apache 服务器在来宾机器又与主机上的项目文件夹同步。 因此,转到这些文件夹中离您最近的任何一个,并创建一个包含一些随机文本的测试 index.html 文件。
现在,如果将浏览器指向主机并指定端口 4567,则 index.html 页面应该由来宾机器的 Apache 服务器提供服务。 如果您在本地安装了 Vagrant,请尝试以下 url:
http://127.0.0.1:4567
如果您在远程服务器上使用它,请尝试以下操作:
http://192.119.208.208:4567/
确保将 IP 替换为与远程主机对应的 IP。
结论
在本教程中,您了解了一些关于您的 Vagrant 可以使用哪些框,如何设置配置以使用每个 vagrant up 命令自动运行各种脚本,并了解如何使用端口转发来访问来自浏览器的访客机器。 这些确实是强大的功能,但如果您知道自己在做什么,Vagrant 会为您提供更多功能。
在下一个教程中,我们将看看如何向 Vagrant 添加一个新的提供者,即使用 DigitalOcean droplets 作为您部署的客户机。 为此,我们需要安装一个 Vagrant 插件。
流浪者——第 2 条