之前安裝的homestead系統版本為Ubuntu14.04,現業務需要,需升級為16.04,在虛擬機中直接升級完成后,無法啟動。正好趁這個機會把所有需要升級的都升級一遍,全新安裝并Laravel運行環境。
1. 準備工作
- 備份好數據后,徹底刪除原來的運行環境,包括Homestead文件夾,虛擬機目錄,.homestead 文件夾,box(
vagrant box remove boxname
)等。 - 下載并安裝 Virtualbox
- 下載并安裝 vagrant
- 下載homestead離線安裝包 virtualbox,版本號的數字自行修改,如2.0.1
- virtualbox 可啟動,命令行中
vagrant -v
顯示vagrant版本號,準備工作完成。
2. 開始安裝
官方文檔給出的安裝方式為在線安裝,蛋疼的網速想要在短時間內安裝成功非常困難,所以這里采用離線安裝方式。
新建一個目錄,我這里命名為 vagrant,將準備工作下載好的 virtualbox.box 拷貝到該目錄下
-
添加box,這里步驟2與步驟3實現的效果一致,但步驟2添加成功后可能會有更新問題,推薦跳過此步驟直接執行步驟3.
vagrant box list
查看目前系統中已有的box,新加的box盡量不要與原有的box重名。
vagrant vagrant box add laravel/homestead virtualbox.box
,如果box文件在當前目錄下,直接添加文件即可,如果不在,需要寫明全路徑。看到success添加盒子就成功了。
-
在virtualbox.box鏡像所在目錄創建metadata.json,輸入以下內容
{ "name": "laravel/homestead", "versions": [{ "version": "2.0.0", "providers": [{ "name": "virtualbox", "url": "file://virtualbox.box" }] }] }
其中,url最好寫box的全路徑。然后輸入以下命令添加box
vagrant box add metadata.json
查看已安裝的box
vagrant box list
3. 克隆官方倉庫
homestead,vagrant,virtualbox之間的關系梳理
- homestead鏡像就是laravel官方為了方便開發者,將一系列的開發環境、軟件打包成一個鏡像供大家使用,當前homestead包含以下內容:Ubuntu 16.04,Git,PHP 7.1,Nginx,MySQL,Postgres,Composer,Node (With Yarn, Bower, Grunt, Gulp) 等。
- vagrant可以看作是對virtualbox或vmware的一個高級封裝,本質就是調用了一些virtualbox和vmware開放出來的api
- homestead git倉庫呢則是laravel官方對于homestead虛擬機的一些配置文件,里面有一些方便的linux腳本
clone 版本庫
git clone https://github.com/laravel/homestead.git Homestead
4. 配置 Homestead
- 進入到clone的目錄中運行 init.sh,這樣就在家目錄中生成一個.homestead 的目錄,里面包含homestead虛擬機的配置文件 Homestead.yaml (homestead在github上的版本已更新到5.1,有一些文件發生了變動。最主要的變動是當運行init.bat或init.sh時候,幾個文件將不再復制到家目錄的.homestead文件,而是直接被復制到homestead項目的根目錄中。原先家目錄下的.homestead可以直接刪掉了!)
- 修改該文件
主要需要改動的就是 folders這一項,將本機的一個目錄共享給虛擬機。ip: "192.168.10.10" memory: 2048 cpus: 1 provider: virtualbox authorize: ~/.ssh/id_rsa.pub keys: - ~/.ssh/id_rsa folders: - map: /myCodeDir to: /home/vagrant/www sites: - map: homestead.app to: /home/vagrant/www/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
rsa 公鑰私鑰路徑一定要對,不然無法啟動,沒有的話通過git bash或其他linux環境輸入以下命令生成ssh-keygen -t rsa -C "vagrant@homestead"
5. 啟動 homestead
- 進入到homestead目錄(git clone的那個)
vagrant up
,耐心等待一會就可以。 - 修改本地的hosts文件,添加homestead虛擬機的DNS
- 沒有報錯就正常啟動了。 輸入命令
vagrant ssh
進入虛擬機。 - 升級,配置nginx等。