一切的开始是vagrant的官方文档
1、安装必要的软件
1.1、安装vagrant
vagrant的官网地址是https://www.vagrantup.com/,官网页面如下
安装文件就去download就好了,安装过程是傻瓜式的安装过程,下一步下一步的操作,如果需要更改安装地址修改即可,安装完毕之后使用命令行查看安装版本:
出现上述的版本就说明vagrant是正确安装的
1.2、安装virtual box和Xshell
virtual box是虚拟机的运行环境,同类型的还有VMWare、Parallels 或 Hyper-V,但是只有virtual box是不收费的,这个软件的下载参考地址是:https://www.virtualbox.org/wiki/Downloads
Xshell是一个安全终端模拟软件,这里不做过多的介绍,软件下载参考地址:http://www.downza.cn/soft/235505.html
这两个软件都是傻瓜是的安装过程,安装路径最好自定义在不是C盘即可;
2、vagrant的常用命令
vagrant的使用参考地址是:https://www.vagrantup.com/docs/index.html
下面简单的介绍几个常用的命令
2.1、box相关的命令
命令 | 解释 |
---|---|
vagrant box list | 查看目前已经存在的box |
vagrant box add | 新增加一个box |
vagrant box remove | 移除一个box |
2.2、虚拟机相关的命令
命令 | 解释 |
---|---|
vagrant init | 初始化配置文件vgrantfile |
vagrant up | 启动虚拟机 |
vagrant ssh | ssh登录虚拟机 |
vagrant suspend | 挂起虚拟机 |
vagrant reload | 重启虚拟机 |
vagrant halt | 关闭虚拟机 |
vagrant status | 查看虚拟机状态 |
vagrant destory | 删除虚拟机 |
3、虚拟机环境搭建
3.1、box文件依赖说明
vagrant搭建开发环境要依赖box文件,在官网上的findbox可以打开对应的box文件搜索站,地址是:https://app.vagrantup.com/boxes/search
上面的provider标识的是提供给什么样的虚拟机管理软件使用的,比如virtualbox就是针对Virtual Box使用的,关于依赖的说法是vagrant可以使用在线或者离线的方式加载box文件来创建对应的虚拟环境
3.2、在线方式依赖box文件搭建虚拟机环境
下面使用“ubuntu/trusty64”为例子做虚拟机搭建的示例:
点击对应的数据条目使用最新的版本做处理,如下是这个box文件的加载配置示例:
上面图中的代码段
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.box_version = "20190110.0.3"
end
后面会使用到,下面是实操过程
创建一个test文件夹,并在这个文件夹中使用命令初始化
vagrant init
初始化完毕之后的文件夹下会多出一个‘Vagrantfile’文件,图中标记的代码段就是需要在这个文件中配置的
替换Vagrantfile文件中的内容为上面的代码段,并在代码段中新增IP地址的配置
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.box_version = "20190110.0.3"
config.vm.network "private_network", ip: "192.168.10.10",auto_config: true
end
然后运行下面的命令
vagrant up
这个命令根据‘Vagrantfile’文件去启动虚拟机环境,过程如下:
在上述的这个启动的过程中‘Virtual Box’软件中也会出现变化,运行栏会新增一个虚拟机环境:
完成启动之后使用Xshell本地端口2222连接虚拟机,初始的用户名和密码是vagrant,配置和连接成功的示意图如下:
3.3、离线方式依赖box文件搭建虚拟机环境
3.3.1、下载离线box文件并添加box
还是使用上面的“ubuntu/trusty64”为例子做虚拟机环境离线搭建的示例,首先去下载这个的离线box文件
下面有一个box文件下载的参考地址:http://www.vagrantbox.es/
对应的找到“trusty64”的下载地址是:https://github.com/sepetrov/trusty64/releases/download/v0.0.5/trusty64.box
下载完毕之后放在指定的磁盘路径上,这里放在了D盘的VM目录下:
有了box使用下面的命令添加box
vagrant box add test trusty64.box
其中的test是为添加之后的box设定的名字,可以根据实际情况修改,添加完毕之后使用下面的命令查看新增加的box
vagrant box list
3.3.2、基于离线box创建虚拟机环境
上面已经添加了名字为test的box,这里就基于这个box创建虚拟机
创建一个文件夹,并在文件夹中使用下面的初始化命令
vagrant init test
初始化命令之后会生成Vagrantfile文件,在其中添加ip的配置设置
config.vm.network "private_network", ip: "192.168.10.11",auto_config: true
创建文件夹和执行初始化的过程图如下:
然后就是启动这个虚拟机环境
vagrant up
启动过程响应和Virtual Box中的显示如下:
4、虚拟机内的开发环境搭建
上面的过程已经介绍了虚拟机的创建,下面使用Xshell连接虚拟机并搭建php的开发环境,为了方便,下面的安装过程均使用命令行的方式安装对应的软件或者包文件。
4.1、备份和替换软件源
备份命令
cp /etc/apt/sources.list /etc/apt/sources.list.bak
编辑替换源地址
sudo vim /etc/apt/sources.list
没有安装vim的使用apt-get install vim
安装即可,安装之前最好先更新apt-get update
,更换的源地址是:
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
替换之后再次更新apt-get update
4.2、安装apache和nginx
apache和nginx是服务器软件,一般来说安装一个即可,这里两个都安装做演示用。
安装nginx:
apt-get install nginx
安装完毕之后已经启动了,查看状态和浏览器访问示意:
安装apache
apt-get install apache2
安装完毕之后启动查看运行的状态和访问示意:
4.3、安装mysql
服务端安装命了
apt-get install mysql-server
服务端安装会提示输入管理员密码,自己设置一个即可
客户端安装命令
aot-get install mysql-client
安装完毕之后使用mysql -uroot -p
输入密码登录查询mysql的版本
4.4、安装php
这里安装PHP5的版本,整个记录描述的重点不是php的版本而是可移植的开发环境搭建过程
安装命令
apt-get install php5-cli
安装完毕之后可以查看php的版本:
安装几个常用的扩展:
apt-get install php5-mcrypt
apt-get install php5-mysql
apt-get install php5-gd
4.5 配置apache和nginx支持php的解析
4.5.1、支持nginx的fastcgi模式
安装php5-cgi和php5-fpm
apt-get install php5-cgi php5-fpm
安装完毕之后修改连接池子的配置,原来默认的是sock,现在修改为172.0.0.1:9000的监听
vim /etc/php5/fpm/pool.d/www.conf
屏蔽原来的sock,修改为127.0.0.1:9000
然后重启fpm
sudo /etc/init.d/php5-fpm restart
接下来就是修改nginx的配置文件
vim /etc/nginx/sites-available/default
这里面有两个地方需要修改:
1)新增默认解析文件配置,也就新加一个index.php
2)参照放开nginx解析PHP的配置部分,这一部分初始是注释掉的
然后重启nginx
sudo /etc/init.d/nginx restart
之后再nginx根目录下新增index.php文件,里面对phpinfo函数的输出
cd /usr/share/nginx/html
echo '' > index.php
浏览器访问效果:
4.5.1、支持apache的PHP模块
安装模块
apt-get install libapache2-mod-php5
安装完毕之后启动rewrite
sudo a2enmod rewrite
浏览器的访问效果:
4.6、环境配置的额外说明
经过上述的安装,基本自定义出了一个自己常用的开发环境,如果需要更加个性化的环境,上述的php,mysql,apache或者nginx均可以使用源码的方式来进行安装
5、vagrant虚拟机配置优化
详细的vagrant配置和使用参见g官网文档https://www.vagrantup.com/docs/index.html
下面列举三个优化的点
5.1、设置虚拟机端口转发
虚拟机端口转发参考链接
基础配置的示例代码:
Vagrant.configure("2") do |config|
config.vm.network "forwarded_port", guest: 80, host: 8080
end
guest表示的是虚拟机端口,host表示的是宿主机端口,设置示例如下:
将虚拟机80和8888端口分别转发到宿主机的8888和8889端口,然后使用vagrant reload
命令重载虚拟机,启动过程中的端口转发如下:
重启之后再浏览器中使用宿主机的8888和8889端口就可以访问虚拟机的80和8888端口了,其中已经把虚拟机的apache服务器的访问端口设置为8888了,下面是在宿主机中的访问注意看浏览器的地址栏:
5.2、共享文件夹设置
共享文件夹参考链接
基础用法示例:
Vagrant.configure("2") do |config|
# other config here
config.vm.synced_folder "D:/readbooknote", "/home/www"
end
重启vagrant reload
过程中的共享文件夹和实际虚拟机中的示例如下:
5.3 设置虚拟机ip
虚拟机的ip设置参考,这个里面有私有ip和公有ip的设置参考,下面是开发环境中的私有ip设置示例:
Vagrant.configure("2") do |config|
# other config here
config.vm.network "private_network", ip: "192.168.10.11",auto_config: true
end
重启vagrant reload
之后就可以在宿主机上使用设置的ip直接访问虚拟机,就不需要通过宿主机端口转发了,直接访问如下,请注意地址栏:
6、vagrant打包分发操作
6.1、打包分发操作
上述的5个小节中比较详细的说明了vagrant创建虚拟机并搭建lamp或者lnmp开发环境的过程,整个过程就是为了最终能够打包这个环境做准备的,否则每一次都需要重复前面的操作也就失去了vagrant提供的便利性。
box文件搜索链接中能够搜索到的包文件就是通过打包分发之后以便开发者下载并基于下载文件打造自己的开发环境,大量的节省开发环境的搭建时间,但是我们总想拥有自己自定义的开发环境,这样的情况下经过上述的过程、引入自己使用的开放框架代码并打包成box文件,将box文件通过物理存储盘、网盘或者团队工作服务器进行上传分发,无论是新入职的员工搭建开发环境,还是更新已有开发环境都能在很短的时间内实现了。
下面是实际的操作过程,打包命令如下
//不带参数虚拟机被打包成名为package.box的文件
vagrant package
//带 --output参数被打包为指定名字的.box文件
vagrant package --output xxx.box
打包之前需要停止虚拟机且最好将Vagrantfile文件中的ip设置屏蔽掉,或者增加auto_config参数,这个参数的值设置为true,否者其他人使用生成的.box文件创建开发环境的时候会出现连接错误
打包过程和产生的文件如下:
现在有了自己的自动以的.box文件,那么就可以参考3.3节中的操作去快速构建开发环境了
6.2、包更新和虚拟机更新
如果开发环境需要更新,分为两个部分处理:
1)新用户
使用备份的虚拟机重新安装先关的软件、包文件或者其他必须的文件,处理完之后重新打包分发,新用户拿到box文件之后就可构建更新后的开发环境;
2)已经在使用的用户
使用provision
配置来安装处理自己需要的东西(当然也可以直接手动安装),这个的参考说明见地址,下面以redis的安装为例说明更新的操作
config.vm.provision "shell", inline: <<-SHELL
apt-get install -y redis-server
SHELL
配置完毕之后使用vagrant reload --provision
命令重启,注意这里的新增参数--provision的使用
7、参考文献
- Vim中如何全选复制粘贴
- Vagrant使用教程