Vagrant

Vagrant的更新比較多,所以你們不要盡信網上的教程,包括此文,建議使用最新版,配置仍是以Vagrant官網文檔爲準。html

須要掛載的路徑不能在虛擬機中建立符號連接!!!不然沒法正常掛載!!!linux

  • Vagrant是什麼?

                Vagrant 是一款用來構建虛擬開發環境的工具,它底層支持VirtualBox、VMware甚至AWS做爲虛擬機系統。git

  • Vagrant能作什麼?github

    1. 統一開發環境。一次配置打包,統一分發給團隊成員,統一團隊開發環境,解決諸如「編碼問題」,「缺乏模塊」,「配置文件不一樣」帶來的問題;
    2. 避免重複搭建開發環境。新員工加入,不用浪費時間搭建開發環境,快速加入開發,減小時間成本的浪費;web

    3. 多個相互隔離開發環境。能夠在不用box裏跑不一樣的語言,或者編譯安裝同一語言不一樣版本,搭建多個相互隔離的開發環境,卸載清除時也很快捷輕鬆。redis

  • 安裝 和 配置?ubuntu

1. #Vagrant經常使用命令

1.1. 添加box

 
  1. #提早下載好的box文件,~/box/precise64.box,咱們給這個box命名爲ubuntu12.04
  2. vagrant box add ubuntu12.04 ~/box/precise64.box
  3. #box文件也能夠是遠程地址 base 爲默認名稱
  4. #vagrant box add base http://files.vagrantup.com/lucid64.box

1.2. 初始化

 
  1. #打開目錄
  2. #cd ~/vagrant/work
  3. #初始化
  4. vagrant init
  5. #若是你添加的box名稱不是base,那麼須要在初始化的時候指定名稱,例如
  6. vagrant init ubuntu12.04

1.3. 啓動虛擬機

 
  1. vagrant up

1.4. ssh到虛擬機

 
  1. vagrant ssh

1.5. 重啓虛擬機(從新載入配置文件)

 
  1. vagrant reload

1.6. 打包分發

 
  1. vagrant package

1.7. 更多命令查看幫助

 
  1. vagrant -h

2. #主要配置

        開發目錄下有一個文件Vagrantfile,裏面包含有大量的配置信息,主要包括三個方面的配置,虛擬機的配置、SSH配置、Vagrant的一些基礎配置。
        打開看一下,註釋很全,因此不用擔憂不會配置了,下面主要備忘幾個經常使用配置:segmentfault

2.1. box設置

 
  1. config.vm.box = "ubuntu12.04"

2.2. hostname設置

 
  1. config.vm.hostname = "for_work"

2.3. 虛擬機網絡設置

 
  1. #config.vm.network "private_network", ip: "192.168.33.10"
  2. config.vm.network "public_network"

2.4. 同步目錄

 
  1. config.vm.synced_folder "../data", "/vagrant_data"

2.5. 端口轉發

 
  1. config.vm.network "forwarded_port", guest: 80, host: 8080

2.6. 內存和cpu核心

 
  1. config.vm.provider "virtualbox" do |vb|
  2. #Display the VirtualBox GUI when booting the machine
  3. vb.gui = true
  4. #Customize the amount of memory on the VM:
  5. vb.memory = "1024"
  6. vb.cpus = 2
  7. vb.name = "my_vm"
  8. end

3. #注意事項

        使用 Apache/Nginx 時會出現諸如圖片修改後但頁面刷新仍然是舊文件的狀況,是因爲靜態文件緩存形成的。須要對虛擬機裏的 Apache/Nginx 配置文件進行修改:緩存

 
  1. # Apache 配置添加:
  2. EnableSendfile off
  3.  
  4. # Nginx 配置添加:
  5. sendfile off;

3.1. Vagrant內的站點訪問速度慢?

How to make Vagrant performance not suck ?
Vagrant NFS configration網絡

  • 使用NFS !important
  • 使用CPU多核心,加點內存
  • 打包保存本身的BOX,備用
  • 域名解析問題?

具體配置操做,參考原文 和 vagrant文檔。

  • nfs權限問題

     
    1. config.vm.synced_folder '.', '/vagrant', :nfs =>{
    2. :linux__nfs_options => ["no_root_squash"],
    3. :map_uid => 0,
    4. :map_gid => 0
    5. }
  • 域名解析慢的問題

    Vagrant: Slow internet connection in guest

     
    1. config.vm.provider :virtualbox do |vb|
    2. #vb.gui = true
    3. vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    4. vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
    5. end

3.2. 掛載失敗的問題?

報錯:

Failed to mount folders in Linux guest. This is usually because the "vboxsf" file system is not available. Please verify that the guest additions are properly installed in the guest and can work properly. The command attempted was:

嘗試:

 
  1. //sudo apt-get install virtualbox-guest-dkms
  2. sudo apt-get install virtualbox-guest-utils

報錯:

default: stdin: is not a tty

vi /root/.profile

把 mesg n 替換成 tty -s && mesg n

3.3. redis 文件權限問題

報錯:

redis Can't open the log file
redis 沒法加載.rdb
redis 沒法載入.rdb

解決辦法:

把 redis:redis 用戶組設置更改成 vagrant:vagrant.

Permissions error trying to dump Redis to a Vagrant shared folder

參考:

相關文章
相關標籤/搜索