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

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

 

注意! 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

Vagrant Windows Version Download

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


Virtual Box的下載地址:

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

Virtual box download

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

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


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

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

$ vagrant box add laravel/homestead

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

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

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

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

下載完成後,我們將下載的檔案命名為Homestead-6.3.0.box。接下來,我們cd到相應的資料夾(假設下載檔案目錄在Downloads資料夾下,執行以下命令:

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

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

Add Homestead Box Manually

完成後,你會發現自己的使用者資料夾裡多出了一個名為.vagrant.d的資料夾

C:\Users\MyUserName\vagrant.d

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

我們開啟這個資料夾,找到以下路徑(請將MyUserName替換成你的系統使用者名稱):

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

將資料夾中名為0的資料夾改名為我們下載的Homestead的版本號,即6.3.0

然後在該資料夾下新建一個叫metadata_url的空白檔案 (注意不要有任何檔名字尾,如果你的系統設定了自動隱藏字尾名,請將隱藏去掉,確認檔案無任何字尾)

Homestead version number and 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是我們訪問專案時指向的虛擬機器地址。
注意,如果你的配置檔案地址跟我的不一樣,不要隨意修改,記錄下這個ip地址,後面修改hosts檔案時,請使用這個ip地址做出相應修改。(具體配置請往下看)

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

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

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

首先我們需要建立~/.ssh資料夾:

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

接下來,我們執行生成金鑰的命令:

$ ssh-keygen -t rsa

Generate ssh keys

如圖,系統會詢問我們將私鑰儲存在什麼位置,這裡由於我們已經處於~/.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

注意:請根據你Hometead.yaml檔案中的ip進行相應的修改,例如192.168.10.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 up.jpg

我們會看到,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功能開啟並儲存再繼續即可。

轉載:https://blog.sbot.io/articles/1/Windows-7-8-10-%E7%B3%BB%E7%BB%9F%E4%B8%8BLaravel%E6%A1%86%E6%9E%B6%E7%9A%84%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85%E5%8F%8A%E9%83%A8%E7%BD%B2%E8%AF%A6%E8%A7%A3-Vagrant-Homestead