为何须要使用Vagrant管理虚拟机?
由于你开发的项目最终是要运行在 Linux 系统的服务器上,在开发的过程种,你可能须要建立多个 Linux 系统的虚拟机。因此,你打算在本地也用 Linux 系统为项目搭建一个开发环境,手工去安装不一样类型的 Linux 操做系统太麻烦了。你须要 Vagrant来统一管理这些虚拟机。html
Vagrant 可让咱们用命令直接从云上下载虚拟机的镜像,你想要什么系统都是能够的。好比Centos,Ubuntu … 只须要一行命令,而后再用命令去操做虚拟机,启动,暂停,关闭,重启。这样你能够更方便的管理全部的在本地上电脑上的虚拟机镜像,手工去配置它们,能够再从新打包成新的镜像,方便你跟你的团队在其它的项目上重复使用这些打包的虚拟机镜像。shell
下面的内容是我在Window电脑去安装Vagrant,而后管理虚拟机的相关笔记分享。
Vagrant管理虚拟机笔记目录:
———————————
1.一些准备工做
为了能在Windows电脑上使用命令行工具,咱们须要下载cmder工具或Windows电脑自带的Powershell命令行工具。vim
1.1 使用cmder命令行工具,你能够在cmder官网去下载最新的cmder,而后放在你电脑的桌面上,解压后,你会看到Cmder.exe,鼠标右键Cmder.exe已管理员方式运行,就就看到一个Cmder的命令行窗口,截图以下图所示。centos
Cmder截图服务器
Cmder运行的命令行窗口网络
1.2 若是你打算使用Windows电脑自带的Powershell,你能够在电脑左下角,输入Powershell,而后已管理员身份运行它。见下面截图:
以管理员身份运行Powershellapp
Powershell命令行窗口ssh
1.2.1 在Powershell命令行窗口输入
Set-ExecutionPolicy Unresctricted 更改Powershell的执行策略,所下所示。
更改Powershell执行策略编辑器
那么到这里,咱们在Windows电脑上面命令行工具(Cmder或Powershell)就能够正常在Windows电脑上使用命令行进行操做了。
2.在Windows电脑安装chocolately包管理工具
输入命令:工具
iex ((New-Object System.Net.WebClient).DownloadString(‘https://chocolatey.org/install.ps1’))
进行自动安装chocolately工具,安装完以后,能够输入
choco 查看一下版本,能看到版本信息就说明你已经安装好了chocolately包管理工具。
chocolately安装截图
3.在Windows电脑上安装Vagrant软件
命令
choco install vagrant
4.在Windows电脑上安装Virtualbox软件
命令
choco install virtualbox
5.给Vagrant添加BOX
默认咱们是没有虚拟机的镜像BOX的,咱们可使用vagrant box list查看本地电脑项目可使用的BOX列表,默认是空的。
下面咱们去vagrant cloud网站去搜索一下咱们想要的BOX,找到合适的BOX以后,复制一下BOX的名字,这里我找了一个
添加BOX的命令是
vagrant box add viniciusfs/centos7
[解释:vagrant box add box 名称]
安装完成以后咱们能够在使用
vagrant box list 来查看一下BOX列表。
查看BOX列表
6.在Windows电脑上建立项目目录并在项目中启动虚拟机
6.1在咱们本地电脑的桌面建立一个vagrant-learning 的文件夹,用于存放咱们的项目。
6.2运行Cmder或Powershell,而后进入到咱们的这个项目所在的目录,
cd c:\User\Desktop\vagrant-learning //进入到vagrant-learning这个项目目录
vagrant box list //查看可用的BOX列表
vagrant init viniciusfs/centos7 //初始化BOX
vagrant up //启动虚拟机
在项目里启动虚拟机
启动虚拟机
7.在Windows电脑上登录CentOS服务器
7.1 在Powershell或Cmder命令行窗口,输入
vagrant ssh 登录CentOS服务器。
vagrant ssh登录服务器
7.2 使用
Xshell或
Putty来登录CentOS服务器。默认服务器的IP地址是 127.0.0.1, ssh端口 2222,用户名 vagrant,密码vagrant
Putty输入IP和端口
输入密码vagrant
Putty成功登录服务器
8.在Windows电脑上使用Vagrant对虚拟机进行启动,关机,暂停,恢复,销毁操做
启动:
vagrant up
中止:
vagrant halt
暂停:
vagrant suspend
恢复:
vagrant resume
重启:
vagrant reload
销毁:
vagrant destroy
查看虚拟机状态:
vagrant status
9.虚拟机的共享目录
通常咱们本地电脑的项目所在的文件夹就是和虚拟机同步的目录,咱们能够在项目的文件夹里面去建立文件,而后,虚拟机就能够执行咱们本地电脑项目里面的文件。本地项目所在文件夹,这里是vagrant-learning则对应虚拟机的 /vagrant目录,他们是同步的。下面咱们能够来验证一下。
9.1 在本地电脑项目文件夹vagrant-learning下面建立一个www文件夹,在www下建立index.html。
9.2 用编辑器打开index.html写点内容,好比这里写的内容是 “vagrant 学习”。
9.3 在Cmder或Powershell登录虚拟机(
vagrant ssh),而后
cd /vagrant 进入vagrant目录,咱们看到了咱们在本地电脑手动建立的www文件夹。
9.4
cd www切换到www目录,
ls 查看一下www下的文件,咱们看到了本地电脑建立的index.html文件。
9.5 cat index.html 查看index.html里面的内容,咱们看到了,咱们在本地电脑index.html里面写的内容 “vagrant 学习”。
虚拟机上查看项目里的文件
10.在Windows本地电脑给虚拟机建立额外的共享目录
10.1 用编辑器打开咱们的项目文件夹vagrant-learning下的Vagrantfile.
10.2 找到 “
# config.vm.synced_folder “../data”, “/vagrant_data ”这一行,把这一行最前面的#去掉。
10.3. 按回车,在这一行的下面输入: create:true,owner:”root”,group:”root” (意思是若是本地没有data这个文件夹的话就建立一个data文件,文件夹的owner拥有着和group群组都属于root)
10.4 保存并关闭Vagrantfile文件。
10.5 vagrant reload 重启虚拟机。
10.6 vagrant ssh登录虚拟机,进入根目录 (cd /) ,ls-la能够看到多了一个vagrant_data的目录,它和本地电脑的 data 是一组同步的目录,vagrant_data的拥有者和群组都是root。
配置虚拟机共享目录
vagrant_data同步目录
11.给虚拟机配置私有网络
11.1 用编辑器打开本地项目vagrant-learning下的Vagrantfile。
11.2 找到
# config.vm.network “private_network”, ip: “192.168.33.10” 这一行,把最前面的#去掉,后面IP地址根据本身须要设置私有IP地址段的IP地址。我这里设置的是192.168.1.10
11.3 保存并关闭Vagrantfile.
11.4 vagrant reload重启一下虚拟机。
11.5 ping一下咱们刚刚配置的虚拟机IP地址,这里ping 192.168.1.10,咱们看到能够ping通。
ping虚拟机IP地址
11.6 咱们能够登录进去虚拟机检查一下虚拟机的IP地址。
vagrant ssh
ifconfig
ifconfig查看IP地址
12. 给虚拟机配置公有网络
12.1 用编辑器打开项目vagrant-learning下的Vagrantfile.
12.2 找到
#config.vm.network “public_network” 这一行,把最前面的#去掉,保存文件。
12.3 vagrant reload 重启虚拟机。
12.4 vagrant ssh登录虚拟机,ifconfig查看一下如今虚拟机的IP地址。
12.5 exit虚拟机,ping虚拟机IP地址,看到能够ping通。
12.6 用局域网的其余电脑,ping虚拟机IP地址,应该也是能够ping通。说明公有网络配置正确。
(图略)
13. 在centos7虚拟机上搭建WEB服务器
sudo yum install httpd //安装apach
sudo yum install vim //安装vim编辑器
sudo vim /etc/httpd/conf/httpd.conf //修改apach配置文件,更改网站根目录为DocumentRoot /vagrant/www/
sudo service httpd start //启动apach
sudo service httpd status //查看apach运行的状态
sudo service httpd restart //重启apach服务
sudo service httpd stop // 中止apach服务
(图略)
14. 从新打包虚拟机BOX
从新打包BOX的目的是在之后的项目中能够复用,好比咱们将安装好apach服务的BOX打包,下次咱们须要用到apach服务的虚拟主机的时候,直接初始化咱们打包好的BOX,而后vagrant up启动以后,就可使用apach,就不用在去配置apach相关的东西了。
14.1 进入项目的目录vagrant-learning,而后vagrant up启动虚拟机。
14.2 删除70-persistent-net.rules.
删除70-persistent-net.rules
14.3 vagrant package打包虚拟机镜像BOX。
vagrant package打包虚拟机镜像BOX
14.4 添加咱们打包的BOX
vagrant box add lihong/centos7 package.box
//lihong/centos7 是我定义的BOX的名称, package.box是要添加的BOX
添加打包的package.box
14.5 删除打包生成的package.box文件。
rm -rf package.box
14.5 查看一下可用的BOX列表。
vagrant box list
删除打包生成的package.box
15. 在新的项目上应用打包的虚拟机BOX
15.1 在本地电脑从新建立一个项目的目录,好比lihong,并进入lihong这个目录。
15.2 初始化咱们打包后添加的BOX,这里咱们定义打包后的BOX名字是lihong/centos7
vagrant init lihong/centos7
初始化打包的BOX
15.3 查看打包后运行的BOX是否装了apach
查看apach状态
16.在Windows电脑上用Vagrant定义多主机
16.1 在桌面上建立一个新的工做项目目录workflow-project.
16.2 进入这个目录,vagrant box list查看一下可使用的box,以下 (lihong/centos7这个BOX是我本身打包的BOX,咱们后面使用这个BOX)
workflow-project可用的BOX
16.3在workflow-project项目下初始化
lihong/centos7这个BOX,它会在workflow-project文件夹下面建立一个vagrantfile的文件。
16.4 使用编辑器打开workflow-project这个目录下边的Vagrantfile文件,分别定义development和production这两台主机。配置方法以下截图所示。
配置development和production主机
16.5 查看这2台虚拟机的状态。vagrant status
多主机的not create状态
16.6 启动这两台主机。
vagrant up (它会同时启动development ,production这2台主机)
若是要启动其中的某一台,咱们使用命令 vagrant up developement来单独启动development 这台主机。若是想SSH进入某台主机可使用命令 vagrant ssh development (这个命令是ssh登录development 这台主机)
启动完成以后,咱们再来看一下vagrant status,这2台主机都已经处于running运行状态了。
多主机running状态
17.多主机的网络配置
17.1 用编辑器打开工做项目的目录workflow下的Vagrantfile。
17.2 在Vagrantfile给2台主机设置IP地址。具体设置参考下面截图。
这里咱们给2台主机定义私有网络IP地址。两台IP地址分别为192.168.2.100, 192.168.2.101
(值得注意的是,IP地址要和你本地电脑的IP地址处于不一样的网段)
给多主机配置IP地址
17.3 vagrant reload重启虚拟主机。
17.4 在SSH链接到这2台主机。vagrant ssh development , vagrant ssh production。
而后用ifconfig命令来查看一下development和production主机的IP地址。
查看development主机的IP地址
查看production主机的IP地址
17.5 站在development 主机上测试是否能够ping通production主机的IP地址192.168.2.101。
站在development上ping一下production主机的IP地址
17.6 反过来,站在production主机上测试一下是否能够ping通development主机的IP地址192.168.2.100。
站在production主机ping一下development主机的IP地址
18.多主机的主机名设置
18.1 咱们先SSH登录主机,输入命令
hostname查看一下如今的主机名。
hostname查看主机名
18.2 在定义这2台主机的Vagrantfile里面去设置一下这两台主机的主机名。
定义多主机名
18.3 vagrant reload 重启一下这2台主机。而后从新SSH登录,看一下hostname.
从新查看主机名
从新查看主机名2
备注:咱们也能够经过network文件进行修改主机名:
vi /etc/sysconfig/network
service network restart
19.多主机的共享目录设置
默认多主机使用项目所在的目录做为虚拟机和本地电脑的同步目录。这里默认就是,本地电脑的同步目录是workflow-project, 2台虚拟主机development,production主机根目录下的vagrant 目录。
咱们的任务是给development , production分别建立2个不一样的同步共享目录。
19.1 在项目的目录分别建立development ,production 文件夹。
本地项目的目录下建立2个同步目录
19.2 编辑Vagrantfile,设置同步的目录。
在Vagrantfile中设置同步目录
19.3 vagrant reload重启主机。
19.4 而后咱们在本地电脑development下放一个index.html
本地development同步目录下添加文件
19.5 vagrant ssh development 登录development主机查看 /vagrant 是否有这个文件,若是有就同步成功了。以下截图。
在development主机查看同步目录vagrant是否有本地添加的文件
哇噢,写到如今写了很久,太累了,休息一下。你学会了吗?若是有问题能够在下方留言,相互交流