SlideShare a Scribd company logo
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:{家目錄}.sshid_rsa	
  (私鑰)
C:{家目錄}.sshid_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	
  git@git.pagodabox.com:{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 box
web 1
db
local
commit
deploy
分析 Boxfile
create
browse
web 2
client
replace
browse
階段檢查表
• 確認有 pagoda box 的帳號並可登入
• 啟動一個 pagoda box App
• 確認 SourceTree 的 remote 設定
• 確認 App 有可瀏覽的公開 URL,並可成功
瀏覽
問與答
學員可開始練習、實作
工作坊總結
• 在 個工作坊裡,我們透過 12 個學習主
題,從開發環境建置與工具介紹、版本控
制、Laravel MVC 及 Blog 功能實作,以及
上線 署等。期待能從 一連串的實作
中,了解 Laravel 應用程式開發的技巧、
享受開發的樂趣!

More Related Content

PDF
開發環境建置
PDF
Model 設定與 Seeding
PDF
Package 安裝與使用
PDF
使用 laravel 的前與後
PDF
開發環境建置
PDF
使用 Controller
PDF
View 與 Blade 樣板引擎
PDF
COSCUP 2016 Laravel 部署工作坊 - 部署指南
開發環境建置
Model 設定與 Seeding
Package 安裝與使用
使用 laravel 的前與後
開發環境建置
使用 Controller
View 與 Blade 樣板引擎
COSCUP 2016 Laravel 部署工作坊 - 部署指南

What's hot (20)

PDF
Package安裝與使用
PDF
應用程式部署
PDF
使用 Controller
PDF
專案啟動與環境設定
PDF
課程簡介
PDF
開發環境建置
PDF
給你一個使用 Laravel 的理由
PDF
驗證與訊息
PDF
使用者認證
PDF
Model 設定與 Seeding
PDF
Route路由控制
PDF
啟動 Laravel 與環境設定
PDF
View 與 Blade 樣板引擎
PDF
工作坊簡介
PDF
Laravel - 系統全攻略(續)
PDF
開發工具與環境建置
PDF
工作坊總結
PDF
Route 路由控制
PDF
工作坊總結
PDF
Laravel - 系統全攻略
Package安裝與使用
應用程式部署
使用 Controller
專案啟動與環境設定
課程簡介
開發環境建置
給你一個使用 Laravel 的理由
驗證與訊息
使用者認證
Model 設定與 Seeding
Route路由控制
啟動 Laravel 與環境設定
View 與 Blade 樣板引擎
工作坊簡介
Laravel - 系統全攻略(續)
開發工具與環境建置
工作坊總結
Route 路由控制
工作坊總結
Laravel - 系統全攻略
Ad

Viewers also liked (14)

PDF
View 與 Blade 樣板引擎
PDF
Route 機制
PDF
專案啟動與設定
PDF
Schema & Migration操作
PDF
CRUD 綜合應用
PDF
開發流程與工具介紹
PDF
使用者認證
PDF
Model & Seeding整合
PDF
使用 Eloquent ORM
PDF
Migrations 與 Schema 操作
PDF
PHP 語法基礎與物件導向
PDF
Migrations 與 Schema操作
PDF
CRUD 綜合運用
PDF
Eloquent ORM
View 與 Blade 樣板引擎
Route 機制
專案啟動與設定
Schema & Migration操作
CRUD 綜合應用
開發流程與工具介紹
使用者認證
Model & Seeding整合
使用 Eloquent ORM
Migrations 與 Schema 操作
PHP 語法基礎與物件導向
Migrations 與 Schema操作
CRUD 綜合運用
Eloquent ORM
Ad

Similar to 應用程式佈署 (6)

PDF
[LaravelConf Taiwan 2018] 如何正確佈署 Laravel 專案
PDF
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
PDF
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
PPTX
Phalcon2014 Startup
PDF
如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化
PPTX
hicloud PaaS 雲創平台 PHP 運行環境介紹
[LaravelConf Taiwan 2018] 如何正確佈署 Laravel 專案
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
Phalcon2014 Startup
如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化
hicloud PaaS 雲創平台 PHP 運行環境介紹

More from Shengyou Fan (20)

PDF
[JCConf 2024] Kotlin/Wasm:為 Kotlin 多平台帶來更多可能性
PDF
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
PDF
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
PDF
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
PDF
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
PDF
How I make a podcast website using serverless technology in 2023
PDF
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
PDF
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
PDF
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
PDF
Using the Exposed SQL Framework to Manage Your Database
PDF
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
PDF
[COSCUP 2022] Kotlin Collection 遊樂園
PDF
初探 Kotlin Multiplatform
PDF
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
PDF
[PHP 也有 Day #64] PHP 升級指南
PDF
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
PDF
Composer 經典食譜
PDF
老派浪漫:用 Kotlin 寫 Command Line 工具
PDF
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
PDF
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[JCConf 2024] Kotlin/Wasm:為 Kotlin 多平台帶來更多可能性
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
How I make a podcast website using serverless technology in 2023
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
Using the Exposed SQL Framework to Manage Your Database
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] Kotlin Collection 遊樂園
初探 Kotlin Multiplatform
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
[PHP 也有 Day #64] PHP 升級指南
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
Composer 經典食譜
老派浪漫:用 Kotlin 寫 Command Line 工具
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API

應用程式佈署