如何重建由GitHub下載的Laravel專案?
目前我都將所有範例的source code放在Github上,但有人跟我反應抓下來的Laravel專案無法執行,並不是我故意留一手
,而是git採用了.gitignore
機制,並沒有所有檔案都進Github,所以整個專案抓下來後,必須要有重建
的步驟,整個專案才會還原。
Version
Laravel 5.1.24
深入探討.gitignore
在每個Laravel專案目錄下,都有一個隱藏的.gitignore
檔,其內容如下 :1
2
3
4
5/vendor
/node_modules
Homestead.yaml
Homestead.json
.env
它所描述的是沒進
git repository的目錄與檔案。
- /vendor : 負責放composer所下載的PHP package,其中包含Laravel的完整source code。
- /node_modules : 負責放npm所下載的Node.js package。
- Homestead.yaml : 負責描述Homestead vm資訊。
- Homestead.json : 負責描述Homestead vm資訊。
- .env : 負責放Laravel的全域資訊。
Homestead.yaml
與Homestead.json
只會使用一個而已,通常使用Homestead.yaml
。
其中最重要的是/vendor
與.env
,沒有這兩個,Laravel會完全跑不起來。
也因為這些檔案都沒有進git repository,所以當然也不會上Github,因此當你git clone
一個專案下來時,Laravel一定跑不起來。
還原Laravel專案
git clone
1 | oomusou@mac:~$ git clone https://github.com/oomusou/xxx MyProject |
還原vendor目錄
1 | oomusou@mac:~/MyProject$ composer install |
注意是composer install
,不是composer update
。
還原node_modules目錄
1 | oomusou@mac:~/MyProject$ npm install |
若你有用到一些Node packages,如Laravel Elixir,則可選擇執行
npm install
。
還原.env
1 | oomusou@mac:~/MyProject$ cp .env.example .env oomusou@mac:~/MyProject$ php artisan key:generate |
只單純從.env.example
複製而來的.env
還無法執行Laravel,因為.env.example
的APP_KEY
為SomeRandomString
,必須下php artisan key:generate
重新產生APP_KEY
。
重建Homestead.yaml
1 | oomusou@mac:~/MyProject$ php vendor/bin/homestead make |
啟動Homestead
1 | oomusou@mac:~/MyProject$ vagrant up |
等開機完成,至少Laravel首頁就出現了。
重建資料庫
若要重建資料庫,就要連進去Homestead才能migration與seeding,無法在OS X做。1
oomusou@mac:~/MyProject$ vagrant ssh
vagrant@MyProject:~$ cd MyProject
vagrant@MyProject:~/MyProject$ php artisan migrate
vagrant@MyProject:~/MyProject$ php artisan db:seed
Conclusion
- 這些步驟不只適用於Github,其他git server都適用,主要是因為這些package不應該進git repository,且
Homestead.yaml
與.env
會存放帳號
與密碼
,會有security issue不適合放進git repository,所以特別在.gitignore
加以排除,導致專案下載後,必須一些步驟才能還原專案。