Ubuntu下Laravel的開發環境安裝及部署(Vagrant + Homestead)
2018-2-6 更新
注意! laravel/homestead box專案地址已經不再是原來的 https://atlas.hashicorp.com/laravel/boxes/homestead,而已經變更成 https://app.vagrantup.com/laravel/boxes/homestead
,所以本文中的操作以及連結也進行了相應的更新。
之前寫了一篇如何在Windows 10
下進行Laravel
開發環境的安裝及部署,今天我們要一起來看一下如何在Linux
下進行搭建。
本文中使用了Ubuntu 16.04 LTS
,Vagrant 2.0.0
版本以及Homestead 5.1.0
。
好了,廢話不多說,趕快開始吧!
首先還是需要下載相應的安裝包檔案。
在 https://www.vagrantup.com/downloads.html 可以下載到Vagrant
的最新版本:
注意,我們下載Debian 64-bit
版本。下載完成後,雙擊下載的.deb
檔案進行安裝(需要驗證管理員密碼)。完成後,我們繼續下一步。
下面我們需要安裝Virtual Box
。請訪問以下連結尋找適合你係統的版本,這裡我們使用的是Ubuntu 16.04 LTS 64bit
,所以我們AMD64
版本。注意,圖片中我們看到的是5.2.0
版本,但是該版本不支援vagrant 2.0.0
,所以我們需要下載VBox 5.1
https://www.virtualbox.org/wiki/Download_Old_Builds_5_1
下載完成後雙擊進行安裝。
接下來我們需要下載Homestead 5.1.0
。將以下的地址複製到下載工具中,並將下載的檔案重新命名為homestead.5.1.0.box
:
https://app.vagrantup.com/laravel/boxes/homestead/versions/5.1.0/providers/virtualbox.box
接下來我們需要將Homestead
新增至vagrant
中):
$ sudo vagrant box add laravel/homestead ~/path/to /your/homestead.5.1.0.box
注意,需要將以上~/path/to/your/
路勁替換成你剛剛儲存homestead.5.1.0.box
的路徑,還有不要以root
身份直接執行該命令,而是使用sudo
,否則在~/
中將找不到.vagrant.d
資料夾。
然後我們進入到~/.vagrant.d/boxes/laravel-VAGRANTSLASH-homestead
資料夾中(如果沒有看到這個資料夾,請在~/
資料夾中按下ctrl + h
顯示所有檔案),將0
這個資料夾名字改為5.1.0
。然後新建一個空白檔案(無任何字尾),名字為metadata_url
,裡面的內容為:https://atlas.hashicorp.com/laravel/homestead
(注意不要留任何空白字元)。
完成後,我們就可以開始配置Homestead
了。
我們從Github
上把Homestead
配置clone
下來:
$ cd
$ git clone https://github.com/laravel/homestead.git
接下來,我們需要初始化配置:
# cd到我們剛剛克隆好的homestead資料夾
$ cd homestead
$ bash init.sh
然後我們就可以修改Homestead.yaml
這個配置檔案了:
$ vim 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.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
我們一項一項來配置。首先是
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
這段,我們需要設定ssh
的公鑰和私鑰。在本地環境輸入以下命令:
[email protected]: cd ~/.ssh
[email protected]: ~/.ssh$ sudo ssh-keygen -t rsa -C "Homestead"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): your_rsa_name
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in your_rsa_name.
Your public key has been saved in your_rsa_name.pub.
The key fingerprint is:
SHA256:lBUtkkHYGFtCugouCp9Xvp2eGP4xCArKmrCVA/HJam0 Homestead
The key's randomart image is:
+---[RSA 2048]----+
| .+*+ooo |
| .o++o. . |
|. . . o. . |
| + . . . |
|+ + o S |
|+=.+ ... |
|*+*E oo o |
|B=.o...+ = |
|= o. ++* |
+----[SHA256]-----+
注意上面我們的檔名可以替換成自定義的名字,在輸入密碼的步驟時可以直接回車密碼留空。
接下來我們需要把配置檔案的名字替換成我們剛剛設定的檔名:
authorize: ~/.ssh/your_rsa_name.pub
keys:
- ~/.ssh/your_rsa_name
那麼這一步配置就OK了。
下一步我們看到這一段配置:
folders:
- map: ~/Code
to: /home/vagrant/Code
sites:
- map: homestead.app
to: /home/vagrant/Code/laravel/public
databases:
- homestead
folders
配置中,map
之後的路徑對應的是本地檔案的路徑,to
對應的是本地檔案對映到虛擬機器中對應的路徑。
sites
配置中,map
之後的字串是我們在瀏覽器中輸入的可以用來訪問我們專案的地址,可以根據個人喜好來,比如myproject.test
或者myproject.production
,而to
對應的是虛擬機器中專案檔案的public
路徑,類似於apache
預設的/var/www/html
資料夾,指向這個資料夾可以直接訪問我們的專案。
databases
配置中,是我們指定需要建立的資料庫名稱,預設為homestead
,我們可以新增多個需要使用的資料庫名稱。
下面我給出一個配置的例子:
folders:
- map: ~/webdev
to: /home/webdev
sites:
- map: phantastic.test
to: /home/webdev/phantastic/public
databases:
- phantastic
這樣我們的Homestead
就配置完成。現在我們可以開啟虛擬機器了:
$ cd ~/Homestead
$ sudo vagrant up
注意,一定要加上sudo
,也不能直接切換成su
執行命令。
等虛擬機器啟動好後,我們輸入
sudo vagrant ssh
就可以ssh
進入虛擬機器了。
要訪問我們的專案,我們還有一個很重要的步驟:更改一下hosts
檔案:
$ sudo su --
$ vim /etc/hosts
127.0.0.1 localhost
127.0.1.1 EagleEye
192.168.10.10 phantastic.test
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
可以看到,我們將我們的專案地址和對應虛擬機器ip
地址加入到了hosts
檔案中。如果我們有多個專案,那麼我們可以將每一個專案的地址新增進去,專案對應的ip
全部都是192.168.10.10
。
現在我們就可以開啟瀏覽器訪問我們的專案了!開啟瀏覽器,輸入phantastic.test
,瀏覽器會自動訪問該地址對應的專案。
好了,那麼今天我們就講解到這裡,如果有闡釋不清晰的地方,可以留言多多交流。