zoukankan      html  css  js  c++  java
  • vagrant打造自己的开发环境

    vagrant打造自己的开发环境

    缘由:

        在网上看到斌哥,爽神都写了关于vagrant的博客,都在说很强大,所以很好奇这玩意怎么个强大,然后也就自己来一发玩玩看看。

     

    真实缘由:

          说实话是电脑配置太低,win7系统,3G内存,08年的品牌机,所以扛不住Vmware的,以前也是一直在用Vmware,但是面对面前的这台电脑,也只能呵呵了~

    期间曾经用过一段Ubuntu,由于工作原因,需要实时QQ进行交流,所以又呵呵了~

    至于大家说什么wine+QQ,什么个人开发的Ubuntu上可运行的QQ,我又只能呵呵了~

     

    个人感受:

          感觉想当年玩过的H3C、Cisco的模拟器一样,Dos窗口下来完成一切,实在是有种黑的不能再黑的赶脚~

          vagrant的打包功能类似Vmware的克隆,打包之后可以拿给其他人去用,统一的平台,统一的软件结构,作为开发测试的一个公共平台实在是极好的~

          重新封包的box拿到其它机器上去运行,依旧会存在网卡重新生成的情况,需要手动清除(仅针对使用 private_network的模式

          唯一的不同点就是Vmware的克隆出来一个虚机很大很大,而vagrant重新封包依旧是小巧玲珑~

    关于vagrant:

        Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。

    详细操作步骤:

    工具及环境介绍:

    工具及环境 版本 下载地址
    宿主机环境 win7 x64 旗舰版 http://msdn.itellyou.cn/
    VirtualBox VirtualBox-4.3.12-93733-Win https://www.virtualbox.org/
    vagrant vagrant_1.6.3 http://www.vagrantup.com/
    box CentOS-6.3-x86_64-minimal.box http://www.vagrantup.com/
    xshell xshell_4.0.0131.1397032097 http://www.netsarang.com/download/main.html

    亮点来了,请仔细看额:

    1、安装VirtualBox

        (略)

    2、安装vagrant

        

    3、下载box

        

    4、安装xshell

    5、正式开始进行操作~

    • 新建一个文件夹作为工作目录

      wKiom1OSioTR5URAAACu7S2Z7UY792.jpg

    • 打开一个dos窗口,初始化该目录,然后导入box

      Note: 导入box的默认指令

      vagrant box add name uri

       但是由于直接制定uri的话,就相当于在线下载了,那速度是相当的慢啊,所以这里我就事先下载好   了,直接导入即可

    1
    2
    vagrant init
    vagrant box add centos6.3 j:迅雷下载CentOS-6.3-x86_64-minimal.box

       wKioL1OSij_iG-P8AAJYBBp2EYQ738.jpg

        修改后的文档:启用了四个虚拟机,内存均为256M

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    # -*- mode: ruby -*-
    # vi: set ft=ruby :
     
    app_servers = {
        :http => '192.168.58.20',
        :php => '192.168.58.21'
    }
     
    Vagrant.configure("2") do |config|
        config.vm.box = "centos6.3"
     
        config.vm.define :haproxy do |haproxy_config|
            haproxy_config.vm.network :private_network, ip: "192.168.58.10"
            haproxy_config.vm.network :forwarded_port, guest: 80, host: 8080
            config.vm.provider :virtualbox do |vb|
                vb.name = "haproxy"
                vb.customize ["modifyvm", :id, "--memory", "256"]
            end
        end
     
        app_servers.each do |app_server_name, app_server_ip|
            config.vm.define app_server_name do |app_config|
                app_config.vm.hostname = "#{app_server_name.to_s}.vagrant.internal"
                app_config.vm.network :private_network, ip: app_server_ip
               # app_config.vm.synced_folder "../app", "/opt/app"
                app_config.vm.provider "virtualbox" do |vb|
                    vb.name = app_server_name.to_s
                    vb.customize ["modifyvm", :id, "--memory", "256"]
                end
            end
        end
     
        config.vm.define :redis do |redis_config|
            redis_config.vm.hostname = "redis.vagrant.internal"
            redis_config.vm.network :private_network, ip: "192.168.58.30"
            redis_config.vm.provider "virtualbox" do |vb|
                vb.name = "redis"
                vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
                vb.customize ["modifyvm", :id, "--memory", "256"]
            end
        end
    end
    • 开启虚拟机,这里你可以完全开启,也可以只开启一台

      PS: 第一次开启的时候,建议一台一台的开启,这样的话方便记录ssh连接端口号(个人偏好使用xshell)

        wKiom1OSirrjv-atAAMGtNXhIRM901.jpg

    • 使用xshell链接测试

      连接账号:vagrant

      连接密码:vagrant

      su到root下密码:vagrant

      wKiom1OSjRqik3AYABNM92GMGRI148.gif

    • 常用命令

    1
    2
    3
    4
    5
    6
    vagrant box list             # 列出当前导入的box
    vagrant destory              # ***machine
    vagrant box remove [name]    # 移除box
    vagrant up [name]            # 启动machine                 
    vagrant halt [name]          # 关闭machine 
    vagrant status [name]        # 查看machine的状态

       wKiom1OSkgvigxC3AAOL1p0Y_aA953.jpg

    • 打包

        关闭当前机器,然后打包(我这里为haproxy这台机器安装了epel源)

       wKioL1OSk9aQOWCQAAFUqYl-aSc429.jpg

       wKioL1OSlV_i0lmnAALGREpaV-E798.jpg

    写到这里好像要打完收工了,还有啥~

    额,还有好多知识没有说

    vagrant的几种网卡类型

    使用过程中碰到的问题,后续在更新吧~

    使用感受:

        搭建了一个haproxy + tomcat的环境,三台机器全开,占用系统资源也不是很大,跑起来绝对没问题,也挺流畅~

    参考文档:

    斌哥的网站:http://opslinux.com/shi-yong-vagrantda-zao-ni-de-xu-ni-huan-jing.html

    爽神的网站:http://www.iamle.com/archives/1684.html

    Vagrantfile借用站点:http://blog.sina.com.cn/s/blog_804327560101eiyk.html

    官方站点:http://docs.vagrantup.com/v2/

    吐 槽大会:这玩意用起来也就那么回事,是蛮方便的,但是对于程序猿来说也是一个头大的事情,而且Dos窗口那么不和谐~ 等到图形界面和VirtualBox完全整合了的话,估计就是一键点击下的事了,不过到那个时候又不知道会有什么新的工具出来,总的来说,能用,有亮点, 但是亮点不是完全超越性的~

     使用 Vagrant 打造跨平台开发环境
    Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史。
    
    我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,非常霸气。
    安装步骤
    1. 安装 VirtualBox
    
    虚拟机还是得依靠 VirtualBox 来搭建,免费小巧。
    下载地址:https://www.virtualbox.org/wiki/Downloads
    
    * 虽然 Vagrant 也支持 VMware,不过 VMware 是收费的,对应的 Vagrant 版本也是收费的
    2. 安装 Vagrant
    
    下载地址:http://downloads.vagrantup.com/ 根据提示一步步安装。
    
    此外,还得下载官方封装好的基础镜像:
    Ubuntu precise 32 VirtualBox http://files.vagrantup.com/precise32.box
    Ubuntu precise 64 VirtualBox http://files.vagrantup.com/precise64.box
    
    如果你要其他系统的镜像,可以来这里下载:http://www.vagrantbox.es/
    
    * 鉴于国内网速,我们将下载镜像的步骤单独剥离出来了
    3. 添加镜像到 Vagrant
    
    假设我们下载的镜像存放路径是 ~/box/precise64.box,在终端里输入:
    
    $ vagrant box add hahaha ~/box/precise64.box
    
    hahaha 是我们给这个 box 命的名字,~/box/precise64.box 是 box 所在路径
    4. 初始化开发环境
    
    创建一个开发目录(比如:~/dev),你也可以使用已有的目录,切换到开发目录里,用 hahaha 镜像初始化当前目录的环境:
    
    $ cd ~/dev  # 切换目录
    $ vagrant init hahaha  # 初始化
    $ vagrant up  # 启动环境
    
    你会看到终端显示了启动过程,启动完成后,我们就可以用 SSH 登录虚拟机了,剩下的步骤就是在虚拟机里配置你要运行的各种环境和参数了。
    
    $ vagrant ssh  # SSH 登录
    $ cd /vagrant  # 切换到开发目录,也就是宿主机上的 `~/dev`
    
    ~/dev 目录对应虚拟机中的目录是 /vagrant
    
    Windows 用户注意:Windows 终端并不支持 ssh,所以需要安装第三方 SSH 客户端,比如:Putty、Cygwin 等。
    5. 其他设置
    
    Vagrant 初始化成功后,会在初始化的目录里生成一个 Vagrantfile 的配置文件,可以修改配置文件进行个性化的定制。
    
    Vagrant 默认是使用端口映射方式将虚拟机的端口映射本地从而实现类似 http://localhost:80 这种访问方式,这种方式比较麻烦,新开和修改端口的时候都得编辑。相比较而言,host-only 模式显得方便多了。打开 Vagrantfile,将下面这行的注释去掉(移除 #)并保存:
    
    config.vm.network :private_network, ip: "192.168.33.10"
    
    重启虚拟机,这样我们就能用 192.168.33.10 访问这台机器了,你可以把 IP 改成其他地址,只要不产生冲突就行。
    6. 打包分发
    
    当你配置好开发环境后,退出并关闭虚拟机。在终端里对开发环境进行打包:
    
    $ vagrant package
    
    打包完成后会在当前目录生成一个 package.box 的文件,将这个文件传给其他用户,其他用户只要添加这个 box 并用其初始化自己的开发目录就能得到一个一模一样的开发环境了。
    7. 常用命令
    
    $ vagrant init  # 初始化
    $ vagrant up  # 启动虚拟机
    $ vagrant halt  # 关闭虚拟机
    $ vagrant reload  # 重启虚拟机
    $ vagrant ssh  # SSH 至虚拟机
    $ vagrant status  # 查看虚拟机运行状态
    $ vagrant destroy  # 销毁当前虚拟机
    
    更多内容请查阅官方文档 http://docs.vagrantup.com/v2/cli/index.html
    8. 注意事项
    
    使用 Apache/Nginx 时会出现诸如图片修改后但页面刷新仍然是旧文件的情况,是由于静态文件缓存造成的。需要对虚拟机里的 Apache/Nginx 配置文件进行修改:
    
    # Apache 配置添加:
    EnableSendfile off
    
    # Nginx 配置添加:
    sendfile off;
    
    SegmentFault 团队就是用这种方式统一开发环境的
    本篇文章所用程序版本 VirtualBox 4.2.16,Vagrant 1.2.7
    Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。[1] 
    安装方法:
    sudo gem install vagrant
    vagrant box add base
    mkdir vagrant
    vagrant init
    vagrant up。
     Vagrant 快速入门
    
    1. Vagrant功能:
         Vagrant uses Oracle’s VirtualBox to build configurable, lightweight, and portable virtual machines dynamically..
    
          【Vagrant 使用Oracle VM VirtualBox 动态创建和配置轻量级的,可重现的,便携的虚拟机环境。】
    2. Vagrant下载:
    
          http://downloads.vagrantup.com/tags/v1.0.5
    3. Vagrant安装:
    
           3.1. 下载并安装Oracle VM VirtualBox: 例如在Windows环境下,需要安装VirtualBox-4.2.0-80737-Win.exe
    
                   https://www.virtualbox.org/wiki/Downloads
    
           3.2. 下载并安装最新版本的Vagrant:
    
                  http://downloads.vagrantup.com/
    
           [注]在 Windows and Mac OS X,vagrant 命令应该自动添加到环境变量PATH. 但是在其他操作系统下, 你必须手动添加/opt/vagrant/bin 到环境变量PATH。
    4. Vagrant命令
    
           Vagrant安装完成之后,我们就可以从命令行通过vagrant命令来进行操作。vagrant 常用命令如下:
    
           vagrant box add <name> <url>
           vagrant box list
           vagrant box remove <name>
           vagrant box repackage <name> 
           vagrant init [box-name] [box-url]
           vagrant up [vm-name] [--[no-]provision] [-h]
           vagrant destroy [vm-name]
           vagrant suspend [vm-name]
           vagrant reload [vm-name]
           vagrant resume [vm-name]
           vagrant halt [vm-name]
           vagrant status [vm-name]
           vagrant package [vm-name] [--base name] [--output name.box][--include one,two,three] [--vagrantfile file]
           vagrant provision [vm-name]
           vagrant ssh [vm-name] [-c command] [-- extra ssh args]
           vagrant ssh-config [vm-name] [--host name]
    5. Vagrantfile
    
           任何Vagrant工程下都有一个Vagrantfile, 就像makefile一样,Vagrantfile用来配置vagrant的行为所创建虚拟机的信息,下面是一个基本的Vagrantfile:      
    
           Vagrant::Config.run do |config|
               # Setup the box
               config.vm.box = "my_box"
           end
    
    6. 创建第一个Vagrant虚拟环境以及工程:
    
    (1)创建工程目录, 并且执行vagrant init命令,该命令会产生最初的 Vagrantfile
    
    $ mkdir vagrant_guide
    $ cd vagrant_guide
    $ vagrant init
    
    (2)添加一个Base Box:
    
         Vagrant不是从头开始创建虚拟机,而是导入一个虚机的base image,在这个基础上进行构建。这些image就叫做Box.
    
         Vagrant 支持从本地文件系统或者HTTP URL来添加boxes
    
        $vagrant box add base http://files.vagrantup.com/lucid32.box
    
         $vagrant box add base D:lucid32.box
    
        
    
    (3)配置Project使用这个Box: 修改Vagrantfile为如下内容:
    
         Vagrant::Config.run do |config|
            config.vm.box = "base"
         end
    
    (4)启动虚拟机
    
        $vagrant up
    
        
    
    (5)停掉虚拟机
    
        $vagrant destroy
    
    (6) SSH配置
    
         Vagrant 提供了对虚拟机的SSH连接,只需要执行一个命令:
    
        $vagrant ssh
    
        在Windows环境下可以使用PUTTY,配置下面的信息来连接虚拟机:
    
         hostname: localhost
    
         port:             2222
    
         Connection Type: SSH
    
         User Name:   vagrant
    
         Password:     vagrant
    
        
    
    (7)访问刚才创建的Project.
    
         Vagrant 通过VirtualBox的shared folder来连接你的application和虚拟机, 默认的shared folder的卫士是/vagrant, 所以想要查看刚才创建的项目,只需要执行:
    
         vagrant@lucid32:~$ ls /vagrant
         index.html  Vagrantfile
    
    (8) Provisioning:
    
          通常情况下Box只做最基本的设置,而不是一次到位的设置好所有的环境。Vagrant通常使用chef或者Puppet来做进一步的环境搭建。
    
          回到刚才创建的index.html,我们需要安装Apache。我们下面用Puppet来完成这一设置。
    
          1. 在项目的根目录下创建文件夹manifests,然后在该文件家中创建Puppet的配置文件default.pp,该文件内容如下:     
    
        # Basic Puppet Apache manifest
    
        class apache {
          exec { 'apt-get update':
            command => '/usr/bin/apt-get update'
          }
    
          package { "apache2":
            ensure => present,
          }
    
          service { "apache2":
            ensure => running,
            require => Package["apache2"],
          }
        }
    
        include apache
    
       2. 在Vagrantfile里添加对Puppet provisioning的支持: 
    
        Vagrant::Config.run do |config|
          config.vm.box = "base"
    
          # Enable the Puppet provisioner
          config.vm.provision :puppet
        end
    
    (9) 运行Project
    
            为了使puppet的配置生效,如果不重启虚机,则需要执行vagrant reload命令。
    
             $ vagrant reload 
    
            因为没有配置port forwarding,所以你还不能从本地浏览器查看Project的输出。只能SSH到虚拟机上查看127.0.0.1的输出:
    
           
    
    (10) 进行端口映射
    
            修改Vagrantfile, 添加本地端口和虚机端口的映射关系, 然后执行vagrant reload, 然后你就可以通过本地浏览器来访问:http://localhost:4567.  
    
       Vagrant::Config.run do |config|
            # Forward guest port 80 to host port 4567
            config.vm.forward_port 80, 4567
       end 
    
    7. 打包 Packaging
    
       1. 创建一个新的文件Vagrantfile.pkg,内容如下:     
    
         Vagrant::Config.run do |config|
                    # Forward apache
                    config.vm.forward_port 80, 8080
             end
        2. 打包Project       
    
           $ vagrant package --vagrantfile Vagrantfile.pkg
    
    8. 打包完成后,在工程根目录下就会生成package.box,别人就可以使用这个Box了:
    
        $ vagrant box add my_box /path/to/the/package.box
            $ vagrant init my_box
            $ vagrant up

    http://www.phperz.com/topics/926.html

  • 相关阅读:
    Vue 创建项目
    Vue组件之间的传参
    Vue自定义组件
    Python开发之路
    爬虫
    手撸系列
    Django从入门到不会放弃
    前端
    day29 TCP的三次握手 TCP的四次挥手 基于TCP的socket
    day28 客户端服务端架构介绍
  • 原文地址:https://www.cnblogs.com/timssd/p/4658876.html
Copyright © 2011-2022 走看看