创建和管理虚拟机曾经是一个乏味且耗时的过程。在不同的服务器上复制虚拟机也可能具有挑战性,如果必须复制多个虚拟机,情况会变得更加困难。
但后来 Vagrant 出现了,它是一种通常与2 类虚拟机管理程序配合使用的命令行或 shell 工具。你可以使用它来创建和管理虚拟机。它是一个功能强大的工具,可以帮助简化开发环境的设置和管理。
如果你在团队中或与多人一起工作,Vagrant 会非常有帮助。这是因为它通过确保每个人都使用相同的环境来保证开发环境的一致性,从而防止兼容性问题。
本教程将指导你完成使用 Vagrant 设置单个 Ubuntu Linux 虚拟机并在其中配置 Web 服务器的过程。
本教程的先决条件包括:
- 一台至少有 8GB RAM 的计算机
- Linux操作系统的基础知识
所需工具和安装
- Oracle VirtualBox: 访问Oracle VirtualBox网站,找到与你的操作系统兼容的 VirtualBox 版本,然后按照说明下载并安装它。Virtual Box 将提供虚拟环境,而 Vagrant 将对其进行设置和管理。
- Vagrant: 访问Vagrant 网站并按照说明下载并安装适合你操作系统的二进制文件。在本教程中,我们将使用开源 Vagrant 二进制文件。
要检查安装是否成功,请启动你首选的命令行工具并输入以下命令以输出安装的版本号:
$ vagrant --version
如何使用 Vagrant 创建开发环境
要创建 Vagrant 项目,首先在你的首选位置创建一个新的项目目录来存放 Vagrant 配置和相关文件。
$ mkdir vagrant-project && cd vagrant-project
在此目录中,创建一个新的 Vagrantfile。Vagrant 使用 Vagrantfile 中的配置来构建虚拟机。默认情况下,Vagrant 将初始化 Vagrantfile 的项目目录同步到 /vagrant。这样就无需担心持久数据的数量。
Vagrant 使用盒子的概念。盒子是操作系统的完整基础镜像。公共vagrant box 存储库包含可能的 box 列表。选择与生产环境中使用的操作系统相匹配的盒子是一个很好的做法。
Vagrant 盒子有创建它的用户或组织的名称以及盒子名称user/boxname。要使用 Ubuntu 盒子初始化 Vagrant 配置文件,请运行以下命令:
$ vagrant init ubuntu/trusty64
这会在当前目录中生成一个带有 Ubuntu/trusty64 框的 Vagrantfile。Vagrantfile 用 Ruby 编写,包含要使用的 VM 类型以及各种附加注释选项,例如网络、端口转发、磁盘容量等,以帮助配置开发环境。
你可以在 Vagrantfile 的初始化命令中添加该**--minimal**标志来生成 Vagrantfile,无需任何额外设置。
使用你选择的任何编辑器打开 Vagrantfile。我将在本教程中使用 Vim 编辑器。
$ vim Vagrantfile
删除信息性注释和一些高级配置将使文件如下所示:
# -*- mode: ruby -*-# vi: set ft=ruby :Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.network "forwarded_port", guest: 8000, host: 8000
config.vm.provider "virtualbox" do |vb| vb.memory = "1024"
end
config.vm.provision :shell, path: "simple-node-project.sh", privileged: falseend
这simple-node-project.sh是一个 bash 脚本,用于安装 Node.js 和 Git、克隆一个创建简单 Node.js Web 服务器的项目并启动该服务器。
#!/bin/bash
sudo apt-get update -y
## Git ##
echo '###Installing Git..'
sudo apt-get install git -y
git clone https://github.com/Aijeyomah/simple-node-app.git# Installing latest Node and npm version
sudo apt-get install -y curl software-properties-common# Add Node.js PPAcurl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -# Install Node.js and npmsudo apt-get install -y nodejs# Verify installationnode -vnpm -vecho "Node.js has been installed successfully."# navigate to app directory and start appcd simple-node-appnode index.js &
此 Vagrant 配置设置如下:
- ubuntu/trusty64指定为虚拟框基础镜像
- 将虚拟机的 8000 端口转发到主机的 8000 端口。
- 为VM分配1GB内存
- 运行simple-node-project以配置 VM
- 为了让 shell 配置程序以非 root 用户身份在登录 shell 中运行脚本,privileged设置为false
Vagrantfile通过运行以下命令保存并启动虚拟机:
$ vagrant up
第一次运行此命令时,它将下载指定框的最新版本,并配置并启动虚拟机。此过程可能需要一些时间,但是当本地计算机中存在 Ubuntu 盒子时,VM 将立即启动。
VM 运行后,你可以通过打开 Web 浏览器并导航到 来访问该网页http://localhost:8000**。**Hello World如果一切设置正确,你应该会看到消息页面。
如何管理 Vagrant
你可以使用 Vagrant 来管理正在运行的虚拟机。以下是一些有用的 Vagrant 命令:
vagrant up:启动虚拟机并根据 Vagrantfile 中的设置对其进行配置。如果虚拟机已在运行,此命令将简单地连接到该虚拟机。
vagrant halt:通过向来宾操作系统发送关闭信号来停止虚拟机。该命令类似于关闭真实计算机。
vagrant reload:重新启动虚拟机并根据 Vagrantfile 中的任何更改重新配置它。
vagrant ssh:通过SSH连接到虚拟机。此命令对于访问虚拟机的命令行界面非常有用。
vagrant status:显示虚拟机的当前状态,包括是否正在运行、已停止或已挂起。
vagrant destroy:删除虚拟机和所有关联的资源。此命令对于清理开发环境很有用。
结论
在本文中,我们学习了如何利用 Vagrant 建立可重复且一致的开发环境。