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

相關文章
相關標籤/搜索