首頁 >運維 >windows維 >在Windows下安裝Vagrant的方法和注意事項

在Windows下安裝Vagrant的方法和注意事項

巴扎黑
巴扎黑原創
2017-08-22 14:04:291679瀏覽

做Web開發少不了要在本地搭建好開發環境,雖然說目前各種腳本都有對應的Windows版,甚至是一鍵安裝包,但很多時候和Windows環境的相性並不是那麼好,各麻煩的問題是實際部署的環境通常是Linux,常常還要面臨開發和部署環境不一致,上線前還要大量的調試。

Windows下玩Linux少不了虛擬機,但裝系統依舊是相當費事。在現在什麼都在自動化的今天,Vagrant就是這麼一個神器,基於Ruby開發,使用開源 VirtualBox 作為虛擬化支持,可以輕鬆的跨平台部署。

今天試著把幾台機器的環境都換成Vagrant,很爽很順暢,我本人實測發現,運行一個centos只需要不到60兆內存,相當的給力。

下面說下安裝步驟,順便把注意點說一下!

準備工作:

下載安裝VirtualBox :https://www.virtualbox.org/

下載安裝Vagrant :http://www.vagrantup.com/

下載需要使用的box :

官方提供的範例:http://files.vagrantup.com/precise32.box

也可以在http://www. vagrantbox.es/ 這裡下載更多不同系統甚至是已經配置好環境直接可以用的box,雖然可以直接在Vagrant直接使用網址,由Vagrant自動下載安裝,但是考慮到網絡情況,還是建議自行先下載好。

由於習慣用CentOS,於是我就下了CentOS 6.3 x86_64 minimal,這個Box根據個人情況進行選擇即可。

設定環境:

安裝完成並且重新啟動好系統之後就可以開始設定環境了。

先在本地建立好工作目錄,並在命令列下切換到對應目錄

vagrant box add base CentOS-6.3-x86_64-minimal.box

base 表示指定預設的box,也可以為box指定名稱,例如centos63 ,使用base時,之後可以直接使用vagrant init 進行初始化,如果自行指定名稱,則初始化的時候需要指定box的名稱。

CentOS-6.3-x86_64-minimal.box 是box對應的檔名,這裡可以是本地保存box的路徑,也可以是可以下載box的網址,如果是網址的話,Vagrant會自動啟動下載。

[vagrant] Downloading with Vagrant::Downloaders::File...
[vagrant] Copying box to temporary location...
[vagrant] Extracting box...
[vagrant] Verifying box...
[vagrant] Cleaning up downloaded box...

設定好box之後,在目前工作目錄執行

vagrant init

產生對應的Vagrantfile。透過文字編輯器開啟Vagrantfile可以進行一些進一步的常用配置:

網路配置:

Vagrant的網路有三種模式

1、較常用是連接埠映射,就是將虛擬機器中的連接埠對應到宿主機器對應的連接埠直接使用,在Vagrantfile中設定:

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

guest: 80 表示虛擬機器中的80埠,host: 8080 表示對應到宿主機器的8080埠。

2、如果需要自己自由的存取虛擬機,但是別人不需要存取虛擬機,可以使用private_network,並為虛擬機設定IP ,在Vagrantfile中設定:

config.vm.network :private_network, ip: "192.168.1.104"

192.168. 1.104 表示虛擬機的IP,多台虛擬機的話需要互相訪問的話,設置在相同網段即可

3、如果需要將虛擬機作為當前局域網中的一台計算機,由局域網進行DHCP ,那麼在Vagrantfile中配置:

config.vm.network :public_network

目錄映射:

既然是開發環境,那麼開發工作肯定還是需要在本地完成,而不是都要進到虛擬機器中去完成,虛擬機器就好好在後台運行服務就好了,不然就本末倒置了,所以這裡就需要使用目錄映射功能,將本地的目錄映射到虛擬機器的對應目錄。

預設情況下,目前的工作目錄,會被對應到虛擬機器的/vagrant 目錄,目前目錄下的檔案可以直接在/vagrant 下進行訪問,當然也可以透過ln 建立軟連接,如

ln -fs /vagrant/wwwroot /var/www

來進行目錄映射,當然,從自動化配置的角度,能不進系統就不需要進系統,所以在Vagrant也可以進行目錄映射的操作:

config.vm.synced_folder "wwwroot/", "/var/www"

前面的參數「wwwroot/」  表示的是本地的路徑,這裡使用對於工作目錄的相對路徑,這裡也可以使用絕對路徑,例如: “d:/www/”

#後面的參數“/var /www” 表示虛擬機器中對應映射的目錄。

運行腳本:

雖然不是必須,但是如果有需要在啟動時運行一些腳本(環境的安裝或有些服務的啟動需要在完成目錄映射之後進行),可以編輯腳本,類似如下(摘自Vagrant Document):

#!/usr/bin/env bash
apt-get update
apt-get install -y apache2
rm -rf /var/www
ln -fs /vagrant /var/www

儲存在和Vagrantfile相同目錄,檔案名稱自取(如boot.sh),然後在Vagrantfile中加入:

config.vm.provision :shell, :path => "boot.sh"

 當初次使用基本的設定都完成則之後,則可以使用vagrant up 啟動虛擬機

Bringing machine 'default' up with 'virtualbox' provider...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] You are trying to forward to privileged ports (ports < = 1024). Most operating systems restrict this to only privileged process (typicallyprocesses running as an administrative user). This is a warning in case
the port forwarding doesn&#39;t work. If any problems occur, please try a port higher than 1024.
[default] Forwarding ports...
[default] -- 22 => <strong>2222</strong> (adapter 1)
[default] -- 80 => 8080 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] The guest additions on this VM do not match the installed version of VirtualBox! In most cases this is fine, but in rare cases it can cause things such as shared folders to not work properly. If you see shared folder errors, please update the guest additions within the virtual machine and reload your VM.
Guest Additions Version: 4.1.18
VirtualBox Version: 4.2
[default] Mounting shared folders...
[default] -- /var/www
[default] -- /vagrant
[default] Running provisioner: shell...

虛擬機啟動之後則可以透過vagrant ssh 聯入虛擬機進行進一步的環境配置,或者軟體安裝相關的工作,在Windows系統下,並不能直接透過vagrant ssh 連接到虛擬機,需要使用Putty,Xshell 等第三方工具進行連接

連接的IP和連接埠根據網路環境配置的不同有所不同,如果是默認使用連接埠對映的話,一般是連接本地的2222埠。

登录的帐号密码均为 vagrant ,登录之后如果需要 su root ,密码也是 vagrant

注:使用 vagrant ssh 时,会提示可以使用密钥进行登录,如果需要使用putty进行密钥登录的话,需要下载 puttygen 将 ssh 的密钥转换为 ppk 文件才能使用。

登录ssh完成环境的配置,如果在开发环境中使用webserver(nginx/apache)为了避免一些静态文件处理的问题,可能还需要进行一些额外的配置:Vagrant下共享目录静态文件(js/jpg/png等)“缓存”问题

在不进入虚拟机的情况下,还可以使用下面的命令对 虚拟机进行管理:

vagrant up (启动虚拟机)
vagrant halt (关闭虚拟机——对应就是关机)
vagrant suspend (暂停虚拟机——只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用)
vagrant resume (恢复虚拟机 —— 与前面的暂停相对应)
vagrant destroy (删除虚拟机,删除后在当前虚拟机所做进行的除开Vagrantfile中的配置都不会保留)
当在启动Vagrant后,对于虚拟机有进行过安装环境相关的配置,如果并不希望写在Vagrant的启动shell里面每次都重新安装配置一遍,可以将当前配置好的虚拟机打包成box,
vagrant package --output NAME --vagrantfile FILE

可选参数:

--output NAME : (可选)设置通过NAME来指定输出的文件名

--vagrantfile FILE:(可选)可以将Vagrantfile直接封进box中

注:如果网络模式中使用 private_network 的话,在打包之前需要清除一下private_network的设置,避免不必要的错误:

sudo rm -f /etc/udev/rule.d/70-persistent-net.rules

制作完成之后直接将box文件拿到其他计算机上配置即可使用。

注意点: 1.如果在windows下无法启动,则可以开启box的gui端,这样就可以看到出现什么问题。

开启方法:

修改Vagrantfile文件,添加一下内容:

config.vm.provider :virtualbox do |vb|

  vb.gui = true

end

我就遇到了这个问题,虚拟机需要VT虚拟技术支持,所以要开启VT

以上是在Windows下安裝Vagrant的方法和注意事項的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn