1. 程式人生 > >Laravel系列之環境搭建 — VirtualBox+Vagrant+Homestead

Laravel系列之環境搭建 — VirtualBox+Vagrant+Homestead

一、為啥需要搭建環境

  為了解決環境不統一問題,所以要搭建這麼個玩意兒

二、步驟

   Laravel對環境有所要求(不使用Homestead情況下),具體參考官網

   使用Homestead步驟

    1. Homestead、VirtualBox、Vagrant

        摘要:

          Laravel 致力於讓整個 PHP 開發體驗變得愉快, 包括你的本地開發環境。 Vagrant 提供了一種簡單,優雅的方式來管理和配置虛擬機器。 Laravel Homestead 是一個官方預封裝的 Vagrant box,它為你提供了一個完美的開發環境,而無需在本地機器安裝 PHP 、Web 伺服器和其他伺服器軟體。不用擔心會搞亂你的作業系統!Vagrant boxes 是一次性的。如果出現問題,你可以在幾分鐘內銷燬並建立 Box! Homestead 可以執行在任何 Windows,Mac,或 Linux 系統,它包括了 Nginx web 伺服器, PHP 7.2,PHP 7.1,PHP 7.0,PHP 5.6, MySQL,PostgreSQL,Redis,Memcached, Node,以及開發 Laravel 應用程式所需要的東西。——摘自後盾人向軍大叔(網站升級中,後期補連結)

      1. 1 VirtualBox

         VirtualBox 是 Oracle 公司的開源虛擬機器軟體。VirtualBox 號稱是最強的免費虛擬機器軟體,它不僅功能齊全,而且效能也很優異!VirtualBox 支援大部分流行的系統,如:Mac, Windows, Linux 等。

      1.2 Vagrant

        Vagrant 是用來管理虛擬機器的工具,支援當前主流的虛擬機器系統如 VirtualBox、VMware、AWS 等。Vagrant 的主要作用是提供一個可配置、可移植和複用的軟體環境。Vagrant 讓你通過編寫一個 Vagrantfile 檔案來控制虛擬機器的啟動、虛擬機器網路環境的配置、虛擬機器與主機間的檔案共享,以及啟動後自動執行一些配置指令碼,如自動執行一個 Shell Script 來安裝一些必備的開發工具,如安裝配置MySQL、PHP,甚至是自動配置 Nginx 站點。這意味著,在一個多人開發的專案中,你只需要同步 Vagrantfile 檔案,就可以保證參與專案的每個人各自的機器上擁有一致的開發環境。 可以在下面網站上搜索需要的vagrant box 

https://app.vagrantup.com/boxes/search

      1.3 Homestead box

        Homestead是一個官方預封裝的 Vagrant box,它為你提供了一個完美的開發環境,而無需在本地機器安裝 PHP 、Web 伺服器和其他伺服器軟體。不用擔心會搞亂你的作業系統!Vagrant boxes 是一次性的。如果出現問題,你可以在幾分鐘內銷燬並建立 Box!內建軟體:Ubuntu 16.04、Git、PHP 7.2、PHP 7.1、Nginx、Apache (Optional)、MySQL ……

      1.4 聯絡

        白話理解:

          1. vagrant把帶有各種各樣內建軟體的Laravel/Homestead box(還有其他的Homestead box)打包成一個資料夾成為了一個映象box來進行管理

          2. 再把這個映象box安裝到VirtualBox這個虛擬主機當中,但因為它有可能有很多(vagrant box list來檢視),所以需要對其中的具體的某一個進行標識,所以這就需要進行安裝Homestead管理指令碼,下載好之後呢,進入Homestead資料夾中,裡面的Vagrantfile配置項就是決定著你使用的那個homestead box,但是開發作者呢,將是將這個檔案引用另外一個檔案來進行管理的,所以我們需要進行一步操作(看下面)

      1.5  安裝

        Ⅰ 線上安裝 Homestead Vagrant Box,這樣安裝下載會非常慢(我最快網速15M/S反正是中斷啊),可以使用第二種本地檔案安裝方式

vagrant box add laravel/homestead

vagrant box add laravel/homestead d:/code/homestead.box

          解釋:

            依次執行箭頭所指:

              

              如果這個盒子不想用,可以進行刪除(vagrant box remove laravel/homestead) 其他的homestead box 只需要改名字就好啦~

        III 安裝Homestead管理指令碼

 1 # clone管理指令碼
 2 # 注意 切換到穩定版本,不是master喲(目前是7.18.0)
 3 git clone https://github.com/laravel/homestead.git ~/Homestead
 4 
 5 # 進入家目錄
 6 cd Homestead/
 7 
 8 # 因為master不穩定所以切到穩定tag 
 9 git checkout v7.18.0 
10 
11 # 建立 Homestead.yaml 配置檔案(也就是Vagrantfile引用的檔案),所以修改這個檔案即可
12 ./init.bat
13 
14 # 如果是本地安裝的 homestead.box 則它的版本為0,所以需要修改下面步驟生成的配置檔案 ~Homestead/scripts/homestead.rb 以下內容,不然的話啟動homestead的時候會進行更新操作
15 config.vm.box_version = settings["version"] ||= ">= 0"

        Ⅳ SSH祕鑰登陸(把映象box安裝到VirtualBox後,難免要登陸到作業系統當中,所以需要這一步)

第一步:修改 Homestead.yaml 檔案
keys:
    - ~/.ssh/id_rsa
    - ~/.ssh/id_rsa.pub

        注意:進入cd .ssh/後這個資料夾中沒有id_rsa(私鑰) id_rsa.pub(公鑰)這兩個檔案要進行下一步操作

          (第二步)執行 ssh-keygen -t rsa -C "XXX@qq.com"(替換自己的郵箱),然後一路回車即可(中間有步驟讓設定密碼,因為是本地開發沒必要設定,所以一路回車)

       V  資料夾同步配置(我們不可能每次需要進入虛擬機器來進行程式碼的書寫,所以需要將本機和虛擬機器進行連線來進行程式碼書寫)

1 # map: 本機資料夾路徑
2 # to: 推送到的虛擬主機路徑
3 # 這個過程是雙向的
4 # ~代表家目錄(我的電腦是c:/Users/Dumpling)
5 folders:
6     - map: ~/code
7       to: /home/vagrant/code

      VI vagrant命令(此時需要進入Homestead/資料夾)並測試檔案同步

        啟動虛擬機器 —— vagrant up(因為在Homestead.yaml檔案中的provider: virtualbox所以會安裝虛擬機器會安裝到這個裡面)

 1 #啟動 如果加上 --provision 選項那麼新增的新站點會發布到虛擬機器上。
 2 cd ~/Homestead && vagrant up
 3 
 4 #關閉
 5 vagrant halt
 6 
 7 #通過 SSH 登入 vagrant(需要先啟動 vagrant)
 8 vagrant ssh
 9 
10 #檢視目前安裝的box列表
11 vagrant box list
12 
13 #刪除box映象
14 vagrant box remove laravel/homestead
15 
16 #檢視當前 Homestead 虛擬機器的狀態。
17 vagrant status

        進入虛擬機器 —— vagrant ssh(介面如下)

          

        測試檔案同步

          此時虛擬機器的code目錄是空的,那麼進入到家目錄的code中建立一個檔案看虛擬機器中是否同時生成一個檔案

           

          本機建立後,檢視虛擬機器情況如下

          

          同步成功

      VII 使用域名訪問到homestead虛擬主機

        控制域名的地方在 Homestead.yaml檔案中

1 # map:域名
2 # to:域名指向的目錄是虛擬機器中的這個位置
3 sites:
4     - map: homestead.test
5       to: /home/vagrant/code/public

        記得修改本機hosts檔案喲(請按照自己的本本自行百度)

      Ⅷ homestead連結資料庫

        就只有埠不一樣而已~

        要從主機的資料庫客戶端連線到 MySQL,就連線到 127.0.0.1和埠 33060 (MySQL) 。賬號密碼分別是 homestead/secret。

        PHP程式碼連線(虛擬機器中連線)埠為 3306

        

      Ⅸ 全域性命令

        Mac/Linux:

          如果iTems沒有使用風格包zshrc的話,就在家目錄下建立bash_profile檔案,如有有的話修改修改zshrc檔案

# 其實就是建立一個函式把進入Homestead/資料夾的操作,以及vagrant命令進行了結合
# 函式名可以修改為自己的,我這裡是為了方便記憶和區分
function homestead(){
    ( cd ~/Homestead && vagrant $* )
}

        Windows:同上(我反正按照中文手冊的操作是不行的~)

     至此呢,有關於homestead的配置就完成啦~ 如果有任何不足,請予以指出。

    最後呢 感謝一下後盾網~ 賊拉好的PHP學習,大家可以去看看喲

    謝謝觀賞~