1、下载、安装VirtualBox
官方下载点这里
2、下载、安装Vagrant
官方下载点这里
3、下载系统box文件
官方系统box文件
4、先将box文件添加进Vagrant
#title是自己起的名字
#url是自己在第三步下载的box文件路径
vagrant box add {title} {url}
5、初始化Vagrant
#新建目录
mkdir vagrant_project
#打开此目录
cd vagrant_project
#初始化,title为你上方设置的title
vagrant init {title}
6、从Vagrant启动VirtualBox虚拟机
vagrant up
出现以下代码则启动成功
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection reset. Retrying...
==> default: Machine booted and ready!
[default] GuestAdditions 6.1.4 running --- OK.
到此结束虚拟机就算启动成功了。但是还不能真正的进入开发步骤
下面讲解其他问题
1、ssh登陆问题
刚刚启动好虚拟机,这个时候还不能使用上面的ip和端口号进行ssh账号密码宿主登陆。
需要更改ssh登陆权限(此处需要切换为root用户)
#使用Vagrant的ssh命令登陆
vagrant ssh
#先更改root账户密码,根据提示需要输入两次密码
sudo passwd root
#切换为root账户(需要输入上一步中修改的root密码)
sudo -i
#使用vi编辑器打开 /etc/ssh/sshd_config 配置文件进行修改。
vi /etc/ssh/sshd_config
需要更改如下配置
PasswordAuthentication yes
PermitRootLogin yes
#这里简单讲解vi编辑器的一些操作
#先按键盘的 i 键进入编辑模式,修改完成以后需要按 esc 按键退出编辑模式
#然后输入 :wq 就可以退出并保存了
# 需要重新载入配置
service sshd restart
然后需要使用命令退出ssh模式
logout
这个时候就可以使用账号密码进行ssh登陆了
账号:root
密码:(为上面所修改的root密码)
2、网络问题(需要修改第五步的时候选择的文件夹内的Vagrantfile配置文件)
- Forwarded port(端口映射)
是指将宿主计算机的端口映射到虚拟机上的某个端口上,访问宿主计算机的该端口时,请求实际会被转发到虚拟机上指定的端口,配置文件设置语法为:
config.vm.network :forwarded_port, guest: 80, host: 8889
优点:简单、容易理解、容易实现外网访问虚拟机。
缺点:需映射很多端口时较麻烦、不支持在宿主机器上使用小于1024的端口来转发(如:不能使用SSL的443端口来进行https连接)。
- Public network(公有网络)
这种配置下,虚拟机享受实体机一样的待遇,一样的网络配置,vagrant 1.3版本以后这种配置也支持设定固定IP。
config.vm.network "private_network", ip: "192.168.50.4" # 固定IP
还可以设置动态IP,配置语法如下:
config.vm.network "private_network", type: "dhcp"
优点:安全,只能自己访问。
缺点:因私有原有,所以其他团队成员不能和你协作。
- Public network(公有网络)
这种配置下,虚拟机享受实体机一样的待遇,一样的网络配置,vagrant 1.3版本以后这种配置也支持设定固定IP,配置语法如下:
config.vm.network "public_network", ip: "192.168.50.4"
还可以设置桥接网卡,配置语法如下:
config.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"
优点:方便团队协作,别人可以访问你的虚拟机。
缺点:需要有网络,有路由器分配IP
3、共享目录
有时候,我们希望虚拟机能和我们的主机共享一些文件夹,这时候在vagrant的配置文件中进行配置来达到共享目录的目的。
vagrant的共享目录类型有:
- 配置语法:(具体这里可以百度。有更为详细的介绍)
config.vm.synced_folder "/hostPath", "/www/wwwroot", owner:"www", group:"www", create:true
设置完成以后需要重启虚拟机,但是启动的时候可能会报错,无法挂载磁盘。使用以下命令
#添加vagrant插件就可以解决无法挂载的问题。
vagrant plugin install vagrant-vbguest
附上vagrant的命令
#--列出本地环境中所有的box
vagrant box list
#--添加box到本地vagrant环境
vagrant box add box-name(box-url)
#--更新本地环境中指定的box
vagrant box update box-name
#--删除本地环境中指定的box
vagrant box remove box-name
#--重新打包本地环境中指定的box
vagrant box repackage box-name
#--启动虚拟机
vagrant up
#--关机
vagrant halt
#--销毁虚拟机
vagrant destroy
#--虚拟机重启
vagrant reload
Vagrant官方文档地址:https://www.vagrantup.com/docs/