SlideShare a Scribd company logo
1 of 80
Download to read offline
部署指南
Laravel 部署⼯工作坊
2016/08/21
范聖佑	
  Shengyou	
  Fan
COSCUP 2016 - Laravel 部署⼯工作坊
⼯工作坊三階段
• 在本機端將範例應⽤用程式跑起來
- 確認學員了解運⾏行環境的條件
- 了解範例應⽤用程式的機制及程式碼
• 將可運作的應⽤用程式打包後部署
- 了解如何打包應⽤用程式
- 了解如何部署應⽤用程式⾄至對應平台
• 更新應⽤用程式後重新部署
- 了解如何更新應⽤用程式版本
COSCUP 2016 - Laravel 部署⼯工作坊
運⾏行 Laravel 的基本條件
• HTTP 伺服器 (需⽀支援 rewrite 才可使⽤用 Pretty URL)
• PHP 最低環境需求
- PHP >= 5.5.9 (5.1 以上可⽤用 PHP 7)
- OpenSSL PHP Extension
- Mbstring PHP Extension
- Tokenizer PHP Extension
• 資料庫 (⽀支援多種資料庫系統)
COSCUP 2016 - Laravel 部署⼯工作坊
範例應⽤用程式
★ 線上版: http://todo.laravel-dojo.com/
COSCUP 2016 - Laravel 部署⼯工作坊
實作功能
• ⼀一個簡易的 ToDo 應⽤用程式
- 4 個 Route
- 1 個 Controller
- 1 個 Model (1 個 migration)
- 1 個View (1 個 master、1 個 child)
- 1 個Validation
★ 範例源始碼:	
  
http://github.com/laravel-­‐dojo/201608-­‐coscup-­‐sample-­‐app	
  
COSCUP 2016 - Laravel 部署⼯工作坊
建置本地端環境
Mac OS UbuntuWindows
MAMP apt-getwagon
COSCUP 2016 - Laravel 部署⼯工作坊
編輯器選擇
• Editor 型
- Visual Studio Code
- Atom
- Sublime Text 3
• IDE 型
- PhpStorm
- Eclipse
- Netbeans
COSCUP 2016 - Laravel 部署⼯工作坊
下載範例應⽤用程式
• 請先到 Laravel 道場的 Github:
• 下載範例應⽤用程式:
http://github.com/laravel-­‐dojo/201608-­‐coscup-­‐sample-­‐app
//	
  使⽤用 git 指令
$	
  git	
  clone	
  git@github.com:laravel-­‐dojo/201608-­‐coscup-­‐
sample-­‐app.git
P.S 或是直接下載 zip 檔
COSCUP 2016 - Laravel 部署⼯工作坊
安裝相依套件
• 使⽤用 Composer 指令安裝相依套件
//	
  先安裝相依套件	
  
$	
  composer	
  install	
  -­‐-­‐no-­‐scripts	
  
//	
  產⽣生 .env、APP_KEY 並最佳化應⽤用程式	
  
$	
  composer	
  run-­‐script	
  post-­‐root-­‐package-­‐install	
  
$	
  composer	
  run-­‐script	
  post-­‐install-­‐cmd	
  
$	
  composer	
  run-­‐script	
  post-­‐create-­‐project-­‐cmd
COSCUP 2016 - Laravel 部署⼯工作坊
建⽴立資料庫
• 開啟 MySQL 管理介⾯面,建⽴立本地端資料庫
COSCUP 2016 - Laravel 部署⼯工作坊
設定連線資訊
//	
  設定 .env	
  
APP_ENV=local	
  
APP_DEBUG=true	
  
APP_KEY=SomeRandomString	
  
APP_URL=http://localhost	
  
DB_CONNECTION=mysql	
  
DB_HOST=host	
  
DB_PORT=3306	
  
DB_DATABASE=todo	
  
DB_USERNAME=username	
  
DB_PASSWORD=password
COSCUP 2016 - Laravel 部署⼯工作坊
Migrate 資料庫
$	
  php	
  artisan	
  migrate
透過	
  artisan	
  執⾏行	
  migrate	
  指
令,將資料表結構在資料庫裡重建
COSCUP 2016 - Laravel 部署⼯工作坊
測試應⽤用程式
COSCUP 2016 - Laravel 部署⼯工作坊
部署平台
COSCUP 2016 - Laravel 部署⼯工作坊
Amazon Elastic Beanstalk
• 直接使⽤用 AWS 平台上現有元件 (EC2、RDS…等) 組
合⽽而成的部署服務
• 可彈性設定⾃自動擴展的⽅方式
• 結合指令列⼯工具更可以達成版本管理及⾃自動化部署
的進階功能
• 本⼯工作坊僅先利⽤用 Elastic Beanstalk 將範例應⽤用程式
部署⾄至 AWS 取得對外網址
COSCUP 2016 - Laravel 部署⼯工作坊
部署流程
• 登⼊入 AWS 管理介⾯面
• 切換⾄至 Elastic Beanstalk
• 建⽴立⼀一個新的應⽤用程式
• 修改設定
- Document Root
- 環境變數
• Migrate 資料庫
• 瀏覽⾸首⾴頁
COSCUP 2016 - Laravel 部署⼯工作坊
登⼊入 AWS Console
• 打開瀏覽器
• 登⼊入 AWS Management Console
https://aws.amazon.com/
COSCUP 2016 - Laravel 部署⼯工作坊
進⼊入 Elastic Beanstalk
• 從⼊入⼝口⾴頁選擇 Elastic Beanstalk 管理功能
COSCUP 2016 - Laravel 部署⼯工作坊
建⽴立新應⽤用程式
• 使⽤用畫⾯面右上⾓角的 Create New Application 建⽴立新應
⽤用程式
COSCUP 2016 - Laravel 部署⼯工作坊
設定應⽤用程式名稱
COSCUP 2016 - Laravel 部署⼯工作坊
建⽴立 Web Server
COSCUP 2016 - Laravel 部署⼯工作坊
設定環境類型
COSCUP 2016 - Laravel 部署⼯工作坊
建⽴立應⽤用程式打包檔
• 將範例應⽤用程式打包成⼀一個 zip 檔
COSCUP 2016 - Laravel 部署⼯工作坊
上傳應⽤用程式
COSCUP 2016 - Laravel 部署⼯工作坊
設定網址
COSCUP 2016 - Laravel 部署⼯工作坊
選擇建⽴立 RDS
COSCUP 2016 - Laravel 部署⼯工作坊
設定 EC2 資訊
全部⽤用預設值即可
COSCUP 2016 - Laravel 部署⼯工作坊
設定環境變數
先跳過不設,等⼀一下會再設定
COSCUP 2016 - Laravel 部署⼯工作坊
設定 RDS
設定 RDS 帳號密碼
COSCUP 2016 - Laravel 部署⼯工作坊
設定權限
預設值即可
COSCUP 2016 - Laravel 部署⼯工作坊
確認無誤後建⽴立
COSCUP 2016 - Laravel 部署⼯工作坊
應⽤用程式設定
COSCUP 2016 - Laravel 部署⼯工作坊
取得 RDS 資訊
COSCUP 2016 - Laravel 部署⼯工作坊
進⼊入設定⾴頁
COSCUP 2016 - Laravel 部署⼯工作坊
設定 Document Root
COSCUP 2016 - Laravel 部署⼯工作坊
設定環境變數
APP_ENV=production	
  
APP_DEBUG=true	
  
APP_KEY={artisan	
  產⽣生的	
  key}	
  
DB_CONNECTION=mysql	
  
DB_HOST={RDS	
  的網址}	
  
DB_PORT=3306	
  
DB_DATABASE=ebdb	
  
DB_USERNAME=homestead	
  
DB_PASSWORD=secret.0821
COSCUP 2016 - Laravel 部署⼯工作坊
Migrate 資料庫
COSCUP 2016 - Laravel 部署⼯工作坊
測試應⽤用程式
COSCUP 2016 - Laravel 部署⼯工作坊
Azure Web App
• 微軟 Azure 平台上整合部署⽅方式,整合平台上所有
元件即可依需求彈性建⽴立環境
• 可透過 git、ftp、Dropbox…等多種⽅方式部署
• 本⼯工作坊將利⽤用 git 及圖型化管理介⾯面將範例應⽤用程
式部署⾄至 Azure 後取得對外網址
COSCUP 2016 - Laravel 部署⼯工作坊
部署流程
• 登⼊入 Azure 管理介⾯面
• 建⽴立 Web App
• 建⽴立 MySQL
• 設定 Web App
• 部署程式碼
• Migrate 資料庫
• 重啟應⽤用程式
• 瀏覽⾸首⾴頁
COSCUP 2016 - Laravel 部署⼯工作坊
• 打開瀏覽器
• 登⼊入 Azure Portal
登⼊入 Azure 管理介⾯面
https://portal.azure.com/
COSCUP 2016 - Laravel 部署⼯工作坊
建⽴立新 Web App
COSCUP 2016 - Laravel 部署⼯工作坊
設定 App 名稱
COSCUP 2016 - Laravel 部署⼯工作坊
設定 Service Plan
COSCUP 2016 - Laravel 部署⼯工作坊
環境佈署中
COSCUP 2016 - Laravel 部署⼯工作坊
搜尋 MySQL 元件
COSCUP 2016 - Laravel 部署⼯工作坊
MySQL 主控台
COSCUP 2016 - Laravel 部署⼯工作坊
啟始 MySQL 元件
COSCUP 2016 - Laravel 部署⼯工作坊
同意條款
COSCUP 2016 - Laravel 部署⼯工作坊
取得 DB 資訊
COSCUP 2016 - Laravel 部署⼯工作坊
應⽤用程式設定
COSCUP 2016 - Laravel 部署⼯工作坊
設定 PHP 版本
COSCUP 2016 - Laravel 部署⼯工作坊
設定環境變數
COSCUP 2016 - Laravel 部署⼯工作坊
設定 Document Root
COSCUP 2016 - Laravel 部署⼯工作坊
設定 Site Extension
COSCUP 2016 - Laravel 部署⼯工作坊
安裝 Composer
COSCUP 2016 - Laravel 部署⼯工作坊
設定部署來源
COSCUP 2016 - Laravel 部署⼯工作坊
設定部署密碼
secret.0821
COSCUP 2016 - Laravel 部署⼯工作坊
取得 git 位置
COSCUP 2016 - Laravel 部署⼯工作坊
設定 git 遠端並 push
//	
  移除舊的 remote	
  
$	
  git	
  remote	
  remove	
  origin	
  
//	
  設定 azure 為 remote	
  
$	
  git	
  remote	
  add	
  azure	
  {Azure	
  的	
  git	
  URL}	
  
$	
  git	
  push	
  azure	
  master
COSCUP 2016 - Laravel 部署⼯工作坊
Migrate 資料庫
COSCUP 2016 - Laravel 部署⼯工作坊
重開 Web App
COSCUP 2016 - Laravel 部署⼯工作坊
測試應⽤用程式
COSCUP 2016 - Laravel 部署⼯工作坊
Google Cloud Platform
• 由 Google 提供的雲端平台,以主機部份來說,可概
分兩種作法:App Engine 及 Compute Engine
• 若要將 Laravel 運⾏行在 App Engine 上,則需要做額外
的設定。雖有 Package 可以協助,但⺫⽬目前只⽀支援到
5.1
• 本⼯工作坊將直接使⽤用 Compute Engine 建置VM,並
參考 Homestead 的裝機 Script 進⾏行環境安裝。作法
較類似⾃自⾏行安裝VPS 的⽅方式。
COSCUP 2016 - Laravel 部署⼯工作坊
部署流程
• 登⼊入 GCP 管理介⾯面
• 建⽴立 Project
• 建⽴立VM
• 下載裝機 Script
• clone/安裝 應⽤用程式
• Migrate 資料庫
• 瀏覽⾸首⾴頁
COSCUP 2016 - Laravel 部署⼯工作坊
登⼊入 Google Cloud Platform
• 打開瀏覽器
• 登⼊入 Google Cloud Platform
https://cloud.google.com/
COSCUP 2016 - Laravel 部署⼯工作坊
建⽴立 Project
COSCUP 2016 - Laravel 部署⼯工作坊
設定 Project 名稱
COSCUP 2016 - Laravel 部署⼯工作坊
選擇 Compute Engine
COSCUP 2016 - Laravel 部署⼯工作坊
建⽴立VM
COSCUP 2016 - Laravel 部署⼯工作坊
設定VM 屬性
COSCUP 2016 - Laravel 部署⼯工作坊
登⼊入VM
COSCUP 2016 - Laravel 部署⼯工作坊
執⾏行裝機指令
//	
  下載裝機	
  script	
  
$	
  wget	
  https://goo.gl/5y4Bsv	
  -­‐O	
  startup.sh	
  
//	
  執⾏行裝機	
  script	
  
$	
  bash	
  startup.sh
COSCUP 2016 - Laravel 部署⼯工作坊
設定 git 並 clone
//	
  產⽣生	
  SSH	
  ⾦金鑰	
  
$	
  ssh-­‐keygen	
  -­‐t	
  rsa	
  -­‐b	
  4096	
  -­‐C	
  "{your	
  email}"	
  
//	
  設定到⾃自⼰己的	
  github	
  
//	
  把	
  App	
  clone	
  回本機端	
  
$	
  git	
  clone	
  {your	
  repo}
COSCUP 2016 - Laravel 部署⼯工作坊
安裝 Laravel
//	
  安裝	
  App	
  
$	
  mv	
  {repo}	
  laravel	
  
$	
  cd	
  laravel	
  
$	
  composer	
  install	
  -­‐-­‐no-­‐scripts	
  
$	
  composer	
  run-­‐script	
  post-­‐root-­‐package-­‐install	
  
$	
  composer	
  run-­‐script	
  post-­‐install-­‐cmd	
  
$	
  composer	
  run-­‐script	
  post-­‐create-­‐project-­‐cmd
COSCUP 2016 - Laravel 部署⼯工作坊
設定 Laravel
//	
  設定	
  .env	
  migrate	
  資料庫	
  
//	
  資料庫名稱為	
  homestead	
  
//	
  MySQL	
  帳密為	
  homestead/secret	
  
$	
  vim	
  .env	
  
$	
  php	
  artisan	
  migrate
APP_ENV=production	
  
APP_DEBUG=true	
  
APP_KEY={artisan	
  產⽣生的	
  key}	
  
DB_CONNECTION=mysql	
  
DB_HOST=127.0.0.1	
  
DB_PORT=3306	
  
DB_DATABASE=homestead	
  
DB_USERNAME=homestead	
  
DB_PASSWORD=secret.0821
COSCUP 2016 - Laravel 部署⼯工作坊
重啟系統服務
//	
  重啟三個服務	
  
$	
  sudo	
  systemctl	
  restart	
  mysql	
  
$	
  sudo	
  systemctl	
  restart	
  nginx	
  
$	
  sudo	
  systemctl	
  restart	
  php7.0-­‐fpm
COSCUP 2016 - Laravel 部署⼯工作坊
測試應⽤用程式
COSCUP 2016 - Laravel 部署⼯工作坊
⾃自建VPS
• 提供VPS 服務的平台:
- Linode
- DigitalOcean
• 裝機 Script 可參考:
- ⼯工作坊 GCP ⼀一段的作法
- Laravel 官⽅方 Homestead 的 Script
- DigitalOcean 的說明⽂文件
Q & A
歡迎提問

More Related Content

What's hot

What's hot (20)

應用程式部署
應用程式部署應用程式部署
應用程式部署
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
專案啟動與環境設定
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定
 
使用 Controller
使用 Controller使用 Controller
使用 Controller
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 Seeding
 
使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後
 
驗證與訊息
驗證與訊息驗證與訊息
驗證與訊息
 
使用者認證
使用者認證使用者認證
使用者認證
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
 
使用 Controller
使用 Controller使用 Controller
使用 Controller
 
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由
 
Route路由控制
Route路由控制Route路由控制
Route路由控制
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
PHP 語法基礎與物件導向
PHP 語法基礎與物件導向PHP 語法基礎與物件導向
PHP 語法基礎與物件導向
 
課程簡介
課程簡介課程簡介
課程簡介
 
成為全能 php 攻城獅
成為全能 php 攻城獅成為全能 php 攻城獅
成為全能 php 攻城獅
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
Eloquent ORM
Eloquent ORMEloquent ORM
Eloquent ORM
 
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
 
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
 

Viewers also liked

Composer 從入門到實戰
Composer 從入門到實戰Composer 從入門到實戰
Composer 從入門到實戰
Shengyou Fan
 

Viewers also liked (17)

COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
 
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
 
Migrations 與 Schema操作
Migrations 與 Schema操作Migrations 與 Schema操作
Migrations 與 Schema操作
 
開發工具與環境建置
開發工具與環境建置開發工具與環境建置
開發工具與環境建置
 
工作坊總結
工作坊總結工作坊總結
工作坊總結
 
CSS 語法教學
CSS 語法教學CSS 語法教學
CSS 語法教學
 
Laravel installfest 工作坊 投影片
Laravel installfest 工作坊 投影片Laravel installfest 工作坊 投影片
Laravel installfest 工作坊 投影片
 
HTML 語法教學
HTML 語法教學HTML 語法教學
HTML 語法教學
 
網站部署與第三方服務整合
網站部署與第三方服務整合網站部署與第三方服務整合
網站部署與第三方服務整合
 
網站製作基礎概念
網站製作基礎概念網站製作基礎概念
網站製作基礎概念
 
Migrations 與 Schema 操作
Migrations 與 Schema 操作Migrations 與 Schema 操作
Migrations 與 Schema 操作
 
CRUD 綜合運用
CRUD 綜合運用CRUD 綜合運用
CRUD 綜合運用
 
整合 Open ID
整合 Open ID整合 Open ID
整合 Open ID
 
Route 路由控制
Route 路由控制Route 路由控制
Route 路由控制
 
工作坊簡介
工作坊簡介工作坊簡介
工作坊簡介
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
 
Composer 從入門到實戰
Composer 從入門到實戰Composer 從入門到實戰
Composer 從入門到實戰
 

Similar to COSCUP 2016 Laravel 部署工作坊 - 部署指南

Ruby on rails部署
Ruby on rails部署Ruby on rails部署
Ruby on rails部署
Deng Peng
 
Lab01 cloud project
Lab01 cloud projectLab01 cloud project
Lab01 cloud project
Jeff Chu
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
Wen-Tien Chang
 

Similar to COSCUP 2016 Laravel 部署工作坊 - 部署指南 (20)

ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
 
Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探
 
Laravel 5.2 教學
Laravel 5.2 教學Laravel 5.2 教學
Laravel 5.2 教學
 
Retrive&rank
Retrive&rankRetrive&rank
Retrive&rank
 
AWS EC2 for beginner
AWS EC2 for beginnerAWS EC2 for beginner
AWS EC2 for beginner
 
專案啟動與設定
專案啟動與設定專案啟動與設定
專案啟動與設定
 
如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4
 
使用 ASP.NET 5 實戰開發雲端應用程式
使用 ASP.NET 5 實戰開發雲端應用程式使用 ASP.NET 5 實戰開發雲端應用程式
使用 ASP.NET 5 實戰開發雲端應用程式
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用
 
基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发
 
Ruby on rails部署
Ruby on rails部署Ruby on rails部署
Ruby on rails部署
 
Lab01 cloud project
Lab01 cloud projectLab01 cloud project
Lab01 cloud project
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
 
工作坊總結
工作坊總結工作坊總結
工作坊總結
 
Gops2016 云端基于Docker的微服务与持续交付实践
Gops2016 云端基于Docker的微服务与持续交付实践Gops2016 云端基于Docker的微服务与持续交付实践
Gops2016 云端基于Docker的微服务与持续交付实践
 
Global Azure Bootcamp 2015 at Study4
Global Azure Bootcamp 2015 at Study4Global Azure Bootcamp 2015 at Study4
Global Azure Bootcamp 2015 at Study4
 
工作坊總結
工作坊總結工作坊總結
工作坊總結
 
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
 

More from Shengyou Fan

[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
Shengyou Fan
 

More from Shengyou Fan (20)

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

COSCUP 2016 Laravel 部署工作坊 - 部署指南

  • 2. COSCUP 2016 - Laravel 部署⼯工作坊 ⼯工作坊三階段 • 在本機端將範例應⽤用程式跑起來 - 確認學員了解運⾏行環境的條件 - 了解範例應⽤用程式的機制及程式碼 • 將可運作的應⽤用程式打包後部署 - 了解如何打包應⽤用程式 - 了解如何部署應⽤用程式⾄至對應平台 • 更新應⽤用程式後重新部署 - 了解如何更新應⽤用程式版本
  • 3. COSCUP 2016 - Laravel 部署⼯工作坊 運⾏行 Laravel 的基本條件 • HTTP 伺服器 (需⽀支援 rewrite 才可使⽤用 Pretty URL) • PHP 最低環境需求 - PHP >= 5.5.9 (5.1 以上可⽤用 PHP 7) - OpenSSL PHP Extension - Mbstring PHP Extension - Tokenizer PHP Extension • 資料庫 (⽀支援多種資料庫系統)
  • 4. COSCUP 2016 - Laravel 部署⼯工作坊 範例應⽤用程式 ★ 線上版: http://todo.laravel-dojo.com/
  • 5. COSCUP 2016 - Laravel 部署⼯工作坊 實作功能 • ⼀一個簡易的 ToDo 應⽤用程式 - 4 個 Route - 1 個 Controller - 1 個 Model (1 個 migration) - 1 個View (1 個 master、1 個 child) - 1 個Validation ★ 範例源始碼:   http://github.com/laravel-­‐dojo/201608-­‐coscup-­‐sample-­‐app  
  • 6. COSCUP 2016 - Laravel 部署⼯工作坊 建置本地端環境 Mac OS UbuntuWindows MAMP apt-getwagon
  • 7. COSCUP 2016 - Laravel 部署⼯工作坊 編輯器選擇 • Editor 型 - Visual Studio Code - Atom - Sublime Text 3 • IDE 型 - PhpStorm - Eclipse - Netbeans
  • 8. COSCUP 2016 - Laravel 部署⼯工作坊 下載範例應⽤用程式 • 請先到 Laravel 道場的 Github: • 下載範例應⽤用程式: http://github.com/laravel-­‐dojo/201608-­‐coscup-­‐sample-­‐app //  使⽤用 git 指令 $  git  clone  git@github.com:laravel-­‐dojo/201608-­‐coscup-­‐ sample-­‐app.git P.S 或是直接下載 zip 檔
  • 9. COSCUP 2016 - Laravel 部署⼯工作坊 安裝相依套件 • 使⽤用 Composer 指令安裝相依套件 //  先安裝相依套件   $  composer  install  -­‐-­‐no-­‐scripts   //  產⽣生 .env、APP_KEY 並最佳化應⽤用程式   $  composer  run-­‐script  post-­‐root-­‐package-­‐install   $  composer  run-­‐script  post-­‐install-­‐cmd   $  composer  run-­‐script  post-­‐create-­‐project-­‐cmd
  • 10. COSCUP 2016 - Laravel 部署⼯工作坊 建⽴立資料庫 • 開啟 MySQL 管理介⾯面,建⽴立本地端資料庫
  • 11. COSCUP 2016 - Laravel 部署⼯工作坊 設定連線資訊 //  設定 .env   APP_ENV=local   APP_DEBUG=true   APP_KEY=SomeRandomString   APP_URL=http://localhost   DB_CONNECTION=mysql   DB_HOST=host   DB_PORT=3306   DB_DATABASE=todo   DB_USERNAME=username   DB_PASSWORD=password
  • 12. COSCUP 2016 - Laravel 部署⼯工作坊 Migrate 資料庫 $  php  artisan  migrate 透過  artisan  執⾏行  migrate  指 令,將資料表結構在資料庫裡重建
  • 13. COSCUP 2016 - Laravel 部署⼯工作坊 測試應⽤用程式
  • 14. COSCUP 2016 - Laravel 部署⼯工作坊 部署平台
  • 15. COSCUP 2016 - Laravel 部署⼯工作坊 Amazon Elastic Beanstalk • 直接使⽤用 AWS 平台上現有元件 (EC2、RDS…等) 組 合⽽而成的部署服務 • 可彈性設定⾃自動擴展的⽅方式 • 結合指令列⼯工具更可以達成版本管理及⾃自動化部署 的進階功能 • 本⼯工作坊僅先利⽤用 Elastic Beanstalk 將範例應⽤用程式 部署⾄至 AWS 取得對外網址
  • 16. COSCUP 2016 - Laravel 部署⼯工作坊 部署流程 • 登⼊入 AWS 管理介⾯面 • 切換⾄至 Elastic Beanstalk • 建⽴立⼀一個新的應⽤用程式 • 修改設定 - Document Root - 環境變數 • Migrate 資料庫 • 瀏覽⾸首⾴頁
  • 17. COSCUP 2016 - Laravel 部署⼯工作坊 登⼊入 AWS Console • 打開瀏覽器 • 登⼊入 AWS Management Console https://aws.amazon.com/
  • 18. COSCUP 2016 - Laravel 部署⼯工作坊 進⼊入 Elastic Beanstalk • 從⼊入⼝口⾴頁選擇 Elastic Beanstalk 管理功能
  • 19. COSCUP 2016 - Laravel 部署⼯工作坊 建⽴立新應⽤用程式 • 使⽤用畫⾯面右上⾓角的 Create New Application 建⽴立新應 ⽤用程式
  • 20. COSCUP 2016 - Laravel 部署⼯工作坊 設定應⽤用程式名稱
  • 21. COSCUP 2016 - Laravel 部署⼯工作坊 建⽴立 Web Server
  • 22. COSCUP 2016 - Laravel 部署⼯工作坊 設定環境類型
  • 23. COSCUP 2016 - Laravel 部署⼯工作坊 建⽴立應⽤用程式打包檔 • 將範例應⽤用程式打包成⼀一個 zip 檔
  • 24. COSCUP 2016 - Laravel 部署⼯工作坊 上傳應⽤用程式
  • 25. COSCUP 2016 - Laravel 部署⼯工作坊 設定網址
  • 26. COSCUP 2016 - Laravel 部署⼯工作坊 選擇建⽴立 RDS
  • 27. COSCUP 2016 - Laravel 部署⼯工作坊 設定 EC2 資訊 全部⽤用預設值即可
  • 28. COSCUP 2016 - Laravel 部署⼯工作坊 設定環境變數 先跳過不設,等⼀一下會再設定
  • 29. COSCUP 2016 - Laravel 部署⼯工作坊 設定 RDS 設定 RDS 帳號密碼
  • 30. COSCUP 2016 - Laravel 部署⼯工作坊 設定權限 預設值即可
  • 31. COSCUP 2016 - Laravel 部署⼯工作坊 確認無誤後建⽴立
  • 32. COSCUP 2016 - Laravel 部署⼯工作坊 應⽤用程式設定
  • 33. COSCUP 2016 - Laravel 部署⼯工作坊 取得 RDS 資訊
  • 34. COSCUP 2016 - Laravel 部署⼯工作坊 進⼊入設定⾴頁
  • 35. COSCUP 2016 - Laravel 部署⼯工作坊 設定 Document Root
  • 36. COSCUP 2016 - Laravel 部署⼯工作坊 設定環境變數 APP_ENV=production   APP_DEBUG=true   APP_KEY={artisan  產⽣生的  key}   DB_CONNECTION=mysql   DB_HOST={RDS  的網址}   DB_PORT=3306   DB_DATABASE=ebdb   DB_USERNAME=homestead   DB_PASSWORD=secret.0821
  • 37. COSCUP 2016 - Laravel 部署⼯工作坊 Migrate 資料庫
  • 38. COSCUP 2016 - Laravel 部署⼯工作坊 測試應⽤用程式
  • 39. COSCUP 2016 - Laravel 部署⼯工作坊 Azure Web App • 微軟 Azure 平台上整合部署⽅方式,整合平台上所有 元件即可依需求彈性建⽴立環境 • 可透過 git、ftp、Dropbox…等多種⽅方式部署 • 本⼯工作坊將利⽤用 git 及圖型化管理介⾯面將範例應⽤用程 式部署⾄至 Azure 後取得對外網址
  • 40. COSCUP 2016 - Laravel 部署⼯工作坊 部署流程 • 登⼊入 Azure 管理介⾯面 • 建⽴立 Web App • 建⽴立 MySQL • 設定 Web App • 部署程式碼 • Migrate 資料庫 • 重啟應⽤用程式 • 瀏覽⾸首⾴頁
  • 41. COSCUP 2016 - Laravel 部署⼯工作坊 • 打開瀏覽器 • 登⼊入 Azure Portal 登⼊入 Azure 管理介⾯面 https://portal.azure.com/
  • 42. COSCUP 2016 - Laravel 部署⼯工作坊 建⽴立新 Web App
  • 43. COSCUP 2016 - Laravel 部署⼯工作坊 設定 App 名稱
  • 44. COSCUP 2016 - Laravel 部署⼯工作坊 設定 Service Plan
  • 45. COSCUP 2016 - Laravel 部署⼯工作坊 環境佈署中
  • 46. COSCUP 2016 - Laravel 部署⼯工作坊 搜尋 MySQL 元件
  • 47. COSCUP 2016 - Laravel 部署⼯工作坊 MySQL 主控台
  • 48. COSCUP 2016 - Laravel 部署⼯工作坊 啟始 MySQL 元件
  • 49. COSCUP 2016 - Laravel 部署⼯工作坊 同意條款
  • 50. COSCUP 2016 - Laravel 部署⼯工作坊 取得 DB 資訊
  • 51. COSCUP 2016 - Laravel 部署⼯工作坊 應⽤用程式設定
  • 52. COSCUP 2016 - Laravel 部署⼯工作坊 設定 PHP 版本
  • 53. COSCUP 2016 - Laravel 部署⼯工作坊 設定環境變數
  • 54. COSCUP 2016 - Laravel 部署⼯工作坊 設定 Document Root
  • 55. COSCUP 2016 - Laravel 部署⼯工作坊 設定 Site Extension
  • 56. COSCUP 2016 - Laravel 部署⼯工作坊 安裝 Composer
  • 57. COSCUP 2016 - Laravel 部署⼯工作坊 設定部署來源
  • 58. COSCUP 2016 - Laravel 部署⼯工作坊 設定部署密碼 secret.0821
  • 59. COSCUP 2016 - Laravel 部署⼯工作坊 取得 git 位置
  • 60. COSCUP 2016 - Laravel 部署⼯工作坊 設定 git 遠端並 push //  移除舊的 remote   $  git  remote  remove  origin   //  設定 azure 為 remote   $  git  remote  add  azure  {Azure  的  git  URL}   $  git  push  azure  master
  • 61. COSCUP 2016 - Laravel 部署⼯工作坊 Migrate 資料庫
  • 62. COSCUP 2016 - Laravel 部署⼯工作坊 重開 Web App
  • 63. COSCUP 2016 - Laravel 部署⼯工作坊 測試應⽤用程式
  • 64. COSCUP 2016 - Laravel 部署⼯工作坊 Google Cloud Platform • 由 Google 提供的雲端平台,以主機部份來說,可概 分兩種作法:App Engine 及 Compute Engine • 若要將 Laravel 運⾏行在 App Engine 上,則需要做額外 的設定。雖有 Package 可以協助,但⺫⽬目前只⽀支援到 5.1 • 本⼯工作坊將直接使⽤用 Compute Engine 建置VM,並 參考 Homestead 的裝機 Script 進⾏行環境安裝。作法 較類似⾃自⾏行安裝VPS 的⽅方式。
  • 65. COSCUP 2016 - Laravel 部署⼯工作坊 部署流程 • 登⼊入 GCP 管理介⾯面 • 建⽴立 Project • 建⽴立VM • 下載裝機 Script • clone/安裝 應⽤用程式 • Migrate 資料庫 • 瀏覽⾸首⾴頁
  • 66. COSCUP 2016 - Laravel 部署⼯工作坊 登⼊入 Google Cloud Platform • 打開瀏覽器 • 登⼊入 Google Cloud Platform https://cloud.google.com/
  • 67. COSCUP 2016 - Laravel 部署⼯工作坊 建⽴立 Project
  • 68. COSCUP 2016 - Laravel 部署⼯工作坊 設定 Project 名稱
  • 69. COSCUP 2016 - Laravel 部署⼯工作坊 選擇 Compute Engine
  • 70. COSCUP 2016 - Laravel 部署⼯工作坊 建⽴立VM
  • 71. COSCUP 2016 - Laravel 部署⼯工作坊 設定VM 屬性
  • 72. COSCUP 2016 - Laravel 部署⼯工作坊 登⼊入VM
  • 73. COSCUP 2016 - Laravel 部署⼯工作坊 執⾏行裝機指令 //  下載裝機  script   $  wget  https://goo.gl/5y4Bsv  -­‐O  startup.sh   //  執⾏行裝機  script   $  bash  startup.sh
  • 74. COSCUP 2016 - Laravel 部署⼯工作坊 設定 git 並 clone //  產⽣生  SSH  ⾦金鑰   $  ssh-­‐keygen  -­‐t  rsa  -­‐b  4096  -­‐C  "{your  email}"   //  設定到⾃自⼰己的  github   //  把  App  clone  回本機端   $  git  clone  {your  repo}
  • 75. COSCUP 2016 - Laravel 部署⼯工作坊 安裝 Laravel //  安裝  App   $  mv  {repo}  laravel   $  cd  laravel   $  composer  install  -­‐-­‐no-­‐scripts   $  composer  run-­‐script  post-­‐root-­‐package-­‐install   $  composer  run-­‐script  post-­‐install-­‐cmd   $  composer  run-­‐script  post-­‐create-­‐project-­‐cmd
  • 76. COSCUP 2016 - Laravel 部署⼯工作坊 設定 Laravel //  設定  .env  migrate  資料庫   //  資料庫名稱為  homestead   //  MySQL  帳密為  homestead/secret   $  vim  .env   $  php  artisan  migrate APP_ENV=production   APP_DEBUG=true   APP_KEY={artisan  產⽣生的  key}   DB_CONNECTION=mysql   DB_HOST=127.0.0.1   DB_PORT=3306   DB_DATABASE=homestead   DB_USERNAME=homestead   DB_PASSWORD=secret.0821
  • 77. COSCUP 2016 - Laravel 部署⼯工作坊 重啟系統服務 //  重啟三個服務   $  sudo  systemctl  restart  mysql   $  sudo  systemctl  restart  nginx   $  sudo  systemctl  restart  php7.0-­‐fpm
  • 78. COSCUP 2016 - Laravel 部署⼯工作坊 測試應⽤用程式
  • 79. COSCUP 2016 - Laravel 部署⼯工作坊 ⾃自建VPS • 提供VPS 服務的平台: - Linode - DigitalOcean • 裝機 Script 可參考: - ⼯工作坊 GCP ⼀一段的作法 - Laravel 官⽅方 Homestead 的 Script - DigitalOcean 的說明⽂文件