專案啟動與設定

46
Laravel 工作坊 專案動與設定 shengyou @ 彰師大資工系學會 (2014.12.06)

Transcript of 專案啟動與設定

Page 1: 專案啟動與設定

Laravel 工作坊專案啟動與設定shengyou @ 彰師大資工系學會 (2014.12.06)

Page 2: 專案啟動與設定

階段任務• 使用 composer 指令建立一個 Laravel 專案

• 設定 Laravel 環境變數

• 安裝 Laravel 套件 (generator、ide-helper、faker)

• 綜合演練

Page 3: 專案啟動與設定

啟始 Laravel 專案

Page 4: 專案啟動與設定

啟始 Laravel 專案• 打開 cmder.exe 切換至 專案目錄

• 用 composer 指令啟始 laravel 專案

$  cd  C:\UwAmp\www\

$  composer  create-­‐project  laravel/laravel  {your-­‐project-­‐name}  -­‐-­‐prefer-­‐dist

★ 參考:http://laravel.tw/docs/4.2/installation

Page 5: 專案啟動與設定

備用方案• 直接從 Laravel 官方下載打包好的 zip 檔

• 下載完成後,直接解壓縮,並重新命名資料夾名稱成專案名稱,再執行以下指令:

http://cabinet.laravel.com/latest.zip

$  cd  C:\UwAmp\www\{專案名稱}$  php  artisan  key:generate

Page 6: 專案啟動與設定

Laravel 目錄結構

• public 是 Document Root

• vendor 是 composer 安裝的套件• app 是程式核心

Page 7: 專案啟動與設定

Laravel 目錄結構

config 資料夾內放置 Laravel 框架所有的設定檔及環境變數值

Page 8: 專案啟動與設定

Laravel 目錄結構

controllers 資料夾內放置所有 controller 的檔案

Page 9: 專案啟動與設定

Laravel 目錄結構

database 資料夾內有兩個資料夾,migrations 放所有資料庫操作相關紀錄;seeds 則放所有假資料產生的檔案

Page 10: 專案啟動與設定

Laravel 目錄結構

models 資料夾內放置所有 model 的檔案

Page 11: 專案啟動與設定

Laravel 目錄結構

storage 資料夾裡是 Laravel 運作時自動產生的各種檔案 (快取、log…) 一般不用動,但佈署時要記得把寫入權限打開

Page 12: 專案啟動與設定

Laravel 目錄結構

views 資料夾內放置所有 view 的檔案

Page 13: 專案啟動與設定

Laravel 目錄結構

public 資料夾內放所有公開檔案,包括 css, js, favicon, robots.txt,及程式進入點 index.php

Page 14: 專案啟動與設定

Laravel 目錄結構

vendor 資料夾裡所有的檔案都是用 composer 管理,一般來說不需要動,我們也會在版本控制系統內忽略

Page 15: 專案啟動與設定

了解 composer.json{   "name":  "{vendor}/{package-­‐name}",   "description":  "{package  description}",   "keywords":  ["{keyword1}",  "{keyword2}"],   "license":  "{license}",   "type":  "project",   "require":  {     "laravel/framework":  "4.2.*"   },        "autoload":  {                略...   },        "scripts":  {                略...        }   "config":  {     "preferred-­‐install":  "dist"   },   "minimum-­‐stability":  "stable"}

私有專案用:proprietary

格式:"vendor/package-­‐name":  "version"

套件穩定度的設定:•stable  (預設)• RC• beta• alpha• dev

Page 16: 專案啟動與設定

移除不必要檔案• 專案內的幾個說明檔可以移除,包括:

- CONTRIBUTING.md

- readme.md

Page 17: 專案啟動與設定

驗證安裝• 開啟 UwAmp,確認 Document Root 指向

Laravel 專案的 public,並啟動 Server

• 打開瀏覽器:http://localhost:8000

確認

安裝成功

Page 18: 專案啟動與設定

存檔點• 試著把現在已經可以運作的程式碼加入版本控制內

• 流程提醒:

- 建立一個新的儲存庫

- working directory > staging area > commit

Page 19: 專案啟動與設定

.gitignore• 有一些檔案 (比方說 IDE 的設定檔) 我們不想要放到版本控制系統裡,希望 git 可以自動忽略這些檔案

• 只要把想忽略的規則寫入 .gitignore 裡並

commit 到儲存庫,日後 git 就會自動忽略這些檔案

Page 20: 專案啟動與設定

設定 Laravel

Page 21: 專案啟動與設定

各開發階段流程

[ development ]開發用、測試用

[ local ]本機端開發

[ staging ]階段性發佈

[ production ]正式上線

每個開發夥伴本機端獨立開發,開發完成後送回版本控制系統

[version control]原始碼管理

定期從版本控制系統取出後,進行整合、單元等測試

專案階段完成後,進行階段性發佈,給客戶測試、確認

所有階段完成後佈署至正式主機,對外公開使用

Page 22: 專案啟動與設定

什麼是環境設定?• 在開發過程中,程式碼會經過數個不同的開發階段,每個開發階段都會佈署在不同的機器上。也因此,諸如 DB 連線資訊等變數在不同機器上就會有不同的設定

• 環境變數的設計,就是讓程式碼可以動態的適應不同機器上的不同設定,減少佈署時需手動調整設定的負擔

Page 23: 專案啟動與設定

為什麼要設定環境?• 以往程式碼佈署到不同主機時,就要手動修改相關的連線資訊

• Laravel 的環境設定設計,可以讓 Laravel

自動依照不同的主機名稱,自動載入對應的相關設定,開發者也可自行決定開發階段的名稱,可搭配自動佈署工具,讓佈署工作快速不出錯

Page 24: 專案啟動與設定

如何知道目前的環境$  php  artisan  env

使用 artisan 指令查尋目前的環境

Page 25: 專案啟動與設定

Laravel 如何偵測環境?

★ 參考:http://laravel.tw/docs/configuration#environment-configuration

‘環境名稱’  =>  array(‘電腦1’,  ‘電腦2’),

在  bootstrap/start.php  設定

設定語法:

Page 26: 專案啟動與設定

如何查詢電腦名稱?$  hostname

使用 hostname 指令查尋電腦名稱

Page 27: 專案啟動與設定

如何查詢電腦名稱?使用控制台查尋電腦名稱 (我的電腦 > 內容)

Page 28: 專案啟動與設定

如何設定環境變數?• app/config/{environment}/*.php

- Laravel 會自動根據目前的環境,載入對應的設定檔,覆寫 production 的設定

- 只需要複製需要覆寫的設定即可,沒有設定的則會由 production 的值帶入

- {environment} 名稱可自定,但 testing 保留給單元測試使用

★ 參考:http://laravel.tw/docs/4.2/configuration#environment-configuration

Page 29: 專案啟動與設定

設定資料庫連線

‘databse’  =>  ‘blog_local’,‘username’  =>  ‘root’,‘password’  =>  ‘root’,

將資料庫連線資訊改為 MAMP 設定

設定範例:

Page 30: 專案啟動與設定

測試資料庫連線

連線失敗

連線成功

Page 31: 專案啟動與設定

從 phpMyAdmin 確認新的 migrations 資料表產生

Page 32: 專案啟動與設定

存檔點• 試著把現在已經可以運作的程式碼加入版本控制內

• 流程提醒:

- working directory > staging area > commit

Page 33: 專案啟動與設定

安裝 Packages

Page 34: 專案啟動與設定

什麼是 Package?• 在開發程式時,往往希望可以直接使用別人已經寫好的函式庫,不用重新發明輪子

• Package 就是 Laravel 的擴充程式,透過安裝 Package 就可以直接使用別人寫好的功能,加快開發速度

• 這個單元將安裝數個 Package 協助開發

Page 35: 專案啟動與設定

何處尋找 Package?• 透過搜尋引擎尋找:

- Packagist

- Packalyst

• 聽 大神/同事/朋友 的推薦

• 看別人的 Open Source 裡有用到哪些?

Page 36: 專案啟動與設定

如何安裝 Package?• 仔細閱讀 README (確認版本、規格)

• 調整 composer.json / composer update

• 設定 ServiceProvider、Alias (視需求)

• Publish 設定 (視需求)

• Migrate DB (視需求)

★ 以 Generator 為例:https://github.com/JeffreyWay/Laravel-4-Generators/

Page 37: 專案啟動與設定

要安裝的 Packages• way/generators

- Laravel 各種 Class 檔案產生器

• barryvdh/laravel-ide-helper

- 從原始碼產生編輯器語法補完檔

• fzaninotto/faker

- 產生資料庫假資料使用

Page 38: 專案啟動與設定

安裝額外套件• 編輯 composer.json

• 更新套件$  composer  update

"require":  {   "laravel/framework":  "4.2.*"},"require-­‐dev":  {   "way/generators":  "~2.0",   "barryvdh/laravel-­‐ide-­‐helper":  "v1.11.3",   "fzaninotto/faker":  "v1.4.0"},"autoload":  {

★ 套件查詢:https://packagist.org/

Page 39: 專案啟動與設定

更新套件使用 composer update 指令

Page 40: 專案啟動與設定

設定 Service Provider依套件指示設定 Service Provider

Page 41: 專案啟動與設定

測試安裝結果確認出現對應的 artisan 指令

Page 42: 專案啟動與設定

artisan ide-helper:generate

• 掃描目前的專案目錄,針對每個類別產生編輯器可用的提示檔

- 執行完畢後,會在專案目錄底下產生一個 _ide_helper.php 的檔案 (可加入 .gitignore裡)

• 範例:$  php  artisan  ide-­‐helper:generate

Page 43: 專案啟動與設定

存檔點• 試著把現在已經可以運作的程式碼加入版本控制內

• 流程提醒:

- working directory > staging area > commit

Page 44: 專案啟動與設定

綜合演練• 用 SourceTree 啟動一個新的儲存庫

• 用 cmder + composer 啟動一個新專案

• 在 Netbeans 裡輸入專案

• 設定 Laravel 及安裝 Laravel 套件

• 設定/啟動 UwAmp

• 瀏覽器裡預覽

Page 45: 專案啟動與設定

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

Page 46: 專案啟動與設定

單元小結• 在這個單元裡,我們說明如何透過

composer 啟動一個 Laravel 專案,並設定

Laravel 環境變數、安裝套件

• 下一個單元,我們將學習如何使用 Laravel

的 migration 功能進行資料庫操作