Home / PostsPost

在Mac上使用Virtual Box和Vagrant搭建开发环境

嘟噜聪2015/04/05 17:54:52 21271人已阅

简介 Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史。Vagrant 可以封装一个 Linux 的开发环境,分享给其他开发人员。其他人可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,可以把开发环境配制成与生产环境一样。

    距离MacBook到手已经过了半个月了,使用起来确实特别爽,很方便,从开机到现在几乎都没有关过电脑,系统运行非常流畅,唯一的遗憾就是ssd空间太小了,256g的ssd依我的使用速度很快就被占满的,在考虑要不要整时间胶囊呢。。。我台式机的1.5T 似乎也快用完了,哈哈存了好多支漫及我记录生活的相册(网盘不靠谱,不存网盘)。

    上次写的我那MacBook的开箱文章还真有些人看呢 《2015款13寸 MacBook Pro Retina 开箱》 最下面有我做的开箱视频,有兴趣的可以看看。

    好了不扯了,进入正题吧,今天我要讲的是在MacBook上搭建开发环境,这是一个比较优的方案也非常推荐个位开发者们使用,真的很不错,Mac上更是不用说了非常好用,当然文章会比较长,因为讲的东西很多,当然搭建非常简单,一次做好后以后几乎就不用怎么动了,一个环境好很多的东西。




    Vagrant 是一款用来管理虚拟机的工具,可以构建虚拟开发环境的,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史。Vagrant 可以封装一个 Linux 的开发环境,分享给其他开发人员。其他人可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,可以把开发环境配制成与生产环境一样。

    VirtualBox 是一款开源虚拟机软件。VirtualBox 是由德国 Innotek 公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。Innotek 以 GNU General Public License (GPL) 释出 VirtualBox,并提供二进制版本及 OSE 版本的代码。使用者可以在VirtualBox上安装并且执行SolarisWindowsDOSLinux、OS/2 Warp、BSD等系统作为客户端操作系统。(百度来的,哈哈哈哈)

    为什么不用MacBook搭建mamp环境?

    对于买不起Mac的消(qiong)费(diao)者(si),都是在Windows下做开发的,Windows大家都用过,说好也确实不错,说烂也能烂到家。不过有时候我们在Windows下写的东西可能到了生产环境就不一定好使了,因为生产环境肯定用的都是Linux系统,那么有些扩展配制起来就非常的麻烦,往往很多时候咱们在Linux上用到的扩展,很难找到Windows版的,很麻烦,Mac OS X也一样,所以我也不推荐大家直接在Mac OS X系统下直接搭建mamp环境,大家知道OS X核心是基于unix系统或者说它就是Unix系统的变种,基本上Unix系统下的命令OS X都能用。现在市面上使用Unix系统的服务器也比较少,所以扩展什么的当然也少,然后就像我上面说的那样,需要什么都不好弄。

    OS X 下有一个集成环境的软件叫作Mamp

 

mamp普通版是免费的而pro版是收费的,如果你很有钱并且想支持下版的话可以去官网下载 http://www.mamp.info/ (Mac电脑都买了还在乎这点小钱?你说是不?反正我很穷)当然,如果你也跟我一样很穷的话 [链接: http://pan.baidu.com/s/1mg21U44 密码: m9y2 ](不用客气,叫我红领巾就可以了)不过我还是不建议使用他们,因为如果你要升级的话还麻烦,而使用虚拟机的话就算你不再用Mac了只要把环境打包一下在Windows下也是可以用的,是不是很方便。

    对了,如果机器还不错的话可以用它们来做集群、数据库主从架构等等,非常方便,我在MacBook上用着非常棒,可以各种搞而不用担心会把Mac系统给搞奔溃,最多把Linux搞奔溃后重新恢复一下就行了,非常可靠。如果你开发的项目非常的复杂,需要各种第三方的包啊,或一些工具和服务你在虚拟环境搭建的话就可以与你所使用的物理机的系统隔离开来,如果你自己的电脑安装的插件或扩展越来越多每自然也会越来越慢。而如果在虚拟机开发的话只要项目开发完成了就要以把虚拟机关掉或删除。(如果在Mac上每开发完一个项目都要处理一大块的扩展甚至重装系统,多麻烦呐)

    使用vagrant搭建虚拟机很简单,但在linux从无到有去搭建一个开发环境比较复杂的,需要一写的运维经验,坑也比较多,刚开始我也想自己搭建一套属于自己的开发环境,结果浪费了好多天的时间,终还是向运维大大们求救才搞定,因为我使用的是CentOS 7.0精简版,本来7.0改动就很大,很多命令都不太好使,并且还是精简版,哎呦我的乖乖啊,可把我给累坏喽,再也不想碰了,太尼玛恶心了,说多了都是泪啊。。。


    Virtual Box


    这个就不用多说了安装,很简单的,拖进去就完事了,息去官网下载吧。官网地址:https://www.virtualbox.org/ 或者 []叫我红领巾就好,哈哈哈

    Puphpet

    好了又说了这么多费话了,其实咱们今天的主角是一个自动化运维工具「puphpet」使用这个工具能非常快并且高效果的为您搭建完整的开发环境。也不说那么多的费话了,直接写怎么使用这个工具吧。。。

    puphpet是一种Linux、unix、Windows平台的集中配制管理系统,使用自有的puppet描述语言,可以管理配制文件、用户、cron任务、系统服务等。puppet把这些系统实休称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。(哈哈,这个也是百度来的)

    puphpet的官网:https://puphpet.com  我们需要根据自己项目所需要的环境来选择需要安装的环境及相关扩展,根据官网的提示进行操作,一共也就7个步骤,最后一步是生成配制文件,怎么选看个人需求吧,如果要什么软件、扩展那就把那个钩上就好了,我所使用的是 lnmp 环境 加了一些其他服务比如redis。到了最后一步点上面的一个大按钮“go ahead then,make it!” 下载文件,文件并不大只有2m 多,把它解压。


    Vagrant

    vagrant官网 https://www.vagrantup.com 

    首先去下载vagrant for mac最新版,然后安装(怎么安装就不用我多说了吧,如果你是用mac的话那应该会,如果不是那请先把Mac系统的基本使用学会吧,学习成本应该是很低的)安装好之后咱们打开终端输入命令:


cd #进入用户目录
我一般是在我自己的用户目录进行开发这个可以根据自己的需求定,然后输入命令:
mkdir vagrant

创建vagrant目录,当然你也可以在要目录下创建,这个根据你自己的规划定吧,我的建议是在用户目录下。

创建好之后进入刚刚创建的vagrant目录把之前下载好的 puphpet 文件拷到那个创建的vagrant目录上去

如图 Vagrantfile就是vaganrt的默认配制文件 puphpet这个目录就是puphpet的管理工具我们不需要修改Vagrantfile文件 它是用Ruby语言编写的,有兴趣的可以打开看看,puphpet的管理配制文件是puphpet目录里边,进入puphpet目录可以看到以下文件及目录,其他的目录不用管,我们只需要看config.yaml这个文件就可以了(关于config.yaml这个文件我会单独写一篇文章对它进行解释,请关注后面


open config.yaml
打开这个文件我们可以看到这么多的配制,这就是puphpet的的全部配制了,synced_folder 这个就是需要设置的同步目录,记得一定要配制正确,要不然会报错的。


    好了运行vagrant命令


vagrant up

看看我的:

因为是第一次运行,的以它要进行相当配制的初始化,比如添加box文件啊安装虚拟主机啊什么的时间还挺长,(对了这里还有一个小方法,只是听说哈具体的我也还没有实验过,你可以自己去下载box文件,然后把它放到puppet目录就行了,要注意的是文件名必须是与你配制的文件名一至比如我的是CentOS65-x64.box,这个工具会先从puppet这个目录查找是否有这个文件,如果有的话就直接add 如果没有的话会从网上下载CentOS65-x64.box文件,自己去尝试一下吧,很多东西我也是一步一步尝试过来的,网上的文档比较少,只能靠自己了,嘿嘿(^_^;))你只要耐心等就行了。对了,这里要注意的一点是第一次运行它会去下载你刚刚配制的那个box文件,时间会比较长。下载完成后它会自动vagrant box add进去,不需要手动处理,全部都是自动的。然后接下来很长一段时间它都是在安装你之前勾选的服务及扩展,时间会比较长,看你安装了多少服务吧,服务越多就越慢,因为它也得从网上下载最新的安装包,当然这时你可以执行 



vagrant box list
list命令查看box 是否已经add成功了,如果列表里有你刚刚然后再执行命令



vagrant status

查看虚拟机的状态如果状态显示的是running 那就表示虚拟机已经启动了,执行以下命令就可以进入虚拟机里面



vagrant ssh
进入后就跟真正的linux一样了,想怎么用就怎么用,当然,此时服务什么的还没有安装完成,你必须等puppet的脚本全部执行完成之后才能进行后续的操作,建议此时先不要做任何的操作,看看就好。


    如果对vagrnat 不熟的话可以执行vagrant -h命令查看使用方法。

vagrant 命令


    以下是一些我们常用的命令,有些help上面没有讲我也列出来了,有些是干嘛的我也没有用过。。。(; ̄ェ ̄)

vagrant box add {作者/系统名} {box文件路径}  #添加虚拟机
vagrant box remove {作者/系统名}  #删除虚拟机
vagrant init {作者/系统名}  #初化化虚拟机此时会生成一个Vagrantfile文件
vagrant box list #查年现有的虚拟机
vagrant status  #查看所有虚拟机状态
vagrant halt {作者/系统名}  #关闭指定虚拟机
vagrant provision  #当修改完配制后只要执行一下此命令就可以对虚拟机进行相关修改
vagrant reload #重启虚拟机
vagrant ssh  #使用ssh的方式连接虚拟机
vagrant up  #启动虚拟机
vagrant version #查看版本信息
vagrant plugin {插件} #安装插件
vagrant package {作者/系统名} #把你的虚拟机打包在box可以分享给你拉小人类伴们一起使用,非常方便
vagrant resume  #恢复虚拟机
vagrant suspend  #暂停虚拟机
vagrant destroy  #销毁当前虚拟机

     ok 写的这么多虚拟机也差不多全部安装、配制好了,先重启一下虚拟机吧(有时候重启确实可以解决很多问题)


    我自己这里配制了很多的虚拟站点,linux下的目录是在 /var/www 这个目录,而我本机的真实目录是 /Users/{不告诉你}/Workspace/Website/ 这个目录,这两个目录是同步的,当你在linux下删除这个目录下的文件时本机的目录里的东西也是会被删除掉的哦,所以我建议请谨慎使用 rm -rf * 命令,如果是土豪有 AirPort Time Capsule(时间胶囊)的话 请忽略我刚刚讲的话,我不跟土豪玩耍。

    还有当你使用 vagrant up命令启动虚拟机时它会让你输入一下密码,这个密码就是你的系统密码困为它需要对你目录的 /etc/hosts 文件进行修改,要不然你配制的域名是无法访问的。

配制虚拟主机

    ok 以下讲了这么多,接下我说说配制虚拟主机,打开 config.yaml 文件,找到nginx: 下的 vhosts: 这行你会看到,注意不是apache 因为我装的是nginx,install: '1' 设置为1就表示安装此项目,0表示不安装此项,nginx的配制与apache是不一样的。

    w1wzsqfrnczj:
            proxy: ''
            server_name: awesome.dev
            server_aliases:
                - www.awesome.dev
            www_root: /var/www/awesome
            listen_port: '80'
            index_files:
                - index.html
                - index.htm
                - index.php
            client_max_body_size: 20m
            locations:
                ok2bmdbwppbf:
                    location: /
                    try_files:
                        - $uri
                        - $uri/
                        - index.php
                    fastcgi: ''
                    fastcgi_index: ''
                    fastcgi_split_path: ''
                ofmkaz5qqcrj:
                    location: '~ \.php$'
                    try_files:
                        - $uri
                        - $uri/
                        - index.php
                        - /index.php$is_args$args
                    fastcgi: '127.0.0.1:9000'
                    fastcgi_index: index.php
                    fastcgi_split_path: '^(.+\.php)(/.*)$'
                    fast_cgi_params_extra:
                        - 'SCRIPT_FILENAME $request_filename'
                        - 'APP_ENV dev'
            ssl_cert: ''
            ssl_key: ''
            ssl_port: '443'
 以上这段是系统默认给加的,不信的话你进 /var/www/awesome/ 目录添加index.html 文件里面写上 Hello Latte! 然后从浏览器访问看看。


这一段最终会在 /etc/nginx 目录下的 sites-available/ 目录生成一个名叫

w1wzsqfrnczj.conf 的文件
打开看看就知道了,好了就写到这吧,这文章太长了 浏览器都快要挂制了,具体的请看我 别一篇文章写的关于 config.yaml 的配制。


这文章写的好长,如何配制虚拟主机请看文章《使用puphpet工具配制多网站》

今天就写到这吧,谢谢观赏。

如想转载请注明来源 谢谢您的配合 (⌒-⌒; )

很赞哦! (2)

文章评论

点击排行

本栏推荐

标签

站点信息

  • 微信公众号