1. 程式人生 > >Windows 7/8/10 系統下Laravel框架的開發環境安裝及部署詳解(Vagrant + Homestead)

Windows 7/8/10 系統下Laravel框架的開發環境安裝及部署詳解(Vagrant + Homestead)

所在 ntc 報錯 ould intel protoc aliyun manual linux

註意! laravel/homestead box項目地址已經不再是原來的

https://atlas.hashicorp.com/laravel/boxes/homestead

而已經變更成

https://app.vagrantup.com/laravel/boxes/homestead

如果是剛剛接觸Laravel的朋友,請直接按文中步驟操作。
需要更新及重裝的朋友們請註意使用第二個地址來進行文中操作。


雖然我通常習慣在Linux環境下工作,但對於一個從小就接觸Windows的人來說,能夠在Windows系統環境下進行程序的開發,對於我來說也不可或缺。那麽今天我們就一起來看一下如何在Windows 10

操作系統中進行Laravel的開發。

如果你的系統上已經安裝了PHPApacheNGINX,並且有偏愛的數據庫系統,那麽基本上你已經可以開始寫代碼了。但是我強烈推薦你使用Vagrant或者Docker來進行開發,因為不需要獨立安裝和考慮更新零碎部件的問題,所有工具都已經集成。我們今天要介紹的是在Homestead中進行Laravel的開發。

如果你有點混亂,沒關系,接著往下看。

Vagrant是一款基於Virtual Box的虛擬機環境,可以安裝多種Box(盒子,即預先配置好的開發環境),達到多種開發環境可以快速切換並且不需要擔心包裹的依賴性問題(Package Dependencies)。

HomesteadLaravel官方創建的Vagrant盒子,虛擬機的環境目前搭載的是Ubuntu 16.04 LTS,已經集成了Laravel所需的開發環境及工具,包含了最新版本的PHPMySQL以及NGINX服務器。

那麽我們需要做的幾個步驟如下:

  1. 下載並安裝Git Bash
  2. 下載並安裝Vagrant
  3. 下載並安裝Virtual Box。
  4. 下載Homestead盒子及盒子配置文件。
  5. 創建一個新的Laravel項目。

我們需要的工具:

  • Git Bash
  • Vagrant
  • Virtual Box
  • Homestead

註意:Laravel官方推薦的ShellGit Bash

。因為Git Bash自動將~(tilde)映射到用戶根目錄下(例如,C:\Users\Eagle),而如果使用Windows自帶的cmd,那麽需要使用%HOMEDRIVE%%HOMEPATH%環境變量來進入正確的文件夾。


好了那麽我們開始行動!首先需要我們先下載Git Bash

官網地址:

https://git-for-windows.github.io/

下載地址:

https://github.com/git-for-windows/git/releases/tag/v2.17.0.windows.1

技術分享圖片

直接下載可能很慢,我們可以右鍵復制下載鏈接,使用迅雷等下載工具下載。

安裝Git Bash很簡單,按默認選項安裝就可了。
完成後,我們就可以進行下一步了:
安裝VagrantVirtual Box


Vagrant的下載地址:

https://www.vagrantup.com/downloads.html

技術分享圖片

請選擇Windows版本進行下載並安裝。


Virtual Box的下載地址:

https://www.virtualbox.org/wiki/Downloads

技術分享圖片

請選擇Windows hosts下載Windows版本並安裝。

註意:若下載最新5.2+版本的VirtualBox,請確保你的Vagrant版本在2.0以上,因為新版的VirtualBoxVagrant老版本不兼容。


完成之後,我們就可以開始安裝Homestead了。

如果你在國外,或者你所在的地區對於CLI方式下載安裝Homestead網速沒有問題,那麽可以打開Git Bash,輸入

$ vagrant box add laravel/homestead

以上命令將會自動下載及安裝Homestead盒子。

如果以上命令下載速度很慢那麽我們需要切換到手動模式來安裝。
首先我們需要到以下地址下載最新版本(目前為6.1.0)的Homestead盒子(可以使用下載工具下載):

https://app.vagrantup.com/laravel/boxes/homestead/versions/6.1.0/providers/virtualbox.box
https://vagrantcloud.com/laravel/boxes/homestead/versions/6.1.0/providers/virtualbox.box

註意:如果你需要下載不同版本(或最新版本),請將以上地址中versions/後的數字版本號替換成相應的版本號。

下載完成後,我們將下載的文件命名為Homestead-6.1.0.box。接下來,我們cd到相應的文件夾(假設下載文件目錄在Downloads文件夾下,運行以下命令:

$ vagrant box add laravel/homestead ./Homestead-6.1.0.box

輸入命令後,會開始導入並安裝我們下載的Homestead盒子。

技術分享圖片

完成後,你會發現自己的用戶文件夾裏多出了一個名為.vagrant.d的文件夾

C:\Users\MyUserName\vagrant.d

接下來,非常重要的一個步驟:

我們打開這個文件夾,找到以下路徑(請將MyUserName替換成你的系統用戶名):

C:\Users\MyUserName\vagrant.d\boxes\laravel-VAGRANTSLASH-homestead

將文件夾中名為0的文件夾改名為我們下載的Homestead的版本號,即6.1.0

然後在該文件夾下新建一個叫metadata_url的空白文件 (註意不要有任何文件名後綴,如果你的系統設置了自動隱藏後綴名,請將隱藏去掉,確認文件無任何後綴):

技術分享圖片

文件的內容裏,添加以下鏈接:

https://app.vagrantup.com/laravel/boxes/homestead

註意,不要留任何空白字符,保存文件。

完成之後,我們就可以開始配置Homestead了。


Git Bash裏輸入

$ git clone https://github.com/laravel/homestead.git ~/homestead

該命令會將GithubHomestead項目配置克隆至本地~/homestead文件夾中。

進入該文件夾,我們就可以開始創建Homestead配置文件了:

$ cd ~/homestead                                                   
   
# 創建Homestead初始配置                                                   
$ bash init.sh

然後在~/homestead文件夾中,我們可以看到多出了一個名為Homestead.yaml的文件。使用notepad++打開它,可以看到內容如下:

---                                                                             
ip: "192.168.10.10"                                                   
memory: 2048                                                    
cpus: 1                                                   
provider: virtualbox                                                  
   
authorize: ~/.ssh/id_rsa.pub                                                   
   
keys:                                                   
    - ~/.ssh/id_rsa                                                  
   
folders:                                     
    - map: ~/Code                               
      to: /home/vagrant/Code                              
   
sites:                                                   
    - map: homestead.app                              
      to: /home/vagrant/Code/laravel/public                              
   
databases:                              
    - homestead                              
   
# blackfire:                               
#     - id: foo                                 
#       token: bar                                 
#       client-id: foo                                
#       client-token: bar                                
   
# ports:                                                                                
#     - send: 50000                                 
#       to: 5000                                 
#     - send: 7777                                 
#       to: 777                                 
#       protocol: udp

我們來逐條解讀每一段配置的意思。


首先我們看到

ip: "192.168.10.10"

這個ip是我們訪問項目時指向的虛擬機地址。
註意,如果你的配置文件地址跟我的不一樣,不要隨意修改,在Linux系統下,這個ip會是192.168.10.10,而Windows系統下,你的配置中一般會是192.168.1.10。而後面修改hosts文件時,請根據你的yaml文件中的ip地址做出相應修改。(具體配置請往下看)

接下來我們看到這段配置:

authorize: ~/.ssh/id_rsa.pub                            
   
keys:                            
    - ~/.ssh/id_rsa

這段配置中authorize後面的文件是用來ssh進入虛擬機的公鑰,而keys後面的文件是我們的私鑰。
所以我們需要建立用於ssh的公鑰和私鑰且填入相應配置中。

首先我們需要創建~/.ssh文件夾:

$ mkdir ~/.ssh                                
$ cd ~/.ssh

接下來,我們運行生成密鑰的命令:

$ ssh-keygen -t rsa

技術分享圖片

如圖,系統會詢問我們將私鑰保存在什麽位置,這裏由於我們已經處於~/.ssh文件夾下(上一步cd操作),我們可以直接輸入我們需要命名的文件名。
提示:圖片中我用的文件夾名為example,純粹是用來示例的,請大家將秘鑰按上面敘述的步驟放至~/.ssh文件夾,並將文件名稱命名為id_rsa。這裏其實名稱可以自己取,但是我們在演示中直接保留默認文件名(該步驟不輸入任何文字直接回車即可)。

上一步完成後,我們看到系統提示我們輸入密碼。這裏我們可以直接回車密碼留空,因為我們在本地開發,可以省去密碼這個步驟。

該步驟完成後,我們會在~/.ssh目錄下看到以下兩個文件:

id_rsa.pub
id_rsa

這就是第一段配置中相應的兩個文件。所以我們保留默認配置即可:

authorize: ~/.ssh/id_rsa.pub                          
   
keys:                          
    - ~/.ssh/id_rsa

接下來我們看到這兩段配置

folders:                                
    - map: ~/Code                                
      to: /home/vagrant/Code                                
   
sites:                                
    - map: homestead.app                                
      to: /home/vagrant/Code/laravel/public

第一段配置folders中,map後指定的文件夾(即~/Code)將被映射到虛擬機系統中to後指定的路徑,即/home/vagrant/Code

這和我們常見到的和虛擬機系統(guest system)和宿主系統(host system)文件夾共享機制類似,由於guest system不能直接訪問host system中的文件夾(安全隱患),我們需要把本機的~/Code文件夾分享至虛擬機中,這樣一來我們在可以在虛擬機系統中訪問到我們的項目文件,並且在~/Code中所進行的修改會實時同步在虛擬機系統對應的文件中。

第二段配置sites中,定義了瀏覽器地址homestead.app指向虛擬機系統中/home/vagrant/Code/laravel/public這個文件夾,即Laravel項目的public文件夾。這樣在瀏覽器中輸入homestead.app,我們就可以直接看到項目主頁了。

值得註意的是,由於.app域名的開放以及新的限制,不推薦使用.app.dev作為項目訪問地址後綴,可能會出現比較匪夷所思的錯誤。

以上的文件夾及映射是都是可以根據用戶喜好更改的,比如我喜歡把我的開發文件夾叫做webdev,在裏面我新建了一個叫phantastic.test的項目,那麽以上的配置,我就可以做出相應修改:

folders:                                
    - map: ~/webdev                                
      to: /var/www                                
   
sites:                                 
    - map: phantastic.test                                
      to: /var/www/phantastic/public

這裏我將~/webdev文件夾映射為虛擬機內的/var/www文件夾,這樣一來,我就可以在虛擬機裏/var/www路徑下看到host系統中~/webdev文件夾下的所有文件。

這一步完成後,我們還有一個非常重要的步驟。

hosts文件中添加一行:

192.168.10.10 phantastic.test

註意:請根據你yaml文件中的ip進行相應的修改,例如Windows環境下,通常為192.168.1.10

Windowshosts文件在以下路徑:

C:\Windows\System32\drivers\etc\

notepad++打開即可:

# Copyright (c) 1993-2009 Microsoft Corp.                                           
#                                 
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.                                
#                                                  
# This file contains the mappings of IP addresses to host names. Each                                
# entry should be kept on an individual line. The IP address should                                
# be placed in the first column followed by the corresponding host name.                                         
# The IP address and the host name should be separated by at least one                                         
# space.                                          
#                                            
# Additionally, comments (such as these) may be inserted on individual                                         
# lines or following the machine name denoted by a ‘#‘ symbol.                                           
#                                          
# For example:                                         
#                                                    
#      102.54.94.97     rhino.acme.com          # source server                                         
#       38.25.63.10     x.acme.com              # x client host                                        
# localhost name resolution is handled within DNS itself.                                         
#	127.0.0.1       localhost                                           
#	::1             localhost                                          
   
# 添加上這一行,將phantastic.test替換成自己的項目名稱                                         
192.168.10.10 phantastic.test

這裏我們需要將項目地址解析到對應的虛擬機IP(192.168.10.10)。
然後我們以管理員權限保存hosts文件。


接下來我們來看最後一段配置:

databases:                                
    - homestead

這段配置指定了我們虛擬機中MySQL的數據庫名,我們每新添加一個數據庫名字,那麽Homestead將會自動創建一個該名字的數據庫來供我們操作。

在這裏,我添加了兩個新的數據庫,並刪除了原始配置中的homestead數據庫:

databases:                                
    - phantastic                                
    - eagle

註意:配置文件中不要使用tab來留空,否則可能會報錯(可以用空格對齊)。

虛擬機環境下默認的MySQL服務器管理員用戶名為homestead,密碼是secret。推薦使用phpmyadminadminer.php來進行數據庫管理,當然如果你hardcore,直接mysql -u homestead -p也可以。

另外每個項目如果需要更改項目默認使用的數據庫等配置,可以在創建Laravel項目後配置根目錄下的.env文件
詳情請查看 Laravel 5+ .env 環境配置文件詳解


至此,Homestead就配置完成了。我們將Homestead.yaml保存,然後嘗試啟動虛擬機!(激動嗎;)?)

以管理員的身份打開Git Bash,輸入

$ cd ~/homestead                                
$ vagrant up

技術分享圖片

我們會看到,Vagrant已經順利運行了(Windows環境下vagrant up不需要加sudo)!
接下來,要進入Homestead,我們輸入

$ vagrant ssh

進入虛擬機環境後:

# cd 進入我們共享的文件夾 (請根據你配置中的映射目錄來輸入相應文件夾)                                
$ cd /var/www                                
   
# 創建一個新的laravel項目                                
$ laravel new eagles_new_project

現在我們就可以開始Laravel的開發了!


註意:如果你vagrant up後,卡在ssh命令,很久後顯示超時,那麽請重啟系統進入BIOS,將IntelVT-x功能開啟並保存再繼續即可。

From:https://blog.sbot.io/articles/1

Windows 7/8/10 系統下Laravel框架的開發環境安裝及部署詳解(Vagrant + Homestead)