注意! 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
若是你的系統上已經安裝了PHP
,Apache
或NGINX
,而且有偏心的數據庫系統,那麼基本上你已經能夠開始寫代碼了。可是我強烈推薦你使用Vagrant
或者Docker
來進行開發,由於不須要獨立安裝和考慮更新零碎部件的問題,全部工具都已經集成。咱們今天要介紹的是在Homestead
中進行Laravel
的開發。git
若是你有點混亂,不要緊,接着往下看。github
Vagrant
是一款基於Virtual Box
的虛擬機環境,能夠安裝多種Box
(盒子,即預先配置好的開發環境),達到多種開發環境能夠快速切換而且不須要擔憂包裹的依賴性問題(Package Dependencies
)。web
Homestead
是Laravel
官方建立的Vagrant
盒子,虛擬機的環境目前搭載的是Ubuntu 16.04 LTS
,已經集成了Laravel
所需的開發環境及工具,包含了最新版本的PHP
,MySQL
以及NGINX
服務器。sql
那麼咱們須要作的幾個步驟以下:數據庫
咱們須要的工具:windows
注意:Laravel
官方推薦的Shell
是Git 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
很簡單,按默認選項安裝就可了。
完成後,咱們就能夠進行下一步了:
安裝Vagrant
及Virtual 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
以上,由於新版的VirtualBox
與Vagrant
老版本不兼容。
完成以後,咱們就能夠開始安裝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
該命令會將Github
上Homestead
項目配置克隆至本地~/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
。
Windows
的hosts
文件在如下路徑:
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
。推薦使用phpmyadmin
或adminer.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
,將Intel
的VT-x
功能開啓並保存再繼續便可。
轉 : https://blog.sbot.io/articles/1