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 LTSVagrant 2.0.0版本以及Homestead 5.1.0

好了,廢話不多說,趕快開始吧!


首先還是需要下載相應的安裝包文件。

https://www.vagrantup.com/downloads.html 可以下載到Vagrant的最新版本:
Vagrant Download

注意,我們下載Debian 64-bit版本。下載完成後,雙擊下載的.deb文件進行安裝(需要驗證管理員密碼)。完成後,我們繼續下一步。


下面我們需要安裝Virtual Box。請訪問以下鏈接尋找適合你係統的版本,這裏我們使用的是Ubuntu 16.04 LTS 64bit,所以我們AMD64版本。注意,圖片中我們看到的是5.2.0版本,但是該版本不支持vagrant 2.0.0,所以我們需要下載VBox 5.1版本(圖片下部的鏈接爲5.1版本):
Virtual Box Installation
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的公鑰和私鑰。在本地環境輸入以下命令:

eagle@EagleEye: cd ~/.ssh
eagle@EagleEye: ~/.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,瀏覽器會自動訪問該地址對應的項目。

好了,那麼今天我們就講解到這裏,如果有闡釋不清晰的地方,可以留言多多交流。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章