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

    Ⅱ 本地文件安裝 先下載 離線 homestead.box ,然后執行

      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學習,大家可以去看看喲

    謝謝觀賞~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM