準備工具
一般來說,在windows上配置開發環境是一個很艱苦的事情。而vagrant的出現則是我們開發者的一個福利。大大的減輕了我們的配置的複雜新,但是雖然有所減輕,但還是要動手配一些的。話不多說,下面開始進入正題,首先來說下需要一些什麼: 1. windows已經裝好了git,如果沒裝,點這裡 2. 需要安裝好php(隻需要php,其他的都不需要,并且在php.ini裡面開啟openssl擴充)。 3. 然後需要composer和vagrant 和 virtualbox 以及一個homestead。 以上就是配置環境所需的全部軟體,下面我們來配環境。
配置流程
簡而言之,Homestead是laravel官方預封裝好的一個基于virtualbox的linux虛拟機,在這個虛拟機裡面安裝好了一系列的軟體Nginx、PHP 5.6、MySQL、Postgres、Redis、Memcached,足夠laravel的開發。這個虛拟機可以很友善的啟動,銷毀,和重建。基本不會把你現有的作業系統搞得亂七八糟。下面簡單說下安裝流程:
Composer安裝
Composer是php的一個依賴管理的工具,可以很友善的管理laravel開發過程中所需的一系列的擴充。是一個很重要的工具。直接打開上面下載下傳的安裝包安裝就行,如果出現了錯誤,估計是沒有在php裡面開啟ssl,重新開啟一下就可以安裝成功。
Vagrant以及VirtualBox安裝
這兩個也都是基于圖形界面安裝的,直接安裝就行。需要說明的是要使用Virtualbox就需要開啟硬體虛件支援(VT-X),在BIOS裡面開啟。
配置虛拟機
所需要的軟體基本都安裝完成了,接下來就是需要配置虛拟機了。 1. 将homestead加入到virtualbox中,在終端中運作以下代碼(path是自己放置homestead的路徑):
shell vagrant box add laravel/homestead path\homestead.box
2. 安裝homestead指令行工具:
shell composer global require "laravel/homestead=~2.0"
一般在這裡會出現一個ssl錯誤,這個是由于咱們的特殊的國情造成的,你們懂得,解決辦法是使用國内的鏡像,按照這裡 的方式在composer.json裡面增加國内的鏡像,再次執行以上的代碼,就能夠順利的完成安裝了。
- 初始化homestead
執行後生成C:\Users\.homestead,homestead的配置檔案就在裡面了。shell homestead init
-
修改Homestead.yaml
```shell
``` LaravelWorkspace是一個代碼共享區,在這裡所做的修改立馬就能反映到虛拟機裡面去。其他的是一些包括站點和資料庫的配置,具體的一些細節大家可以去laravel的官網看看詳細的細節介紹。 然後上面的那個ssh密鑰是要通過gitbash生成的,如下:ip: "192.168.10.10" memory: 2048 cpus: 2 authorize: ~/.ssh/id_rsa.pub keys: - ~/.ssh/id_rsa folders: - map: ~/LaravelWorkspace to: /home/vagrant/Code sites: - map: homestead.app to: /home/vagrant/Code/laravel/public hhvm: true databases: - homestead variables: - key: APP_ENV value: local
那個站點需要在windows的C:\Windows\System32\drivers\etc\hosts檔案裡面添加如下配置:shell ssh-keygen -t rsa -C "[email protected]"
shell 192.168.10.10 homestead.app
- 啟動虛拟機
執行以上代碼一段時間之後,就應該可以看到虛拟機被啟動起來了,然後通過shell homestead up
或者http://homestead.app:8000
去通路你的laravel項目的首頁了。192.168.10.10
Homestead ssh問題
本來環境在上一步就已經配置完成了,可是在windows上,指令行能力實在是有限,沒有辦法支撐起開發需求,因為windows指令行不支援ssh通路。這個确實比較蛋疼。大家當然也可以使用其他的ssh工具來通路虛拟機(使用者名和密碼都是vagrant).這裡給大家推薦一款更強大的工具,就是chrome的secure shell,在網頁上的終端,見過沒。用這個就能很友善的去通路ssh,咱們的開發需求到這裡也基本被滿足了。