# laravel到 heroKu (Dahis筆記)
Heroku 的計費單位與方式
單位:dynos(1 dyno = 1 小時)
計費:所有專案運行的時間總和 1000 dynos / 月(免費方案)
1️⃣ 在 Laravel 根目錄產生 Procfile,並填入以下資料
```scss
web: vendor/bin/heroku-php-apache2 public/
```
- Procfile 的檔名?
Procfile 不需要副檔名與任何前綴(像是點 .Procfile 的點),檔案名稱必定要吻合
- Procfile 的用途?
當專案被部署上 Heroku 時,Heroku 需要透過解析裡面的字串以啟動伺服器;以 Laravel 來說,它會透過 heroku-php-apache2 這個套件啟動伺服器
- 為什麼後面有 public/?
Laravel 用來部署的檔案會被放入 public 資料夾中,其中的 index.php 就是網站的進入點,所以 Heroku 使用的伺服器會以 public 資料夾當作網頁的根目錄
2️⃣ 將專案上傳至 Github,並建議使用一個 production 分支作為部署用的分支(此分支內的根目錄一定要有 Procfile)
3️⃣ 在 Heroku 中,將 Heroku 專案與 Github 儲藏庫綁定
Heroku 專案名稱 → Deploy → App connected to GitHub 設定

設定完成的畫面

其它部署相關選項
4️⃣ 按下手動部署(Manual deploy)區塊中的 Deploy Branch 將分支上的程式碼部署至 Heroku

部署成功的畫面
5️⃣ 接著回到 Heroku 的頁面上方,按下右上角的 Open app
6️⃣ 然後迎接你的第一個錯誤:500 | Server Error
解法:在 Heroku 的環境變數中加入 APP_KEY(這個動作會在你輸入 php artisan key:gen 完成,但在 Heroku 需要手動建立!)
在右上角的 More → Run console 執行以下指令:php artisan key:generate --show

執行指令獲得 APP_KEY

接著複製左邊的所有黃色字串 base64:+m1LhZzuf/iReQtCS+XiNC1tH9AyhfAQSRRhdldfDhs=
然後 ctrl+c 是沒有用的所以記得用右鍵複製 :)
將剛才複製的金鑰放到 Heroku 的環境變數中,Heroku 專案 → Settings → Config Vars
並在 Key / Value 的輸入框中分別輸入 APP_KEY 與剛才複製的金鑰,接著按下 Add 新增
接著重新按下剛剛的 Open app 按紐,應該會看到網站出現了!

在這邊新增的每一組 Key / Value,都相當於本地端的 .env 檔案中的 Key / Value
7️⃣ 重新調整 asset 的載入方式
###### tags: `Laravel`