当前位置: 首页 > 科技观察

使用Vagrant打造跨平台开发环境

时间:2023-03-13 20:37:24 科技观察

Vagrant是一个搭建虚拟开发环境的工具,非常适合用php/python/ruby/java等语言开发web应用。“代码在我的机器上运行没有任何问题”这样的豪言壮语将成为历史。我们可以通过Vagrant打包一个Linux开发环境,分发给团队成员。会员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却可以在统一打包的环境下运行,非常霸气。安装步骤1、安装VirtualBox虚拟机还是要依赖VirtualBox来搭建,免费且小巧。下载地址:https://www.virtualbox.org/wi...温馨提示:虽然Vagrant也支持VMware,但是VMware是收费的,对应的Vagrant版本也是收费的2、安装Vagrant并添加镜像下载地址:https://www.vagrantup.com/dow...按照提示一步步安装。安装后,运行vagrantboxaddhashicorp/precise64添加官方Vagrantbox镜像。这时候会从官网下载名为hashicorp/precise64的box,可能需要一段时间。如果你想要其他系统的镜像,可以在这里查看并下载:https://atlas.hashicorp.com/b...提示:如果由于网络原因无法添加以上镜像,可以使用工具下载这些框(下载URL),请参阅下面的“包装和分发”部分进行添加。3、初始化开发环境创建开发目录(例如:~/dev),也可以使用已有目录,切换到开发目录,用hashicorp/precise64镜像初始化当前目录的环境:$cd~/dev#切换目录$vagrantinithashicorp/precise64#使用hashicorp/precise64初始化盒子$vagrantup#启动环境,会看到终端显示启动过程。启动完成后,我们就可以通过SSH登录虚拟机了,剩下的步骤就是在虚拟机中配置你要运行的各种环境和参数。$vagrantssh#SSH登录$cd/vagrant#切换到开发目录,即宿主机上的`~/dev`~/dev目录对应虚拟机中的目录为/vagrantWindowsusers注:windows终端做的不支持ssh,所以需要安装第三方SSH客户端,如:Putty、Cygwin等其他设置Vagrant初始化成功后,会在初始化目录下生成Vagrantfile配置文件,该配置文件可以进行个性化定制修改。Vagrant默认使用端口映射的方式在本地映射虚拟机的端口,实现类似http://localhost:80的访问方式。这种方法比较麻烦,打开和修改端口的时候都要编辑。相比之下,host-only模式就方便多了。打开Vagrantfile,取消下面一行的注释(去掉#)保存:config.vm.network:private_network,ip:"192.168.33.10"重启虚拟机,这样我们就可以用192.168.33.10访问这台机器了,可以改IP到其他地址,只要不冲突即可。包分发当您配置好开发环境后,退出并关闭虚拟机。在终端打包开发环境:$vagrantpackage打包后,会在当前目录下生成一个package.box文件,这个文件会传递给其他用户。其他用户只需要添加这个框,用于初始化自己的开发目录即可。相同的开发环境。添加方法:假设我们拿到的box的存放路径是~/box/package.box,在终端输入:$vagrantboxaddhahaha~/box/package.box#Addpackage.boximage并命名哈哈哈$cd~/dev#切换到项目目录$vagrantinithahaha#用哈哈哈图片初始化。集成预安装从上面的文章中,你会发现每次修改一点内容,然后打包分发给其他用户,是一件非常麻烦的事情。为此,Vagrant还提供了更方便的预安装定制。打开Vagrantfile,文件末尾有如下注释代码:config.vm.provision"shell",inline:<<-SHELLapt-getupdateapt-getinstall-yapache2SHELL没错,这段代码就是让你运行vagrantup第一次,虚拟机创建过程中自动运行的初始化命令。取消注释并写入所有要预安装的php/mysql/redis和配置。在初始化的时候,这些程序会按照你写的方法进行安装和配置。如果你不是第一次运行,修改了这里的命令,又想让系统再次运行这里的命令,可以使用vagrantreload--provision重新加载。所以这种情况下,你只需要将Vagrantfile共享给团队其他成员,其他成员运行相同的命令即可,比打包分发方便多了。也可以将要运行的命令单独写在一个文件中,存放在同一个目录下,如bootstrap.sh:#!/usr/bin/envbashapt-getupdateapt-getinstall-yapache2if![-L/var/www];然后rm-rf/var/wwwln-fs/vagrant/var/wwwfi并将其添加到Vagrantfile中:Vagrant.configure("2")do|config|config.vm.box="hashicorp/precise64"...config。vm.provision"shell",path:"bootstrap.sh"#加入这一行结束效果和直接写在Vagrantfile中是一样的。常用命令$vagrantinit#初始化$vagrantup#启动虚拟机$vagranthalt#关闭虚拟机$vagrantreload#重启虚拟机$vagrantssh#SSH到虚拟机$vagrantstatus#查看虚拟机运行状态$vagrantdestroy#销毁当前虚拟机查看官方文档https://www.vagrantup.com/doc...注意事项使用Apache/Nginx时,会出现图片被修改但页面刷新还是旧文件等情况,这是由VirtualBox的一个BUG引起的。需要修改虚拟机中的Apache/Nginx配置文件:#Apache配置(httpd.conf或apache.conf)修改:EnableSendfileoff#Nginx配置(nginx.conf)修改:sendfileoff;