close

所有的.env,皆透過heroku dashboard的config設定,這樣可以保護secrete token的資料等等,給單一人管理。

env()  --> 是laravel包裝原生php getenv() method,讓env()可以有default value.

heroku addon:    --> dyno type hobby-dev.

上傳完網站後,就要將網站的本地端database連結移駕到heroku的線上的database,

不然所有的東西就串不起來了!!

基於Laravel使用PDO的關係,我們在這次的佈署上算是已經十分的容易了!!!

首先我們會利用到上一章提到的Config Variable,其實這個非常好用,

他可以直接在heroku網頁的dashboard 個人app那邊改動,你就不需要一直在本地端改完後git push heroku master

這次有用到的變數

APP_DEBUG  設定為true

APP_KEY  設定為laravel key

DATABASE_URL  當你在heroku綁定完postgre之後就會自動幫您新增了

 

基本上只要參考官方文件

https://devcenter.heroku.com/articles/heroku-postgresql#connecting-in-php

上面這連結內網頁,並且搜尋

Connecting with Laravel

  照著文件做就沒問題啦!!

只要修改Laravel Project的Config/database.php  下面三個部分

 

主要就是getenv(  ) 會去抓dyno的環境變數,然而我們在Heroku dashboard已經有設定Config Variable了,所以就抓到

並且解析對應的host database port user password等等

讓laravel可以依照Config Variable的參數去做連線。

 

在連線完後,你會發現因為Postgre是新開的DB 上面連一個東西都沒有

所以你需要呼叫heroku run php artisan migrate,就跟本地端一樣他會去database/migrations/尋找你的migration

並且一個一個按照裡面的說明建立Table。

這裡必須要注意到一點,也就是我踩到的坑,雖然這個坑是因為我還沒看完laravel的Document造成的,還是紀錄一下

在Laravel的Model中,可能會有向下圖相關的屬性和方法,而今天遇到的問題就是$table = 'posts'  打成了 $table = 'Posts'

p變成了大寫,

根據  https://stackoverflow.com/questions/6134006/are-table-names-in-mysql-case-sensitive 說法,

在windows中Database其實是Case Insensitive的,

但是今天我們使用heroku,在官方文件說到Heroku's dyno is a lightweight Linux container 所以,我們git push
heroku master之後,

一直發現Can't find Relation Post table, Linux內的database是Case sensitive的!!!!!

 

最重要的還是在命名時,確保變數 數值的正確性,有時候寫程式亂命名反而會砸到自己的腳...

參考連結:

https://www.youtube.com/watch?v=R8A3h3y5Z8c

arrow
arrow
    文章標籤
    postgresql heroku deploy
    全站熱搜

    蕭瑞文 發表在 痞客邦 留言(0) 人氣()