vagrant打造本身的开发环境

vagrant打造本身的开发环境php

原因:html

    在网上看到斌哥,爽神都写了关于vagrant的博客,都在说很强大,因此很好奇这玩意怎么个强大,而后也就本身来一发玩玩看看。java

 

真实原因:python

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

期间曾经用过一段Ubuntu,因为工做缘由,须要实时QQ进行交流,因此又呵呵了~web

至于你们说什么wine+QQ,什么我的开发的Ubuntu上可运行的QQ,我又只能呵呵了~redis

 

我的感觉:shell

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

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

      从新封包的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

 

亮点来了,请仔细看额:

一、安装VirtualBox

    (略)

二、安装vagrant

    

三、下载box

    

四、安装xshell

 

五、正式开始进行操做~

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

     

     

    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