一、准备工作
首先,我们来了解一下搭建 VirtualBox + Vagrant + Linux 虚拟机所需的软件准备工作。
VirtualBox 的下载地址:您可以通过访问https://www.virtualbox.org/wiki/Downloads获取适用于您系统的版本。
Vagrant 的下载地址:前往https://www.vagrantup.com/downloads进行下载。
需要注意的是,在安装 VirtualBox 时,它可能会与一些软件存在冲突,例如红蜘蛛、360、净网大师等。如果您的电脑上安装了这些可能冲突的软件,需要先将其卸载,然后重启电脑,以确保 VirtualBox 能够正常安装和运行。
二、安装步骤
(一)VirtualBox 安装
1、访问https://www.virtualbox.org/wiki/Downloads,根据您的操作系统选择对应的安装包下载。
2、双击下载的安装包,打开安装向导。点击“Next”进入下一步。
3、在功能组件选择界面,通常默认选择即可,若有特殊需求可自行勾选。
4、选择安装路径,建议不要安装在系统盘(C 盘),可点击“Browse”选择其他磁盘。
5、选择快捷方式创建选项,根据个人习惯勾选。
6、弹出警告界面,提示安装网络组件会重置当前网络,点击“Yes”。
7、准备安装,点击“Install”开始安装。
8、等待安装完成,安装过程中可能会弹出一些提示,根据提示进行操作。
9、安装完成后,勾选“启动 Oracle VM VirtualBox 虚拟机”,点击“Finish”。
(二)Vagrant 安装
前往https://www.vagrantup.com/downloads,根据您的操作系统选择合适的版本进行下载。
1、双击下载的安装文件,按照默认设置一路点击“Next”进行安装。
2、安装完成后,打开命令行窗口,输入“vagrant -v”命令,输出版本号即表示安装成功。
(三)安装位置选择
1、VirtualBox:默认虚拟电脑位置下载安装的位置在c盘用户目录:如:“C:\Users\86135\VirtualBox VMs”,会大量占用C盘空间,建议修改到其他盘。按如下步骤操作:
打开 VirtualBox 程序,点击“管理”->“全局设定”(或按下快捷键 Ctrl + G),在“常规”栏里将“默认虚拟电脑位置”修改为其他容量较大的磁盘路径。
下载安装的虚拟机将在你设置的路径下:
2、Vagrant:对于 Windows 系统,新建系统环境变量“VAGRANT_HOME”,变量值设置为您期望的存储位置,如“E:\VirtualBox\.vagrant.d”。
通过以上步骤,您可以顺利完成 VirtualBox 和 Vagrant 的安装,并选择合适的安装位置。
三、初始化与启动虚拟机
(一)使用"vagrant init"命令初始化 Centos 虚拟机(以下以安装centos7为例)
首先,打开命令行窗口,执行 vagrant init 命令;
命令格式:
#vagrant init 命令格式
vagrant init 虚拟机镜像名称/版本号# 例如要创建一个centos7的虚拟机可以使用如下命令:
vagrant init centos/7
执行vagrant init centos/7命令会在当前目录下自动生成一个 Vagrantfile 配置文件。
(二)启动虚拟机的操作
在完成初始化配置后,即可启动虚拟机。在Vagrantfile所在目录,使用 vagrant up 命令启动虚拟机,此过程可能需要一些时间,Vagrant 将自动从镜像仓库(https://app.vagrantup.com/boxes/search)下载 CentOS 7 镜像,并在 VirtualBox 中创建和启动虚拟机。
安装启动完成后,系统自动创建两个用户账号 root和vagrant, 密码均是 vagrant。
四、网络配置
虚拟机网络配置至关重要,它直接影响到虚拟机的性能和可用性。
查看本机 IP:
在进行虚拟机网络配置前,首先要查看本机 IP。这可以通过在命令行输入特定命令来实现,如在 Windows 系统中输入 ipconfig ,在 Linux 系统中输入 ifconfig 。通过这些命令,我们能够获取到本机的网络信息,包括 IP 地址、子网掩码和网关等,为后续的虚拟机网络配置提供重要参考。
修改虚拟机网络 IP:
修改虚拟机网络 IP 是为了满足不同的需求,如固定 IP 以方便开发和管理。对于不同的虚拟机软件和操作系统,修改方法有所不同。以 VirtualBox + Vagrant + Linux 为例,可以通过修改 Vagrantfile 文件来实现。打开该文件,找到相关的网络配置部分,按照本机网络信息和需求修改 IP 地址等参数。修改完成后保存,并通过相应命令重启虚拟机使配置生效。
笔者本机VirtualBox的IP信息,192.168.56.1
为了虚拟机和本机能进行通信,需要设置虚拟机IP与virsualbox的ip在同一网段,
可以看到本机的VirtualBox的ip网段为192.168.56.1,所以虚拟机的IP必须是192.168.56.2-192.168.56.255。
以下示例修改Vagrantfile文件中的参数:config.vm.network "private_network", ip: "192.168.56.13"
保存修改需重启虚拟机方可生效,执行命令重启:
vagrant reload
验证网络配置是否成功:
1、进入虚拟机查看虚拟机网络配置
打开虚拟机安装文件夹(Vagrantfile所在目录),在该文件夹下打开 cmd 窗口,执行 vagrant ssh 命令,即可登录到虚拟机。需要注意的是,登录虚拟机时默认用户为 vagrant 。
在虚拟机中执行命令(centos7为例,其他版本Linux命令可能有差异):ip addr
可以看到虚拟机网络配置中IP与Vagrantfile文件中的参数:config.vm.network "private_network", ip: "192.168.56.13"相同,表示网络配置成功。
2、通过ping命令检测虚拟机与本机的连通性。
本机物理IP:
在虚拟机内部ping 192.168.1.55,显示网络正常
反过来从本机ping虚拟机IP:192.168.56.13,也显示网络正常。
至此,网络基本配置已经完成,可以正常使用vagrant ssh命令进行连接。
使用exit命令可退出登录;
五、密码登录配置
截止步骤四(网络配置)能使用vagrant ssh正常连接,但是使用第三方SSH工具密码连接时会发现依然连接失败,要实现虚拟机的密码登录以便使用 XShell 等工具进行连接,您可以按照以下步骤进行操作:
(一)VirtualBox 虚拟机密码登录配置
1、打开 VirtualBox 虚拟机,以管理员身份登录 Linux 系统。
2、执行命令 sudo vi /etc/ssh/sshd_config 打开 SSH 配置文件。
3、找到 PasswordAuthentication 这一行,将其值从 no 修改为 yes ,以允许密码登录。
4、找到 PermitRootLogin 这一行,确保其值为 yes ,允许 root 用户登录。
5、按 Esc 键,输入 :wq 保存并退出编辑。
6、执行命令 sudo service sshd restart 重启 SSH 服务,使配置生效。
(二)SSH工具密码登陆(以XShell 为例)
- 打开 XShell 软件,点击“新建”按钮。
- 在“新建会话属性”窗口中,输入虚拟机的 IP 地址。
- 设置连接协议为 SSH ,端口一般为 22 (如果在 SSH 配置文件中修改了端口,则使用修改后的端口)。
- 输入用户名(一般为 root )和密码(您在虚拟机中设置的密码,默认密码为:vagrant)。
- 点击“确定”保存会话设置。
- 双击新建的会话即可连接到虚拟机。
通过以上步骤,您就可以成功配置虚拟机的密码登录,并使用 XShell 等工具进行连接,方便您对虚拟机进行操作和管理。
六、创建多台虚拟机
在不同的文件夹下面重复以上的操作步骤即可创建多台虚拟机并相互可访问。
七、Vagrant 常用的命令
1. `vagrant init` :初始化一个 Vagrant 项目,创建一个默认的 `Vagrantfile` 配置文件。
2. `vagrant up` :启动虚拟机。
3. `vagrant halt` :关闭虚拟机。
4. `vagrant suspend` :挂起虚拟机。
5. `vagrant resume` :恢复挂起的虚拟机。
6. `vagrant destroy` :销毁虚拟机,删除相关数据。
7. `vagrant status` :查看虚拟机的状态(运行、关闭等)。
8. `vagrant ssh` :通过 SSH 连接到正在运行的虚拟机。
9. `vagrant box list` :列出已安装的 Vagrant 盒子(虚拟机镜像)。
10. `vagrant box add` :添加新的 Vagrant 盒子。
11. `vagrant provision` :重新应用配置文件中的 provisioning 脚本。
12. `vagrant reload` :重新加载虚拟机配置并重启虚拟机。
13. `vagrant plugin list` :列出已安装的 Vagrant 插件。
14. `vagrant plugin install` :安装指定的 Vagrant 插件。
这些命令可以帮助您管理和操作 Vagrant 虚拟机。