利用 Laravel 處理所有開發流程
環境建置
前後端開發
測試
部署
從起始到上線
環境建置
建置開發環境的痛處
Homestead
- Ubuntu 14.04
- Git
- PHP 5.6 / 7.0
- Xdebug
- HHVM
- Nginx
- MySQL
- Sqlite3
- Postgres
- Composer
- Node (With PM2, Bower, Grunt, and Gulp)
- Redis
- Memcached (PHP 5.x Only)
- Beanstalkd
- Laravel Envoy
- Blackfire Profiler
Homestead 包涵的軟體
安裝 Homestead
- 首先,要先安裝 Vagrant 及 virtualbox 或是 VMware
-
再來,安裝 Homestead Vagrant Box
-
Cloning Homestead Repository
- 在 ~/.homestead 底下執行下列指令,建立 Homestead.yaml 設定檔
$ vagrant box add laravel/homestead
$ git clone https://github.com/laravel/homestead.git Homestead
$ bash init.sh
設定 Homestead.yaml
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
hostname: demo
name: demo
provider: virtualbox
設定虛擬主機
設定 Homestead.yaml
$ ssh-keygen -t rsa -C "you@homestead"
- 建立 ssh key 來設定 vagrant 的連線
- 更新 authroize 及 key 的參數
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
設定 Homestead.yaml
folders:
- map: "/Users/Jerry/Projects/demo"
to: "/home/vagrant/demo"
- 設定分享資料夾
- 設定 Nginx 及資料庫
- 進到 /etc/hosts 新增 vagrant host 的名稱
sites:
- map: demo.app
to: "/home/vagrant/demo/public"
databases:
- demo
192.168.10.10 demo.app
執行 Homestead
- 啟動一個 homestead
- 關閉 homestead
-
使用 ssh 連至 homestead
$ vagrant up
$ vagrant destroy --force
$ ssh vagrant@127.0.0.1 -p 2222
其它功能
- 可利用資料庫管理工具連線至 Homestead 的 Database
- 設定 Cron job
- 其它連線使用的 port
SSH: 2222 → Forwards To 22
HTTP: 8000 → Forwards To 80
HTTPS: 44300 → Forwards To 443
MySQL: 33060 → Forwards To 3306
Postgres: 54320 → Forwards To 5432
$ schedule:run
username: homestead
password: secret
根據專案分別安裝
- 利用 Composer 安裝至你的專案中
- 使用 make 指令產生 Vagrant File 及 Homestead.yaml
- 接下來其它開發者只要 clone 下來,直接執行 composer,建立自己的 Homestead.yaml 就能開發啦!
$ php vendor/bin/homestead make
$ composer require laravel/homestead
前後端開發
後端開發的痛處
- Composer 在 create-project 的時候很久…
- 幾乎每次都要整合社群服務…
- 三不五時就要接金流…
- 有時只是想接 API…
Laravel & Composer
- 可以幫你先做好的,Laravel 都寫成 Package 了
- laravel/installer
- laravel/socialite
- laravel/casher
- laravel/lumen
- laravel/installer
前端開發的痛處
- 總之先來個 Bootstrap、Font awesome、jQuery
- CSS 寫多了就想寫 SASS、LESS
- JS 寫多了就想寫 CoffeeScript、TypeScript
- 檔案大了、多了就想壓縮一下
- Else...
Laravel & Elixir
var elixir = require('laravel-elixir');
elixir(function(mix) {
mix.sass('app.scss');
});
{
"private": true,
"devDependencies": {
"gulp": "^3.8.8"
},
"dependencies": {
"laravel-elixir": "^4.0.0",
"bootstrap-sass": "^3.0.0"
}
}
Elixir
Laravel & Elixir
- 壓縮檔案
- Browser 同步化
var elixir = require('laravel-elixir');
elixir(function(mix) {
mix.sass('app.scss');
});
$ gulp watch
var elixir = require('laravel-elixir');
elixir(function(mix) {
mix.browserSync({
proxy: 'demo.app'
});
});
測試
自動化測試
- Composer 已經幫你裝好 phpunit 以及 phpspec 了
- 執行自動化測試
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~4.0",
"phpspec/phpspec": "~2.1"
},
elixir(function(mix) {
mix.phpUnit();
});
$ gulp tdd
部署
一直部署感到累
- 隨著開發的進行到後期,部署的週期愈來愈短。
- 雖然用了 git、composer、gulp 等工具,還是得登入到遠端的 host 下指令。
Laravel & envoy
$ envoy run deploy
@servers(['web' => '192.168.10.10'])
@task('deploy', ['on' => 'web'])
cd site
git pull
composer dump-autoload
php artisan migrate
@endtask
一條龍的開發流程
環境建置
$ gulp tdd
$ envoy run deploy
前端開發
後端開發
自動化測試
自動化部署
你需要的都有了
參考資料
Q & A
利用 Laravel 處理所有開發流程
By logic_solutions_jerry
利用 Laravel 處理所有開發流程
- 1,577