接下來我們按照以下順序步驟
- 安裝 VirtualBox
- 安裝 Vagrant
- 導入 Homestead Box 虛擬機盒子
- 安裝 Git
- 安裝 Homestead 管理腳本
- 配置 Homestead.yaml 文件
- 啓動 Homestead 虛擬機
一、安裝 VirtualBox
VirtualBox 是 Oracle 公司的開源虛擬機軟件。VirtualBox 號稱是最強的免費虛擬機軟件,它不僅功能齊全,而且性能也很優異!VirtualBox 支持大部分流行的系統,如:MacOs, Windows, Linux 等。
官網地址:https://www.virtualbox.org/
這個安裝完基本不需要管,
不過這裏有小坑,
- window 要boot 中需要開啓虛擬機,要不然啓動虛擬機會顯示連接超時
- MacOs中 安裝時要把設置中安全性中的文件保險箱停掉,因爲安裝過程中MacOs不允許修改配置文件,要不然啓動虛擬機時會顯示配置文件有問題
二、安裝 Vagrant
Vagrant 是用來管理虛擬機的工具,支持當前主流的虛擬機系統如 VirtualBox、VMware、AWS 等。Vagrant 的主要作用是提供一個可配置、可移植和複用的軟件環境。Vagrant 讓你通過編寫一個 Vagrantfile 文件來控制虛擬機的啓動、虛擬機網絡環境的配置、虛擬機與主機間的文件共享,以及啓動後自動執行一些配置腳本,如自動執行一個 Shell Script 來安裝一些必備的開發工具,如安裝配置 MySQL、PHP,甚至是自動配置 Nginx 站點。這意味着,在一個多人開發的項目中,你只需要同步 Vagrantfile 文件,就可以保證參與項目的每個人各自的機器上擁有一致的開發環境。
三、Homestead Box
Homestead 利用 Vagrantfile 提供的便利,定製了一整套的可配置、可移植和複用的 Laravel 開發環境。Homestead 虛擬機裏面包含了 Nginx Web 服務器、PHP 7、MySQL、Postgres、Redis、Memcached、Node,以及所有你在使用 Laravel 開發時需要用到的各種軟件。
Homestead 包含了兩個東西:
- Homestead 管理腳本;
- Homestead Box 虛擬機盒子。
1. Homestead 管理腳本
Homestead 腳本使用 Ruby 和 Shell 腳本編寫而成。原理是對 Vagrantfile 文件做定製。將從 ~/Homestead/Homestead.yaml
讀取的配置信息,在 provision 時,解析爲 Vagrant 命令並進行對虛擬機的配置。Homestead 腳本的作用在於,提供了極其簡單易用的接口,使我們只需要通過傻瓜化配置,即可完成複雜的任務。以下是幾個常用的任務:
- IP 配置,端口映射
- Nginx Site 創建
- 數據庫創建
- 主機文件夾掛載到虛擬機等任務
2. Homestead Box 虛擬機盒子
homestead.box 虛擬機盒子是提前打包好的 Vagrant Box 虛擬機盒子,裏面預裝了 Nginx Web 服務器、PHP 7、MySQL、Postgres、Redis、Memcached、Node,以及所有你在使用 Laravel 開發時所需要用到的各種軟件。
安裝和使用 Homestead
接下來,我們會講解:
- 下載和導入 Homestead Box 虛擬機盒子;
- 安裝 Git ,爲下載 Homestead 管理腳本做準備;
- 使用 Git 下載 Homestead 管理腳本;
1.下載和導入 Homestead Box
接下來讓我們開始進行 Homestead 的安裝,首先我們需要下載 Homestead 虛擬機盒子,建議大家使用迅雷離線下載或者其他離線下載方式下載此盒子。
接下來讓我們開始進行 Homestead 的安裝,首先我們需要下載 Homestead 虛擬機盒子虛擬機盒子,建議大家使用迅雷離線下載或者其他離線下載方式下載此盒子。
下載後的文件爲 lc-homestead-6.1.1-2018090400.zip
,請對其進行 zip 解壓操作,解壓成功後可以看到目錄 lc-homestead-6.1.1-2018090400
,此目錄下包含兩個文件:
- virtualbox.box(教程定製化過的 Homestead 盒子)
- metadata.json(盒子的導入配置文件)
在解壓目錄中 lc-homestead-6.1.1-2018090400
運行以下命令導入 Box:
> vagrant box add metadata.json
成功會顯示 Successfully added box
注:導入成功後,lc-homestead-6.1.1-2018090400 文件夾可任意刪除。
2.安裝Git
3. 下載 Homestead 管理腳本
cd ~
git clone https://git.coding.net/summerblue/homestead.git Homestead
注:我們把 Homestead 放在 ~/Homestead 路徑下,爲方便後面的講解,請保持一致
cd ~/Homestead
git checkout v7.8.0
接下來我們需要初始化 Homestead:
bash init.sh
運行以上命令後,會在 ~/Homestead 目錄下生成以下三個文件:
- Homestead.yaml - 主要配置信息文件,我們可以在此文件中配置 Homestead 的站點和數據庫等信息;
- after.sh - 每一次 Homestead 盒子重置後(provision)會調用的 shell 腳本文件;
- aliases - 每一次 Homestead 盒子重置後(provision),會被替換至虛擬機的
~/.bash_aliases
文件中,aliases
裏可以放一些快捷命令的定義。
接下來我們將會對 Homestead.yaml
文件的各項配置信息進行詳細講解。
Homestead.yaml 配置文件
首先打開文件。通過運行下面命令快速打開 Homestead.yaml 文件
open ~/Homestead/Homestead.yam
Homestead.yaml
裏的配置大致可以分爲以下幾種:
- 虛擬機設置;
- SSH 祕鑰登錄配置;
- 共享文件夾配置;
- 站點配置;
- 數據庫配置;
- 自定義變量;
接下來我們逐個講解
1.虛擬機
Homestead 支持我們對虛擬機的 IP,內存,CPU,虛擬機的默認提供者進行配置。這裏我們基本不需要做任何配置,因此可以跳過。
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
2. SSH 祕鑰登錄配置
authorize
選項是指派登錄虛擬機授權連接的公鑰文件,此文件填寫的是主機上的公鑰文件地址,虛擬機初始化時,此文件裏的內容會被複制存儲到虛擬機的 /home/vagrant/.ssh/authorized_keys
文件中,從而實現 SSH 免密碼登錄。在這裏我們默認填寫即可。
authorize: ~/.ssh/id_rsa.pub
keys
是數組選項,填寫的是本機的 SSH 私鑰文件地址。虛擬機初始化時,會將此處填寫的所有 SSH 私鑰文件複製到虛擬機的 /home/vagrant/.ssh/ 文件夾中,從而使虛擬機能共享主機上的 SSH 私鑰文件,使虛擬機具備等同於主機的身份認證。此功能爲 SSH 授權提供了便利,例如在後面章節中,我們只需要在 GitHub 上配置一個 SSH 公鑰,即可實現 GitHub 對虛擬機和主機共同認證。
此處我們將公鑰和私鑰一起同步到虛擬機中:
keys:
- ~/.ssh/id_rsa
- ~/.ssh/id_rsa.pub
以下命令可以查看是否生成過 ssh key
ls -al ~/.ssh
如果有ssh的話可以跳過這裏
否則使用以下方法來生成 SSH Key,請將 [email protected] 替換爲你的郵箱:
ssh-keygen -t rsa -C "[email protected]"
一直回車就好
然後在輸入查看一下
ls -al ~/.ssh
可以看到以下兩個文件:
id_rsa
—— SSH 祕鑰的 私鑰 (Private Key)id_rsa.pub
—— SSH 祕鑰的 公鑰 (Public Key)
3. 共享文件夾配置
我們可以通過 folders
來指明本機要映射到 Homestead 虛擬機上的文件夾。
map
對應的是我們本機的文件夾to
對應的是 Homestead 上的文件夾。
爲了配置順利,採用統一的配置
folders:
- map: ~/Code
to: /home/vagrant/Code
默認 Homestead
會將我們本機的 ~/Code
文件夾映射到 /home/vagrant/Code
文件夾上。現在我們本機還沒有 ~/Code 文件夾
,讓我們來創建一個:
cd ~
mkdir Code
在後面的章節中,我們將會在該文件夾下放置我們所有的 Laravel 項目,Homestead 會把該文件夾下的項目自動映射到虛擬機的 /home/vagrant/Code
文件夾上。
4. 站點配置
站點配置允許你在主機裏,通過域名來訪問虛擬機裏的 Laravel 應用。如下面 sites
配置所示,將 homestead.test
映射到一個 Laravel
項目的 public
目錄上。這一行配置,會命令 Homestead
爲我們新建一個 Nginx
站點,並且把 Web Root
配置到指定目錄下。Laravel 應用的 Nginx 站點 Web Root 配置,默認就是在根目錄下的 public
目錄。
sites:
- map: homestead.test
to: /home/vagrant/Code/Laravel/public
目前 Laravel 項目並不存在
。這裏先統一配置爲以上,請不用着急,在後續的章節中,我們會創建該 Laravel 項目。
另外,主機裏直接訪問虛擬機站點,必須通過綁定 hosts 來實現。
接下來我們利用 hosts
文件綁定 homestead.test
到虛擬機 IP 192.168.10.10
上。hosts 文件的完整路徑爲 /etc/hosts,可使用下面命令打開:
如何修改hosts文件
- window:中,到
C:\Windows\System32\drivers\etc
打開 - MacOs:
修改hosts 會修改失敗,可以用 sudo vim hosts
5. 數據庫配置
我們可以爲 Homestead 指定數據庫名稱,這裏使用默認設置即可。
databases:
- homestead
6. 自定義變量
最後,如果你需要自定義一些在虛擬機上可以使用的自定義變量,則可以在 variables 中進行定義。
Homestead 自定義變量在本書中並未使用,知悉有此功能即可。
variables:
- key: APP_ENV
value: local
運行 Vagrant
完成了 Homestead
的配置,接下來我們要開始啓動虛擬機了。
在命令中輸入 vagrant
,能看到 Vagrant
爲我們提供了一些便利的命令行,下面簡單介紹一下 Vagrant 常用的一些命令行的使用:
命令行 | 說明 |
---|---|
vagrant init | 初始化 vagrant |
vagrant up | 啓動 vagrant |
vagrant halt | 關閉 vagrant |
vagrant ssh | 通過 SSH 登錄 vagrant(需要先啓動 vagrant up) |
vagrant provision | 如果修改了Homestead.yaml 文件,就重新運行這個 |
vagrant destroy | 刪除 vagrant |
讓我們開始啓動 Homestead:
cd ~/Homestead && vagrant up
第一次啓動時,Vagrant 會做以下這幾件事情:
- 以導入的 Homestead 虛擬機盒子爲模板,新建一臺虛擬機;
- 並按照
Homestead.yaml
裏的配置信息,對這臺新建的虛擬機進行配置; - 配置完成後啓動虛擬機。
成功啓動後,還是在 ~/Homestead
目錄中,通過以下命令來 SSH 登錄 Homestead 虛擬機中:
vagrant ssh
運行成功後,輸入我們配置在 sites
中的 homestead.test
就能訪問了
此時如果沒有項目的話可能會顯示找不到頁面;
也可以在Code/Laravel/public 下創建一個index.html
在瀏覽器輸入 homestead.test/index.html 嘗試訪問
在虛擬機界面下可以輸入退出虛擬機:
exit && vagrant halt
本文參考:https://learnku.com/docs/laravel-development-environment/5.8/development-environment-macos/4372
Window、MacOs、通用