40
Laravel 工作坊 應用程式佈署 shengyou @ 彰師大資工系學會 (2014.12.14)

應用程式佈署

Embed Size (px)

Citation preview

Laravel 工作坊應用程式佈署

shengyou @ 彰師大資工系學會 (2014.12.14)

階段任務• 將現階段已經完成的程式碼,佈署至

pagodabox PaaS 平台、取得公開網址,並可在瀏覽器裡瀏覽專案網站

應用程式佈署• 把寫好的程式碼放到公開的網路主機,供使用者可以瀏覽、使用這些應用程式。這個從個人的開發機將原始碼放到網路主機的動作,稱之為佈署

• 本工作坊將示範如何將寫好的程式碼佈署至 PaaS 平台供測試、練習之用

★ 參考:http://en.wikipedia.org/wiki/Software_deployment

共享主機• 一般常見的網路主機往往是 共享主機

(shared hosting),常會有以下缺點:

- PHP 版本過舊

- 資源、頻寬共搶/分配不均

- 無法安裝額外套件

什麼是 PaaS?• PaaS = Platform as a Service

• 平台即服務 是一種雲端運算服務,由服務供應商提供網路、伺服器、作業系統、儲存空間等,讓使用者能將其原始碼部署至雲端。使用者不需要管理與控制雲端基礎設施,只需自行處理應用程式部署與原始碼管理。

★ 參考:http://en.wikipedia.org/wiki/Platform_as_a_service

使用 PaaS 佈署的好處• 一般而言,PaaS 平台都支援版本控制、

PHP 版本設定、多種資料庫、動態因應流量擴展等功能

• 因此,你只需要專注在程式開發即可,其他所有工作包括主機安裝、佈署設定、流量擴充等都可以由 PaaS 自動完成

pagoda box 簡介

什麼是 pagoda box?• 一個 PaaS 服務,註冊帳號後,就可以隨時佈署多個應用程式至該平台,並取得動態網址,供開發人員測試、Demo

• 免費額度僅能使用有限的運算能力

(200MB RAM)、10MB 資料庫、且若應用程式無人瀏覽時,反應速度會自動降低

★ 參考:https://pagodabox.com/cloud-hosting-price

申請 pagoda box 帳號https://pagodabox.com/

申請 pagoda box 帳號

佈署前置工作

產生 SSH Key• pagoda box 的遠端連線使用 SSH 連線加密,因此要先產生一組 Key 做為加密金鑰

• 打開 comder.exe 並輸入以下指令

★ SSH Key 產生教學:http://help.pagodabox.com/customer/portal/articles/202068#setup-ssh-keys-bash

$  ssh-­‐keygen  -­‐t  rsa  -­‐C  "{請換成您的  email  }"

畫面會請您輸入  passphrase  (密碼)  可不輸入完成後會產生兩個檔案:C:\{家目錄}\.ssh\id_rsa  (私鑰)

C:\{家目錄}\.ssh\id_rsa.pub  (公鑰)

登記 SSH Key• 接著,要把自己的公錀登記在 pagoda box

的帳號內,這樣 pagoda box 才會允許我們連上主機

• 請先登入 pagoda box,然後進入帳號設定

https://dashboard.pagodabox.com/account/edit

★ SSH Key 登記教學:http://help.pagodabox.com/customer/portal/articles/202068#add-ssh-pagoda

設定 SSH Key

帳號設定已經登記的 Key

增加新的 Key

Key 的名稱 (可自取)

公錀內容

增加 Boxfile• 請在專案資料夾內新增一個 Boxfile 檔案

• pagodabox 是透過讀取 Boxfile 了解應用程式所需要的所有元件,並依照 Boxfile 內的指令進行自動化佈署

• 請參考教學範例內的 Boxfile 進行設定

★ Boxfile 說明:http://help.pagodabox.com/customer/portal/articles/175475

設定 database.php• 由於 pagoda box 的 MySQL 資料庫是在第一次佈署時自動建立的,因此使用者帳號/

密碼等資訊,會由系統環境變數傳給

Laravel 使用

• 設定 production 的資料庫連線資訊從系統環境變數接受

設定 database.php• 請參考教學懶人包內的 app/config/

database.php 設定 production 的連線資訊

★ database 設定說明:http://help.pagodabox.com/customer/portal/articles/175426

安裝 adminer• 若要直接連上 pagoda box 的 MySQL,需要安裝額外的 ruby 工具。但其實可透過自行安裝網頁版工具來瀏覽 MySQL 內容

• 請將教學範例內的 adminer 資料夾下載後,放在 public 資料夾底下

• 請先在本機端測試使用

★ adminer 官方網站:http://www.adminer.org/

.htaccess 調整• 由於安裝了 adminer,在瀏覽器內瀏覽ad

發生網頁無限跳轉迴圈。需要將 Laravel

原生的 .htaccess 設定註解掉一行

• 請參考教學範例內的 .htaccess 進行設定

執行佈署

pagoda box 佈署流程

★ 參考:http://help.pagodabox.com/customer/portal/articles/174146-launching-your-first-app

SourceTree

pagoda box

web

db

client

local

commit

deploy

分析 Boxfile

create

browse

啟始一個新的 App

https://dashboard.pagodabox.com/

設定 App 名稱

自定 App 名稱

選擇由空的儲存庫開始

選擇佈署模式

記下這組資訊

SourceTree 設定

我們要根據 pagoda box 提供的遠端儲存庫資訊,設定本機端的儲存庫

設定儲存庫

新增 remote

設定 remote 資訊

把 pagoda 提供的資料填在這

remote 設定完成

把程式 Push 到遠端

都要打勾

都要打勾

pagoda box 佈署中

展開看佈署過程 log

pagoda box 的系統動作

pagoda box 佈署完畢

佈署完成!

pagoda box 佈署指令• 將 pagoda box 儲存庫設定為本機儲存庫的遠端

• 將本機儲存庫的檔案推送 (push) 至 pagoda

box 主機

$  git  remote  add  pagoda  [email protected]:{App  名稱}.git

$  git  push  pagoda  -­‐-­‐all

★ 參考:http://help.pagodabox.com/customer/portal/articles/174146#launch-your-app-on-pagoda-box

驗證佈署結果• 瀏覽程式碼上線成果

查看 App 線上狀態

檢視 App 線上狀態

系統各元件狀態

各系統設定功能

佈署版本設定

瀏覽資料庫內容• 打開瀏覽器,輸入 App 公開網址後加 /

adminer/ 即可進入 adminer 登入頁

輸入 pagoda 的資料庫連線資訊

取得資料庫連線資訊• 進入 App 系統狀態頁,查詢連線資訊

展開

展開後取得 MySQL 連線資訊

0 downtime 佈署

★ 參考:http://blog.pagodabox.com/wp-content/uploads/2012/02/deploy_hooks_diagram.png

SourceTree

pagoda boxweb 1

dblocal

commit

deploy

分析 Boxfile

create

browse

web 2

client

replace

browse

階段檢查表• 確認有 pagoda box 的帳號並可登入

• 啟動一個 pagoda box App

• 確認 SourceTree 的 remote 設定

• 確認 App 有可瀏覽的公開 URL,並可成功瀏覽

問與答學員可開始練習、實作

工作坊總結• 在這個工作坊裡,我們透過 12 個學習主題,從開發環境建置與工具介紹、版本控制、Laravel MVC 及 Blog 功能實作,以及上線佈署等。期待能從這一連串的實作中,了解 Laravel 應用程式開發的技巧、享受開發的樂趣!