轉載:http://www.javashuo.com/article/p-huvwhsqi-cx.htmlphp
寫在開頭
關於Laravel框架的Homestead開發環境安裝及部署,網上有不少相關的技術文章,其中Eagle Luo有一篇文章寫得很是好,個人第一個homestead環境基本上就是在他這篇文章的指導下完成安裝的。原文標題是:「」Windows 7/8/10 系統下Laravel框架的開發環境安裝及部署詳解(Vagrant + Homestead)」,原文地址以下:https://blog.sbot.io/articles/1 。
儘管Eagle Luo的這篇文章已經寫得很是詳細了,但我在安裝過程當中依然遇到了很多的問題,最主要的地方有兩個:一個就是homestead默認安裝位置(默認爲C:\Users\XXX)的問題,另外一個是當你的windows登陸用戶名使用的是中文時(如C:\Users\小螞蟻)homestead虛擬機安裝報錯的問題。因此,我在這裏把本身的安裝過程作一個梳理,也給初次安裝Laravel Homestead的小夥伴提供一個參考和借鑑。mysql
Laravel Homestead簡介
Laravel Homestead是Laravel官方爲開發者提供的一套完善的重量級本地開發環境,它是一個打包好各類 Laravel 開發所需軟件和工具的 Vagrant 盒子,該盒子爲咱們提供了一個優秀的開發環境,有了它,咱們再也不須要在本地環境安裝 PHP、Composer、Nginx、MySQL、Memcached、Redis、Node 等其它工具軟件,咱們也徹底不用再擔憂誤操做搞亂操做系統 —— 由於 Vagrant 盒子是一次性的,若是出現錯誤,能夠在數分鐘內銷燬並從新建立該 Vagrant 盒子!laravel
Laravel Homestead的預裝軟件
Laravel Homestead 能夠運行在 Windows、Mac 以及 Linux 等主流操做系統上,預裝的軟件和工具列表以下:
Ubuntu 18.04
Git
PHP 7.2
PHP 7.1
PHP 7.0
PHP 5.6
Nginx
Apache(可選)
MySQL
MariaDB(可選)
SQLite3
PostgresSQL
Composer
Node(With Yarn, Bower, Grunt, and Gulp)
Redis
Memcached
Beanstalkd
Mailhog
Neo4j(可選)
MongoDB(可選)
Elasticsearch(可選)
ngrok
wp-cli
Zend Z-Ray
Go
Miniogit
安裝Laravel Homestead 須要的軟件及工具
一、Git
二、VirtualBox
三、Vagrant
四、Homestead Box (Lavavel官方提供的Vagrant盒子)github
具體安裝配置步驟及測試方法詳解
一、安裝Git
Windows版本的Git官網地址:https://gitforwindows.org/sql
Git 的安裝很簡單,按默認選項進行就能夠了。
安裝完畢以後,咱們在桌面或文件夾的空白位置單擊鼠標右鍵,選擇「Git Bash Here」,就能夠打開Git的命令窗口。數據庫
初次使用Git的小夥伴能夠在git窗口右擊,選擇「options」,而後對Git窗口的text等選項進行設置。windows
二、安裝VirtualBox
VirtualBox 是一款開源虛擬機軟件,使用者能夠在VirtualBox上安裝而且執行Solaris、Windows、DOS、Linux、OS/2 Warp、BSD等系統做爲客戶端操做系統。Laravel Homestead就是使用VirtualBox建立的一個虛擬機。瀏覽器
VirtualBox的官網地址:https://www.virtualbox.org/bash
單擊Download按鈕進入下載頁面,選擇windows版本進行下載,安裝。
三、安裝Vagrant
vagrant是一款虛擬機管理工具,使用它能夠快速搭建可複用、可移植的開發環境。 Laravel Homestead就是一個配置好了的虛擬機開發環境,Laravel官方將它打包成了一個Vagrant盒子,方便使用者將它移植到本身的電腦上。
Vagrant的官網地址:https://www.vagrantup.com/
單擊Download按鈕進入下載頁面,選擇windows版本進行下載,安裝。
四、安裝Laravel Homestead
安裝好上面3個軟件以後,咱們就能夠開始安裝Homestead了。安裝方式有兩種:
第一種是在線安裝方式:
若是你以爲你的網速足夠快,能夠在線下載Homestead的box(服務器在國外),那麼能夠打開Git Bash,輸入
vagrant box add laravel/homestead
系統將會自動爲你下載及安裝Homestead盒子。
第二種是離線安裝方式:(強烈推薦)
(1)、下載Laravel Homestead 的box盒子
使用離線安裝的方式,咱們首先要去下載一個最新版本的Laravel Homestead 的盒子,其目前最新版本爲6.4.0。
下載地址:https://vagrantcloud.com/laravel/boxes/homestead/versions/6.4.0/providers/virtualbox.box
該盒子的大小爲2.18GB,建議你們使用迅雷等下載工具進行下載。
注意:若是你須要下載不一樣版本(或最新版本),請將以上地址中versions/後的數字版本號替換成相應的版本號。
下載完成後,咱們將下載的文件命名爲Homestead-6.4.0.box。並將該文件放到一個指定目錄存放,我把它放在F:\virtualBox VMS\homesteadbox文件夾中。
(2)、設置VAGRANT_HOME環境變量改變默認位置
Vagrant 執行add box命令的時候會將Laravel Homestead盒子相關的文件默認保存在 C:\Users\xxx.vagrant.d文件夾中(其中,會有一個大小約爲2.2GB左右的虛擬磁盤文件),
若是你的C盤空間過小,或者你不想將這些文件放在默認的用戶文件夾中,咱們能夠經過設置VAGRANT_HOME環境變量改變默認位置,設置方法能夠在git命令行窗口執行下面2條命令:
setx VAGRANT_HOME 「F:\HomeStead\.vagrant.d」
setx VAGRANT_HOME 「F:\HomeStead\.vagrant.d」 /M (系統變量)
或者直接在windwos環境變量中添加VAGRANT_HOME用戶變量和系統變量
(3)、安裝Laravel Homestead
設置好VAGRANT_HOME環境變量後,咱們就能夠來安裝Laravel Homestead 了。
在Windows中,打開你存放Homestead-6.4.0.box的文件夾(個人是F:\virtualBox VMS\homesteadbox),在該文件夾窗口右擊,選擇「Git Bash Here」,進入Git的命令行窗口
在這裏執行命令
vagrant box add laravel/homestead Homestead-6.4.0.box
1
輸入命令後,會開始導入並安裝咱們下載的Homestead盒子。
稍微等待一下子以後,Laravel/Homestead盒子就添加完成了。
此時,在咱們指定的目錄(F:\HomeStead)中就多出了一個名爲.vagrant.d的文件夾,裏面有Laravel/Homestead盒子的一些相關文件。
在Git中使用vagrant box list命令能夠看到,Vagrant盒子列表中就有了一個名爲laravel/homestead的box盒子。
可是,列表中顯示的laravel/homestead的版本號爲0,咱們要把它改爲正確的版本號(6.4.0),能夠打開F:\HomeStead文件夾,找到如下路徑:
F:\HomeStead.vagrant.d\boxes\laravel-VAGRANTSLASH-homestead
將文件夾中名爲0的文件夾更名爲咱們下載的Homestead的版本號,即6.4.0。
而後在該文件夾下新建一個叫metadata_url的空白文件 (注意不要有任何文件名後綴,若是你的系統設置了自動隱藏後綴名,請將隱藏去掉,確認文件無任何後綴):
文件的內容裏,添加如下連接:
https://app.vagrantup.com/laravel/boxes/homestead
1
保存好以後,咱們再次使用vagrant box list 命令查看盒子列表,就會發現,laravel/homestead的版本號已經正確顯示了。
至此,Laravel Homestead盒子安裝完畢。
五、配置Laravel Homestead
首先,咱們去laravel官方的Git上下載一個Homestead的配置文件夾。
在Git Bash裏輸入
git clone https://github.com/laravel/homestead.git ~/homestead
1
該命令會將Github上Homestead項目配置克隆至本地~/homestead文件夾中(也就是c:\users\xxx目錄,xxx爲你的用戶名)。打開下載的homestead配置文件夾,會發現裏面有不少homestead的項目配置文件
將裏面全部的文件複製到咱們以前指定的目錄F:\HomeStead之中
此時,該文件夾中既包含了vagrant盒子的文件夾.vagrant.d,也包含了Homestead的配置文件,也就是和laravel/homestead相關的文件咱們都放在這個文件夾中了,之後咱們啓動Homestead虛擬機時就能夠直接在F:\HomeStead目錄下進行,從而解決了windows登陸用戶名爲中文時啓動虛擬機報錯的問題。
接下來,咱們就能夠開始建立Homestead配置文件了:
在F:\HomeStead目錄中啓動Git Bash,執行命令:
bash init.sh
1
而後在F:\HomeStead文件夾中,咱們能夠看到多出了一個名爲Homestead.yaml的文件。使用文本編輯器打開它,能夠看到內容以下:
---
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.test
to: /home/vagrant/code/public
databases:
- homestead
# ports:
# - send: 50000
# to: 5000
# - send: 7777
# to: 777
# protocol: udp
# blackfire:
# - id: foo
# token: bar
# client-id: foo
# client-token: bar
# zray:
# If you've already freely registered Z-Ray, you can place the token here.
# - email: foo@bar.com
# token: foo
# Don't forget to ensure that you have 'zray: "true"' for your site.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
這些配置項的主要含義是:
ip: "192.168.10.10"
1
指的是虛擬機的IP地址,初次使用homestead的小夥伴能夠不用修改這個地址。
memory: 2048
1
指的是給虛擬機的配置的內存大小,默認值是2048MB
cpus: 1
1
指的是給虛擬機的配置CPU數量,默認是一個
provider: virtualbox
1
表示使用哪一個 Vagrant 提供者:virtualbox或者vmware_workstation,你能夠將其設置爲本身喜歡的提供者,默認是virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
1
2
3
4
authorize後面的文件是用來ssh進入虛擬機的公鑰,而keys後面的文件是咱們的私鑰。
folders:
- map: ~/code
to: /home/vagrant/code
1
2
3
folders用來設置本機和虛擬機的同步文件夾,map後指定的文件夾(即~/Code)將被映射到虛擬機系統中to後指定的路徑,即/home/vagrant/Code。
咱們把本機Code文件夾同步至虛擬機中,這樣一來咱們在能夠在虛擬機系統中訪問到咱們的項目文件,而且在~/Code中所進行的修改會實時同步在虛擬機系統對應的文件中。
sites:
- map: homestead.test
to: /home/vagrant/code/public
1
2
3
sites用來設置站點域名地址的映射,這裏是指將homestead.test域名映射到/home/vagrant/code/public文件夾。這樣,咱們在瀏覽器地址欄中輸入http://homestead.test就能夠訪問 /home/vagrant/code項目的首頁了。
databases:
- homestead
1
2
這裏指虛擬機的數據庫名稱。
注:虛擬機環境下默認的MySQL服務器管理員用戶名爲homestead,密碼是secret。推薦使用phpmyadmin或HeidiSQL來進行數據庫管理
假設咱們要建立一個blog項目,項目代碼放在F:\code\blog中,咱們就能夠進行以下的配置:
若是你要進行多站點的配置,能夠參照以下方法:
要想讓你設置的域名生效,還要在hosts文件中添加域名指向:
192.168.10.10 homestead.test
192.168.10.10 meetup.test
1
2
*hosts文件的路徑:C:\Windows\System32\drivers\etc*
要注意的是,host文件在該路徑下修改後不能直接保存,咱們能夠先把它移動到桌面,修改完畢後再移動回原地。修改後的host文件內容:
六、創建用於ssh的公鑰和私鑰
從此咱們要經過ssh鏈接homestead虛擬機的話,須要有鏈接虛擬機的公鑰和私鑰,下面咱們就來創建公鑰和私鑰。
首先,咱們在F:\HomeStead文件夾中啓動Git Bash,執行命令mkdir .ssh,建立.ssh文件夾;
mkdir .ssh
1
接着,執行命令cd .ssh,進入.ssh文件夾中;
cd .ssh
1
接下來,咱們運行生成密鑰的命令:
ssh-keygen -t rsa
1
系統提示輸入保存祕鑰的文件路徑,輸入路徑 /f/HomeStead/.ssh/id_rsa ,按回車。接下來的兩個提示直接按回車,最後顯示祕鑰建立成功,就OK了。
打開F:\HomeStead下的.ssh文件夾,你會發現多了兩個文件,這就是咱們剛纔建立的公鑰和私鑰
建立好公鑰和私鑰後,別忘了在Homestead.yaml文件中把它們的路徑設置好。
接下來,咱們能夠嘗試啓動虛擬機了!
七、啓動Homestead虛擬機
啓動Homestead虛擬機,系統會在virtualbox中建立一個虛擬機,虛擬機保存的默認位置是C:\Users\xxx\VirtualBox VMs,能夠打開virtualbox,單擊「管理」->"全局設定"菜單查看
咱們把這個虛擬機的保存位置也修改一下,我把它設置爲F:\virtualBox VMS (請自行建立好改文件夾)
設置好後,咱們來嘗試啓動虛擬機。(請保持virtualbox爲啓動狀態,聽說是windows10的bug)
在F:\HomeStead文件夾中以管理員身份啓動Git Bash,打開Git窗口,執行命令vagrant up 來啓動虛擬機。
vagrant up
1
系統開始啓動虛擬機
若是一切正常,Homestead虛擬機將成功啓動。
此時,virtualbox中也將出現一個新的虛擬機homestead-7
虛擬機文件也存儲在咱們指定的位置F:\virtualBox VMS,而不是存儲在默認的C:\Users\xxx\VirtualBox VMs目錄。
輸入域名http://homestead.test/ ,也能訪問,只是因爲咱們暫時沒有建立項目,系統顯示「No input file specified.」
注意:啓動homestead虛擬機後,php開發環境就已經在運行了,本地主機無需去啓動wamp、xampp等php開發環境。我曾經犯過這樣低級的錯誤,覺得本地主機還要啓動PHP開發環境
八、建立一個laravel項目
在windows中進入代碼文件夾F:\code,在F:\code文件夾中啓動Git Bash,新打開一個Git窗口,執行下面的命令,在code文件夾中建立一個名爲blog的laravel項目。(laravel的安裝須要有composer的支持,若是你的電腦上沒有安裝composer,請先行下載安裝)
composer create-project --prefer-dist laravel/laravel blog
1
出現下圖所示後項目建立成功。
項目建立好後,用vagrant reload命令重啓一下虛擬機。
vagrant reload
1
此時,打開域名http://homestead.test/ ,就能夠訪問咱們新建立的blog項目的首頁了~~
九、查看主機和虛擬機項目同步狀況
用vagrant up命令啓動homestead虛擬機後,使用vagrant ssh 命令能夠鏈接虛擬機
vagrant ssh
1
進入虛擬機後,用pwd命令查看一下當前目錄位置,能夠看到當前的位置是/home/vagrant ,用ll命令查看一下,會發如今當前目錄中有一個code文件夾。
用cd code 命令進入code文件夾
cd code
1
用ll命令查看一下,能夠看到裏面有一個blog文件夾,這就是咱們在本地主機F:\code裏面建立的blog項目同步過來的。
十、數據庫鏈接的問題
homestead虛擬機啓動以後,咱們就能夠去鏈接虛擬機的mysql數據庫了,用戶名爲homestead,密碼是secret。我用的數據庫管理工具是HeidiSQL,打開HeidiSQL以後,新建一個會話,命名爲homestead,輸入上面的用戶名、密碼,端口是33060,而後單擊「打開」按鈕。
會發現,裏面已經有咱們在Homestead.yaml文件裏配置的兩個數據庫了
打開F:\code\blog項目中的.env文件,配置數據庫選項
說明
Homestead 默認已經在虛擬機中爲 MySQL 和 Postgres 數據庫作好了配置,更方便的是,這些配置值與 Laravel 的 .env 中默認提供的配置一致。想要經過本地的 Navicat 或 Sequel Pro 鏈接到 Homestead 上的 MySQL 或 Postgres 數據庫,能夠經過新建鏈接來實現,主機 IP 都是 127.0.0.1,對於 MySQL 而言,端口號是 33060,對 Postgres 而言,端口號是 54320,用戶名/密碼是 homestead/secret。只有從本地鏈接 Homestead 的數據庫時才能使用這些非標準的端口,在 Homestead 虛擬機中仍是應該使用默認的 3306 和 5432 端口進行數據庫鏈接配置。
至此,Homestead開發環境的安裝及配置就所有完成了!
經常使用的幾個vagrant命令
最後,列出幾個經常使用的vagrant命令,方便小夥伴們使用時查閱:
$ vagrant up # 啓動虛擬機
$ vagrant halt # 關閉虛擬機
$ vagrant reload # 重啓虛擬機
$ vagrant ssh # SSH 至虛擬機
$ exit # 從虛擬機退出
$ vagrant init # 初始化
$ vagrant suspend # 掛起虛擬機
$ vagrant resume # 喚醒虛擬機
$ vagrant status # 查看虛擬機運行狀態
$ vagrant destroy # 銷燬當前虛擬機
#box管理命令$ vagrant box list # 查看本地box列表$ vagrant box add "box名稱" # 添加box到列表$ vagrant box remove "box名稱" # 從box列表移除————————————————版權聲明:本文爲CSDN博主「雲上飄過」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。原文連接:https://blog.csdn.net/xiaomayi721025/article/details/84727405