專案啟動與設定

Post on 17-Jul-2015

8.490 views 8 download

Transcript of 專案啟動與設定

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

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

• 設定 Laravel 環境變數

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

• 綜合演練

啟始 Laravel 專案

啟始 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

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

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

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

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

Laravel 目錄結構

• public 是 Document Root

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

Laravel 目錄結構

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

Laravel 目錄結構

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

Laravel 目錄結構

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

Laravel 目錄結構

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

Laravel 目錄結構

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

Laravel 目錄結構

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

Laravel 目錄結構

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

Laravel 目錄結構

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

了解 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

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

- CONTRIBUTING.md

- readme.md

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

Laravel 專案的 public,並啟動 Server

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

確認

安裝成功

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

• 流程提醒:

- 建立一個新的儲存庫

- working directory > staging area > commit

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

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

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

設定 Laravel

各開發階段流程

[ development ]開發用、測試用

[ local ]本機端開發

[ staging ]階段性發佈

[ production ]正式上線

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

[version control]原始碼管理

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

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

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

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

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

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

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

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

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

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

Laravel 如何偵測環境?

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

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

在  bootstrap/start.php  設定

設定語法:

如何查詢電腦名稱?$  hostname

使用 hostname 指令查尋電腦名稱

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

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

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

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

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

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

設定資料庫連線

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

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

設定範例:

測試資料庫連線

連線失敗

連線成功

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

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

• 流程提醒:

- working directory > staging area > commit

安裝 Packages

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

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

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

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

- Packagist

- Packalyst

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

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

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

• 調整 composer.json / composer update

• 設定 ServiceProvider、Alias (視需求)

• Publish 設定 (視需求)

• Migrate DB (視需求)

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

要安裝的 Packages• way/generators

- Laravel 各種 Class 檔案產生器

• barryvdh/laravel-ide-helper

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

• fzaninotto/faker

- 產生資料庫假資料使用

安裝額外套件• 編輯 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/

更新套件使用 composer update 指令

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

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

artisan ide-helper:generate

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

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

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

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

• 流程提醒:

- working directory > staging area > commit

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

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

• 在 Netbeans 裡輸入專案

• 設定 Laravel 及安裝 Laravel 套件

• 設定/啟動 UwAmp

• 瀏覽器裡預覽

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

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

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

Laravel 環境變數、安裝套件

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

的 migration 功能進行資料庫操作