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

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

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

而已經變動成html

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

若是是剛剛接觸Laravel的朋友,請直接按文中步驟操做。
須要更新及重裝的朋友們請注意使用第二個地址來進行文中操做。mysql

 

雖然我一般習慣在Linux環境下工做,但對於一個從小就接觸Windows的人來講,可以在Windows系統環境下進行程序的開發,對於我來講也不可或缺。那麼今天咱們就一塊兒來看一下如何在Windows 10操做系統中進行Laravel的開發。laravel

若是你的系統上已經安裝了PHPApacheNGINX,而且有偏心的數據庫系統,那麼基本上你已經能夠開始寫代碼了。可是我強烈推薦你使用Vagrant或者Docker來進行開發,由於不須要獨立安裝和考慮更新零碎部件的問題,全部工具都已經集成。咱們今天要介紹的是在Homestead中進行Laravel的開發。git

若是你有點混亂,不要緊,接着往下看。github

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

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

那麼咱們須要作的幾個步驟以下:數據庫

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

咱們須要的工具:windows

  • 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                              
   

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

 

首先咱們看到

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功能開啓並保存再繼續便可。

 

 

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

相關文章
相關標籤/搜索