利用VirtualBox、Vagrant、Homestead Box、Homestead搭建虛擬機開發環境。

接下來我們按照以下順序步驟

  1. 安裝 VirtualBox
  2. 安裝 Vagrant
  3. 導入 Homestead Box 虛擬機盒子
  4. 安裝 Git
  5. 安裝 Homestead 管理腳本
  6. 配置 Homestead.yaml 文件
  7. 啓動 Homestead 虛擬機

一、安裝 VirtualBox
VirtualBox 是 Oracle 公司的開源虛擬機軟件。VirtualBox 號稱是最強的免費虛擬機軟件,它不僅功能齊全,而且性能也很優異!VirtualBox 支持大部分流行的系統,如:MacOs, Windows, Linux 等。
官網地址:https://www.virtualbox.org/

這個安裝完基本不需要管,
不過這裏有小坑,

  1. window 要boot 中需要開啓虛擬機,要不然啓動虛擬機會顯示連接超時
  2. MacOs中 安裝時要把設置中安全性中的文件保險箱停掉,因爲安裝過程中MacOs不允許修改配置文件,要不然啓動虛擬機時會顯示配置文件有問題

二、安裝 Vagrant

Vagrant 是用來管理虛擬機的工具,支持當前主流的虛擬機系統如 VirtualBox、VMware、AWS 等。Vagrant 的主要作用是提供一個可配置、可移植和複用的軟件環境。Vagrant 讓你通過編寫一個 Vagrantfile 文件來控制虛擬機的啓動、虛擬機網絡環境的配置、虛擬機與主機間的文件共享,以及啓動後自動執行一些配置腳本,如自動執行一個 Shell Script 來安裝一些必備的開發工具,如安裝配置 MySQL、PHP,甚至是自動配置 Nginx 站點。這意味着,在一個多人開發的項目中,你只需要同步 Vagrantfile 文件,就可以保證參與項目的每個人各自的機器上擁有一致的開發環境。

官網:https://www.vagrantup.com/

三、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

接下來,我們會講解:

  1. 下載和導入 Homestead Box 虛擬機盒子;
  2. 安裝 Git ,爲下載 Homestead 管理腳本做準備;
  3. 使用 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裏的配置大致可以分爲以下幾種:
  1. 虛擬機設置;
  2. SSH 祕鑰登錄配置;
  3. 共享文件夾配置;
  4. 站點配置;
  5. 數據庫配置;
  6. 自定義變量;

接下來我們逐個講解

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、通用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章