Laravel 致力于讓整個 PHP 開發(fā)體驗變得愉快, 包括你的本地開發(fā)環(huán)境。 Vagrant 提供了一種簡單,優(yōu)雅的方式來管理和配置虛擬機。 Laravel Homestead 是一個官方預(yù)封裝的 Vagrant box,它為你提供了一個完美的開發(fā)環(huán)境,而無需在本地機器安裝 PHP 、Web 服務(wù)器和其他服務(wù)器軟件。不用擔(dān)心會搞亂你的操作系統(tǒng)!Vagrant boxes 是一次性的。如果出現(xiàn)問題,你可以在幾分鐘內(nèi)銷毀并創(chuàng)建 Box! Homestead 可以運行在任何 Windows,Mac,或 Linux 系統(tǒng),它包括了 Nginx web 服務(wù)器, PHP 7.2,PHP 7.1,PHP 7.0,PHP 5.6, MySQL,PostgreSQL,Redis,Memcached, Node,以及開發(fā) Laravel 應(yīng)用程序所需要的東西。
以下代碼都是在windows 使用?git for windows?命令行工具操作的
#VirtualBox
https://www.virtualbox.org/ VirtualBox 是 Oracle 公司的開源虛擬機軟件。VirtualBox 號稱是最強的免費虛擬機軟件,它不僅功能齊全,而且性能也很優(yōu)異!VirtualBox 支持大部分流行的系統(tǒng),如:Mac, Windows, Linux 等。
#Vagrant
Vagrant by HashiCorp?Vagrant 是用來管理虛擬機的工具,支持當(dāng)前主流的虛擬機系統(tǒng)如 VirtualBox、VMware、AWS 等。Vagrant 的主要作用是提供一個可配置、可移植和復(fù)用的軟件環(huán)境。Vagrant 讓你通過編寫一個 Vagrantfile 文件來控制虛擬機的啟動、虛擬機網(wǎng)絡(luò)環(huán)境的配置、虛擬機與主機間的文件共享,以及啟動后自動執(zhí)行一些配置腳本,如自動執(zhí)行一個 Shell Script 來安裝一些必備的開發(fā)工具,如安裝配置MySQL、PHP,甚至是自動配置 Nginx 站點。這意味著,在一個多人開發(fā)的項目中,你只需要同步 Vagrantfile 文件,就可以保證參與項目的每個人各自的機器上擁有一致的開發(fā)環(huán)境。 可以在下面網(wǎng)站上搜索需要的vagrant box https://app.vagrantup.com/boxes/search
#卸載程序和依賴
在下載的安裝包里有一個刪除工具,可以直播刪除 Vagrant軟件。

也可以使用下面命令刪除
# 刪除軟件
rm -rf /opt/vagrant
rm -f /usr/local/bin/vagrant
sudo pkgutil --forget com.vagrant.vagrant
#刪除用戶數(shù)據(jù)
rm -rf ~/.vagrant
rm -rf ~/.vagrant.d
#Homestead box
Homestead是一個官方預(yù)封裝的 Vagrant box,它為你提供了一個完美的開發(fā)環(huán)境,而無需在本地機器安裝 PHP 、Web 服務(wù)器和其他服務(wù)器軟件。不用擔(dān)心會搞亂你的操作系統(tǒng)!Vagrant boxes 是一次性的。如果出現(xiàn)問題,你可以在幾分鐘內(nèi)銷毀并創(chuàng)建 Box!
內(nèi)置軟件:Ubuntu 16.04、Git、PHP 7.2、PHP 7.1、Nginx、Apache (Optional)、MySQL ……
在線安裝 Homestead Vagrant Box,這樣安裝下載會非常慢,可以使用第二種本地文件安裝方式
vagrant box add laravel/homestead
本地文件安裝 先下載離線?homestead.box?https://pan.baidu.com/s/1-obdVwlryRdtVV-8-iD56A 然后執(zhí)行
vagrant box add laravel/homestead d:/code/homestead.box
安裝的box 鏡像儲存的位置:以我電腦為例在?~/.vagrant.d/boxes
#安裝 Homestead 管理腳本
#clone管理腳本
git clone https://github.com/laravel/homestead.git ~/Homestead
cd ~/Homestead
#創(chuàng)建 Homestead.yaml 配置文件
./init.bat
如果是本地安裝的 homestead.box 版本為0,所以需要修改下面步驟生成的配置文件 /Users/xj/Homestead/scripts/homestead.rb 以下內(nèi)容
config.vm.box_version = settings["version"] ||= ">= 0"
#SSH 秘鑰登錄
用于實現(xiàn) SSH 免密碼登錄 修改 Homestead.yaml 文件以下內(nèi)容:
keys:
? ? - ~/.ssh/id_rsa
? ? - ~/.ssh/id_rsa.pub
生成 key
ssh-keygen -t rsa -C "2300071698@qq.com"
#后面一真按enter鍵,設(shè)置密碼
#配置共享文件夾
Homestead.yaml 文件的 folders 屬性里列出所有與 Homestead 環(huán)境共享的文件夾。這些文件夾中的文件若有變更,它們會保持本地機器與 Homestead 環(huán)境之間同步。你可以根據(jù)需要配置多個共享文件夾:
folders:
? ? - map: d:/code
? ? ? to: /home/vagrant/Code
# map 對應(yīng)的是我們本機的文件夾
* to 對應(yīng)的是 Homestead 上的文件夾
#顯示文件列表
在開發(fā)環(huán)境下我們希望在瀏覽器中顯示文件列表
vim /etc/nginx/nginx.conf
添加
http {
...
autoindex on; # 顯示文件列表
...
}
#vagrant命令
#啟動 如果加上 --provision 選項那么添加的新站點會發(fā)布到虛擬機上。
cd ~/Homestead && vagrant up
#關(guān)閉
vagrant halt
#通過 SSH 登錄 vagrant(需要先啟動 vagrant)
vagrant ssh
#查看目前安裝的box列表
vagrant box list
#刪除box鏡像
vagrant box remove laravel/homestead
#刪除指定版本
vagrant box remove laravel/homestead --box-version 6.4.0
#查看當(dāng)前 Homestead 虛擬機的狀態(tài)。
vagrant status
#通過 SSH 連接
這樣就可以登錄的 homestead 虛擬主機了,此地可以查看上面定義的本地目錄與虛擬機目錄同步的情況
vagrant ssh
#數(shù)據(jù)庫
要從主機的數(shù)據(jù)庫客戶端連接到 MySQL,就連接到 127.0.0.1和端口 33060 (MySQL) 。賬號密碼分別是 homestead/secret。
PHP程序連接(虛擬機中連接)端口為 3306
#全局命令
Git for Windows環(huán)境中使用
如果我們想在任何目錄都可以執(zhí)行 vagrant 命令,需要進行以下設(shè)置 修改 ~/.bash_profile 文件內(nèi)容,這種設(shè)置只在?git for windows?軟件中使用
function homestead() {
? ? ( cd ~/Homestead && vagrant $* )
}
這樣我們就可以使用 homestead up 等方式執(zhí)行了。
設(shè)置Windows全局命令
@echo off
set cwd=%cd%
set homesteadVagrant=C:\Users\xj\Homestead
cd /d %homesteadVagrant% && vagrant %*
cd /d %cwd%
set cwd=
set homesteadVagrant=
你需要將腳本中實例路徑 C:\Homestead 調(diào)整為 Homestead 實際安裝路徑。創(chuàng)建文件之后,添加文件路徑到 PATH,這樣你就可以在系統(tǒng)的任意位置運行 homestead up 或 homestead ssh 命令了。
如果想讓計算機啟動時執(zhí)行 homestead ,在開始菜單->所有程序->啟動?文件夾中設(shè)置 homestead.bat內(nèi)容如下。
homestead up
#開機自啟
在?開始菜單>啟動?文件夾中創(chuàng)建?homestead.bat?文件內(nèi)容如下
homestead up
要在360或騰訊電腦管家中的啟動項中不要禁用。
#響應(yīng)緩慢
解決WINDOS系統(tǒng)下Homestead運行緩慢的問題
一定要先備份
首先,命令行進入 Homestead 啟動 vagrant
> cd ~/Homestead && vagrant up
然后運行安裝命令(如果下載失敗可能被墻了)
$ vagrant plugin install vagrant-winnfsd
修改文件1:homestead/scripts/homestead.rb
查找此段代碼(可能略有不同),替換為以下內(nèi)容
if settings.include? 'folders'
? settings["folders"].sort! { |a,b| a["map"].length <=> b["map"].length }
? settings["folders"].each do |folder|
? ? config.vm.synced_folder folder["map"], folder["to"],
? ? id: folder["map"],
? ? :nfs => true,
? ? :mount_options => ['nolock,vers=3,udp,noatime']
? end
end
文件2:Homestead.yaml
folders:
? ? - map: ~/Code
? ? ? to: /home/vagrant/Code
? ? ? type: nfs
重啟 Homestead 使配置文件生效,大功告成。
#配置域名
修改?c:/windows/System32/drivers/etc/hosts?文件,因為?hosts?文件不能直接修改,需要先移動到桌面或其他文件夾,然后添加如下內(nèi)容,添加好后再將文件移動回來。
192.168.10.10? hdcms.hd
上面定義了一個域名 hdcms.hd 指向我們的homestead服務(wù)器,在homestead.yaml文件內(nèi)定義域名解析配置:
sites:
? ? - map: hdcms.hd
? ? ? to: /home/vagrant/code/hdcms
現(xiàn)在當(dāng)我們訪問 hdcms.hd 時會訪問到 homestead服務(wù)器下的?/home/vagrant/code/hdcms?目錄
#Win10安裝錯誤
執(zhí)行?cd ~/Homestead && vagrant up?開啟虛擬機出現(xiàn)以下錯誤
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period.
If you look above, you should be able to see the error(s) that
Vagrant had when attempting to connect to the machine. These errors
are usually good hints as to what may be wrong.
...
進入你的BIOS,然后將virtualization(CPU虛擬化)設(shè)置為enable即可
BIOS界面:Configuratio > Intel Virtual Technology > Enabled
