close

  筆記

如何在Heroku上佈署做好的laravel網站。

Step 1.看清楚官方網站的Documentation!

Step 2. 照著官方網站做

Step 3.完成!!

 

此篇稍微紀錄一下我在Heroku文件上的認知,其實我也不清楚有沒有誤解文件意義XDD

首先!! 這篇僅供php人士參考,其他Rails or django 適不適用我就不清楚了.

 

從官網安裝Heroku程式

 

1.先將專案上傳至Github

1.1 cd Current Directory

1.2 git init  -->將當前的專案位置初始化

1.3 專案目錄下,新增procfile, 內容為

web: vendor/bin/ heroku-php-apache2 public/  

procfile格式為: <process type> : <command>

1.4 heroku create   -->創建app,此時你會需要再heroku註冊你自己的專屬帳號!!

1.5 git push heroku master   -->透過git將master的內容推送至heroku

 

 

 

再推送完之後,因為你的heroku帳戶目前沒有聘請任何人幫你工作,所以你要找人來幫你運行你的網頁

Dyno : 在heroku上,負責工作的環境,是一種lightweight linux container, 

每個Heroku帳號都可以申請dyno,基於我沒有付費,所以我只使用free版本的dyno

dyno有分成幾種等級

1. free dyno

2. hobby dyno

3. standard dyno

4. performance dyno

dyno 類型

1.web  目前只研究web

2.worker

3.one-off

 

而其中free dyno如果你的帳號是有驗證過的,free dyno一個月可以給你使用1000個小時

如果你的帳號沒有驗證則只能使用550小時。 且free dyno有個小缺點就是,你不使用你的服務時,他會呈現sleep狀態

有點像是windows的睡眠。

 

回到正題,在push heroku master之後,使用 

Command Line :    heroku ps:scale web=1

上述代表我們要在dyno中啟用web的服務!!!!

就像是你在linux上架設apache2 or nginx一樣,一鍵完成

 

Heroku 有一個好處容易擴充你的硬體需求,你只要花錢升級成standard or performance 都可以使用 heroku ps:scale web = 1 or 2 or 3 or 4

去擴充,且根據官方文件描述 通常一個web 就可以同時處理上千的request了,但是你必須確保你的開發平台是支援concurrent requests的!!!!!

通常dyno之前有許多安全機制,所以不用擔心會不會被其他人所上傳的服務入侵

 

dyno Manager,Heroku 為了確保上傳的系統都可以正常的運作,通常會檢測服務是否有bug或者陷入瘋狂消耗系統資源的情況下,會restart 你的dyno service,

另外每天固定會restart一次,週期為24Hour + 216分鐘,用於確定服務正常運行,

 

在要上傳的網頁專案下,我們必須新增一個procfile,因為在雲端上有 heroku-buildpack的工具

在dyno初始化後,dyno會去讀取我們專案根目錄下的procfile,並根據其中的資料作處理

procfile格式為: <process type> : <command>

 

web: vendor/bin/ heroku-php-apache2 public/  

 

我們在該檔案中放置上述列,描述我們是web 網頁服務,並且執行vendor/bin/heroku-php-apache2 指定我們的根目錄為public資料夾

這也是laravel常常使用的地方,而通常heroku apache的default已經有rewriteEngin on了,所以我們並不太需要特別去設定

如果想要讓自己在本地運行環境測試的話,可以使用

composer require heroku/heroku-webpack-php-apache2 --dev

將heroku 測試的專屬包抓到自己的環境進行測試

安裝完畢可以考慮去/vendor/heroku/....     --help

顯示相關的指令

 

在經過procfile之後,將他git push heroku master,就會自動讀取內容並且完成佈署了

而且heroku會自動幫你的網頁加上https,SSL的安全驗證憑證

 

剛好遇到一個BUG是,如果你的laravel  Blade有asset('app\app.css')去獲取你的css file的話

你需要使用asset('app\app.css', true),因為這樣會幫你把css <link href="https開頭的連結"  >

 

在https連結之中,是不允許使用http的url的,在chrome內會被中斷連接導致你的css file load不進來,網頁就跑板拉!!!!!

 

.env file也需要push到laravel,不然有些屬性讀不到,通常.ignore會忽略掉.env的檔案

別忘記把它也push上去了

 

Heroku相關指令整理

 

heroku create

 

git push heroku master

 

heroku ps:scale web=1

 

config var 可以設定相關的環境變數

 

heroku info

 

git push heroku anotherBranch:master  ---> 使用其他branch,來當作heroku節點。

 

Procfile不能有副檔名(ext)

heroku apps:rename newname  -->指定哪個app的名稱,修改為newName

,heroku rename newname  --> 將當前所在位置的專案,rename為 newname.

 

arrow
arrow

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