Windows上使用Vagrant打造Laravel Homestead可協(xié)同跨平臺開發(fā)環(huán)境
1. 前言
2. 更新歷史
3. 環(huán)境準(zhǔn)備
4. 安裝git
5. 安裝php
6. 安裝Laravel
7. 安裝Composer
8. 安裝Vagrant
9. 安裝VirtualBox
10. Vagrant配置
10.1. 啟動Vagrant
10.2. 導(dǎo)出box
10.3. 其它命令
11. Laravel Homestead
前言
大家對VMware
或者VirtualBox
一定不會陌生,虛擬化的好處自然深入人心,而現(xiàn)在我們可以通過Vagrant
搭建一套類似Laravel Homestead
完整開發(fā)環(huán)境,這樣極大的減少了架設(shè)開發(fā)環(huán)境的時間,同時還支持在Windows/Mac/Linux
不同平臺上分享定制包,統(tǒng)一團(tuán)隊之間的開發(fā)環(huán)境提高工作效率,而Docker
的出現(xiàn)也讓未來更值得期待。
用Vagrant為自己打造一個奇妙的跨平臺開發(fā)環(huán)境
更新歷史
擴展閱讀
Vagrant - https://www.vagrantup.com/
Laravel Homestead - http://laravel.com/docs/5.1/homestead
在windows下進(jìn)行l(wèi)inux開發(fā):利用Vagrant+virtualbox - http://blog.star7th.com/2015/06/1538.html
在 Mac/win7 下上使用 Vagrant 打造本地開發(fā)環(huán)境 - http://segmentfault.com/a/1190000002645737
環(huán)境準(zhǔn)備
- Git(非必需)
- PHP(非必需)
- Laravel(非必需)
- Composer(非必需)
- Vagrant
- VirtualBox
安裝git
1.下載GitHub for Windows
安裝php
建議大家盡量安裝當(dāng)前最新版本的 PHP
1.下載PHP
http://windows.php.net/download/
2.解壓目錄
我的路徑D:\php
3.添加環(huán)境變量
右鍵計算機->高級系統(tǒng)設(shè)置->環(huán)境變量->系統(tǒng)變量->PATH
C:\ProgramData\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\nodejs\;D:\php;C:\ProgramData\ComposerSetup\bin
4.設(shè)置php.ini
進(jìn)入 PHP 安裝目錄(例如 D:\php
)。找到 php.ini-development
文件并復(fù)制一份到當(dāng)前目錄,重命名為 php.ini
,修改以下配置
去掉extension=php_mbstring.dll
前面的分號(888 行左右)
去掉extension=php_openssl.dll
前面的分號(893 行左右)
去掉extension_dir = "ext"
前面的分號(736 行左右)
5.使環(huán)境變量生效
重啟explorer.exe
#p#
安裝Laravel
1.下載Laravel
http://www.golaravel.com/download/
2.解壓目錄
我的路徑D:\laravel-v5.1.4
3.啟動Laravel
- d:
- cd laravel-v5.1.4
- D:\laravel-v5.1.4>php artisan serve
- Laravel development server started on http://localhost:8000/
在瀏覽器中訪問http://localhost:8000/
artisan
的 serve
命令還支持兩個參數(shù):
host
設(shè)置主機地址
port
設(shè)置 web server 監(jiān)聽的端口號
例如:php artisan serve --port=8888
安裝Composer
1.下載Composer-Setup.exe
https://getcomposer.org/doc/00-intro.md#installation-windows
2.配置Composer
- Loading composer repositories with package information
- Installing dependencies (including require-dev)
- SSL certificate problem, verify that the CA cert is OK. Details:
- error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed”
如果安裝過程提示報錯為缺少CA證書,下載cacert.pem
到自定義路徑
http://curl.haxx.se/docs/caextract.html
然后修改php.ini文件(1983行左右)
openssl.cafile=D:\php\verify\cacert.pem
3.測試Composer
- composer -V
- Composer version 1.0-dev (d79427f1a7b15e8f4d46ce8124a4d0c58ba1479c) 2015-07-04 11:22:58
安裝Vagrant
1.下載Vagrant
https://www.vagrantup.com/downloads.html
2.離線下載虛擬鏡像
https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.0.0/centos-6.6-x86_64.box
上面給出的是centos-6.6鏡像下載鏈接,要下載其他鏡像請訪問官網(wǎng)
http://www.vagrantbox.es/
安裝VirtualBox
BIOS里面開啟CPU硬件虛擬化支持VT(Virtualization Technology)
1.下載VirtualBox
https://www.virtualbox.org/wiki/Downloads
2.導(dǎo)入鏡像
設(shè)置VirtualBox目錄并拷貝鏡像centos-6.6-x86_64.box
E:\VirtualBox\centos-6.6-x86_64.box
3.命令初始化Vagrant
- #切換VirtualBox目錄
- e:
- cd .\VirtualBox
- #輸入命令初始化
- E:\VirtualBox> vagrant init centos6.6
- A `Vagrantfile` has been placed in this directory. You are now
- ready to `vagrant up` your first virtual environment! Please read
- the comments in the Vagrantfile as well as documentation on
- `vagrantup.com` for more information on using Vagrant.
- #執(zhí)行添加命令
- E:\VirtualBox> vagrant box add centos6.6 centos-6.6-x86_64.box
- ==> box: Adding box 'centos6.6' (v0) for provider:
- box: Downloading: file://E:/VirtualBox/centos-6.6-x86_64.box
- box: Progress: 100% (Rate: 670M/s, Estimated time remaining: --:--:--)
- ==> box: Successfully added box 'centos6.6' (v0) for 'virtualbox'!
- #檢查是否導(dǎo)入成功
- E:\VirtualBox> vagrant box list
- centos6.6 (virtualbox, 0)
#p#
Vagrant配置
詳細(xì)配置文檔可以參考官方手冊 - https://docs.vagrantup.com/v2/
啟動Vagrant
通過Shell進(jìn)入目錄E:\VirtualBox
后執(zhí)行命令
- vagrant up
順利啟動的完整過程如下所示:
- E:\VirtualBox>vagrant up
- Bringing machine 'default' up with 'virtualbox' provider...
- ==> default: Importing base box 'centos6.6'...
- ==> default: Matching MAC address for NAT networking...
- ==> default: Setting the name of the VM: VirtualBox_default_1437213832296_68434
- ==> default: Clearing any previously set forwarded ports...
- ==> default: Clearing any previously set network interfaces...
- ==> default: Preparing network interfaces based on configuration...
- default: Adapter 1: nat
- ==> default: Forwarding ports...
- default: 22 => 2222 (adapter 1)
- ==> default: Booting VM...
- ==> default: Waiting for machine to boot. This may take a few minutes...
- default: SSH address: 127.0.0.1:2222
- default: SSH username: vagrant
- default: SSH auth method: private key
- default: Warning: Connection timeout. Retrying...
- default:
- default: Vagrant insecure key detected. Vagrant will automatically replace
- default: this with a newly generated keypair for better security.
- default:
- default: Inserting generated public key within guest...
- default: Removing insecure key from the guest if it's present...
- default: Key inserted! Disconnecting and reconnecting using new SSH key...
- ==> default: Machine booted and ready!
- ==> default: Checking for guest additions in VM...
- default: The guest additions on this VM do not match the installed version of
- default: VirtualBox! In most cases this is fine, but in rare cases it can
- default: prevent things such as shared folders from working properly. If you see
- default: shared folder errors, please make sure the guest additions within the
- default: virtual machine match the version of VirtualBox you have installed on
- default: your host and reload your VM.
- default:
- default: Guest Additions Version: 4.3.28
- default: VirtualBox Version: 5.0
- ==> default: Mounting shared folders...
- default: /vagrant => E:/VirtualBox
虛擬機啟動之后則可以通過 vagrant ssh 聯(lián)入虛擬機進(jìn)行進(jìn)一步的環(huán)境配置,或者軟件安裝相關(guān)的工作,在Windows系統(tǒng)下,并不能直接通過vagrant ssh
連到虛擬機,需要使用SecureCRT/Putty/Xshell
等第三方工具進(jìn)行連接。連接地址127.0.0.1
,端口2222
。登錄的帳號root
的密碼為vagrant
- E:\VirtualBox> vagrant up
- Bringing machine 'default' up with 'virtualbox' provider...
- ==> default: Clearing any previously set forwarded ports...
- ==> default: Clearing any previously set network interfaces...
- ==> default: Preparing network interfaces based on configuration...
- default: Adapter 1: nat
- default: Adapter 2: bridged
- ==> default: Forwarding ports...
- default: 80 => 8080 (adapter 1)
- default: 22 => 2222 (adapter 1)
- ==> default: Booting VM...
- ==> default: Waiting for machine to boot. This may take a few minutes...
- The guest machine entered an invalid state while waiting for it
- to boot. Valid states are 'starting, running'. The machine is in the
- 'poweroff' state. Please verify everything is configured
- properly and try again.
- If the provider you're using has a GUI that comes with it,
- it is often helpful to open that and watch the machine, since the
- GUI often has more helpful error messages than Vagrant can retrieve.
- For example, if you're using VirtualBox, run `vagrant up` while the
- VirtualBox GUI is open.
如果有報上述錯誤,并且運行Virtualbox去安裝系統(tǒng)時出錯:Failed to open a session for the virtual machine,Unable to load R3 module C:\Program Files\Oracle\VirtualBox/VBoxDD.DLL (VBoxDD): GetLastError=1790 (VERR_UNRESOLVED_ERROR).
,需要使用UniversalThemePatcher
還原未破解的themeservice.dll themeui.dll uxtheme.dll
文件
已經(jīng)打包好的下載鏈接 - http://pan.baidu.com/s/1c0HGj2g
- ==> default: Booting VM...
- ==> default: Waiting for machine to boot. This may take a few minutes...
- default: SSH address: 127.0.0.1:2222
- default: SSH username: vagrant
- default: SSH auth method: private key
- default: Warning: Connection timeout. Retrying...
- default: Warning: Connection timeout. Retrying...
- default: Warning: Connection timeout. Retrying...
如果報default: Warning: Connection timeout. Retrying...
,建議打編輯Vagrantfile
打開VirtualBox圖形化界面vb.gui = true
進(jìn)一步分析錯誤代碼和原因。
導(dǎo)出box
通過Shell進(jìn)入目錄E:\VirtualBox
后執(zhí)行命令
- vagrant package
- vagrant package --output NAME --vagrantfile FILE
- #可選參數(shù):
- --output NAME : (可選)設(shè)置通過NAME來指定輸出的文件名
- --vagrantfile FILE:(可選)可以將Vagrantfile直接封進(jìn)box中
完成后會在當(dāng)前目錄就會生成package.box,可以在家或者團(tuán)隊成員共享開發(fā)環(huán)境保持一致性
其它命令
vagrant up (啟動虛擬機)
vagrant halt (關(guān)閉虛擬機——對應(yīng)就是關(guān)機)
vagrant suspend (暫停虛擬機——只是暫停,虛擬機內(nèi)存等信息將以狀態(tài)文件的方式保存在本地,可以執(zhí)行恢復(fù)操作后繼續(xù)使用)
vagrant resume (恢復(fù)虛擬機 —— 與前面的暫停相對應(yīng))
vagrant box remove centos6.6 (移除box,其中centos6.6是box名)
vagrant destroy (刪除虛擬機,刪除后在當(dāng)前虛擬機所做進(jìn)行的除開Vagrantfile中的配置都不會保留)
#p#
Laravel Homestead
細(xì)節(jié)部分可參考官方文檔 - http://laravel.com/docs/5.1/homestead
1.下載安裝包
- vagrant box add laravel/homestead
- E:\Homestead>vagrant box add laravel/homestead
- ==> box: Loading metadata for box 'laravel/homestead'
- box: URL: https://atlas.hashicorp.com/laravel/homestead
- This box can work with multiple providers! The providers that it
- can work with are listed below. Please review the list and choose
- the provider you will be working with.
- 1) virtualbox
- 2) vmware_desktop
- Enter your choice: 1
- ==> box: Adding box 'laravel/homestead' (v0.2.7) for provider: virtualbox
- box: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/0.2.7/providers/virtualbox.box
- box: Progress: 0% (Rate: 9d/s, Estimated time remaining: 0:05:30)11))
由于國內(nèi)網(wǎng)絡(luò)環(huán)境問題建議離線下載后手動導(dǎo)入
- #輸入命令初始化
- E:\Homestead>vagrant init laravel
- A `Vagrantfile` has been placed in this directory. You are now
- ready to `vagrant up` your first virtual environment! Please read
- the comments in the Vagrantfile as well as documentation on
- `vagrantup.com` for more information on using Vagrant.
- #執(zhí)行添加命令
- E:\Homestead>vagrant box add laravel laravel.box
- ==> box: Box file was not detected as metadata. Adding it directly...
- ==> box: Adding box 'laravel' (v0) for provider:
- box: Unpacking necessary files from: file://E:/Homestead/laravel.box
- box: Progress: 100% (Rate: 141M/s, Estimated time remaining: --:--:--)
- ==> box: Successfully added box 'laravel' (v0) for 'virtualbox'!
- #檢查是否導(dǎo)入成功
- E:\Homestead>vagrant box list
- centos6.6 (virtualbox, 0)
- laravel (virtualbox, 0)
- #啟動Lavarel Homestead
- E:\Homestead>vagrant up
- Bringing machine 'default' up with 'virtualbox' provider...
- ==> default: Importing base box 'laravel'...
- ==> default: Matching MAC address for NAT networking...
- ==> default: Setting the name of the VM: Homestead_default_1437217549272_56101
- ==> default: Clearing any previously set network interfaces...
- ==> default: Preparing network interfaces based on configuration...
- default: Adapter 1: nat
- ==> default: Forwarding ports...
- default: 22 => 2222 (adapter 1)
- ==> default: Booting VM...
- ==> default: Waiting for machine to boot. This may take a few minutes...
- default: SSH address: 127.0.0.1:2222
- default: SSH username: vagrant
- default: SSH auth method: private key
- default: Warning: Connection timeout. Retrying...
- default:
- default: Vagrant insecure key detected. Vagrant will automatically replace
- default: this with a newly generated keypair for better security.
- default:
- default: Inserting generated public key within guest...
- default: Removing insecure key from the guest if it's present...
- default: Key inserted! Disconnecting and reconnecting using new SSH key...
- ==> default: Machine booted and ready!
- ==> default: Checking for guest additions in VM...
- default: The guest additions on this VM do not match the installed version of
- default: VirtualBox! In most cases this is fine, but in rare cases it can
- default: prevent things such as shared folders from working properly. If you see
- default: shared folder errors, please make sure the guest additions within the
- default: virtual machine match the version of VirtualBox you have installed on
- default: your host and reload your VM.
- default:
- default: Guest Additions Version: 4.3.14
- default: VirtualBox Version: 5.0
- ==> default: Mounting shared folders...
- default: /vagrant => E:/Homestead
登錄帳戶vagrant/vagrant
,開始全新的Laravel Homestead
體驗之旅吧!