如果你在手動的進行數據庫結構的修改或者在更新文件前手動運行測試,請三思而后行!因為隨著每一個額外的手動任務的添加都需要去部署一個新的版本到應用程序,這些更改會增加程序潛在的致命錯誤。即使你是在處理一個簡單的更新,全面的構建處理或者持續集成策略,[構建自動化](http://en.wikipedia.org/wiki/Build_automation)絕對是你的朋友。
你可能想要自動化的任務有:
* 依賴管理
* 靜態資源編譯、壓縮
* 執行測試
* 文檔生成
* 打包
* 部署
### 構建自動化工具
構建工具可以認為是一系列的腳本來完成應用部署的通用任務。構建工具并不屬于應用的一部分,它獨立于應用層 ‘之外’。
現在已有很多開源的工具來幫助你完成構建自動化,一些是用 PHP 編寫,有一些不是。應該根據你的實際項目來選擇最適合的工具,不要讓語言阻礙了你使用這些工具,如下有一些例子:
[Phing](http://www.phing.info/) 是一種在 PHP 領域中最簡單的開始自動化部署的方式。通過 Phing 你可以控制打包,部署或者測試,只需要一個簡單的 XML 構建文件。Phing (基于[Apache Ant](http://ant.apache.org/)) 提供了在安裝或者升級 web 應用時的一套豐富的任務腳本,并且可以通過 PHP 編寫額外的任務腳本來擴展。
[Capistrano](https://github.com/capistrano/capistrano/wiki) 是一個為 中高級程序員 準備的系統,以一種結構化、可復用的方式在一臺或多臺遠程機器上執行命令。對于部署 Ruby on Rails 的應用,它提供了預定義的配置,不過也可以用它來 部署 PHP 應用 。如果要成功的使用 Capistrano ,需要一定的 Ruby 和 Rake 的知識。
對 Capistrano 感興趣的 PHP 開發者可以閱讀 Dave Gardner 的博文 [PHP Deployment with Capistrano](http://www.davegardner.me.uk/blog/2012/02/13/php-deployment-with-capistrano/) ,來作為一個很好的開始。
[Chef](http://www.opscode.com/chef/) 不僅僅只是一個部署框架, 它是一個基于 Ruby 的強大的系統集成框架,除了部署你的應用之外,還可以構建整個服務環境或者虛擬機。
[Deployer](https://github.com/deployphp/deployer) 是一個用 PHP 編寫的部署工具,它很簡單且實用。并行執行任務,原子化部署,在多臺服務器之間保持一致性。為 Symfony、Laravel、Zend Framework 和 Yii 提供了通用的任務腳本。
適用于 PHP 開發者的 Chef 資源:
* [Three part blog series about deploying a LAMP application with Chef, Vagrant, and EC2](http://www.jasongrimes.org/2012/06/managing-lamp-environments-with-chef-vagrant-and-ec2-1-of-3/)
* [Chef Cookbook which installs and configures PHP 5.3 and the PEAR package management system](https://github.com/opscode-cookbooks/php)
* [Chef video tutorial series](https://www.youtube.com/playlist?list=PLrmstJpucjzWKt1eWLv88ZFY4R1jW8amR) by Opscode, the makers of chef
### 延伸閱讀:
* [Automate your project with Apache Ant](http://net.tutsplus.com/tutorials/other/automate-your-projects-with-apache-ant/)
持續集成
> 持續集成是一種軟件開發實踐,團隊的成員經常用來集成他們的工作, 通常每一個成員至少每天都會進行集成 — 因此每天都會有許多的集成。許多團隊發現這種方式會顯著地降低集成問題, 并允許一個團隊更快的開發軟件。
– Martin Fowler
對于 PHP 來說,有許多的方式來實現持續集成。近來 Travis CI 在持續集成上做的很棒,對于小項目來說也可以很好的使用。Travis CI 是一個托管的持續集成服務用于開源社區。它可以和 Github 很好的集成,并且提供了很多語言的支持包括 PHP 。
延伸閱讀:
* [使用 Jenkins 進行持續集成](http://jenkins-ci.org/)
* [使用 PHPCI 進行持續集成](http://www.phptesting.org/)
* [使用 Teamcity 進行持續集成](http://www.jetbrains.com/teamcity/)
- 歡迎
- 入門指南
- 使用當前穩定版本
- 內置的WEB服務器
- Mac安裝
- Windows安裝
- 代碼風格指南
- 語言亮點
- 編程范式
- 命名空間
- PHP標準庫
- 命令行接口
- Xdebug
- 依賴管理
- Composer 與 Packagist
- PEAR
- 開發實踐
- 基礎知識
- 日期和時間
- 設計模式
- 使用UTF8編碼
- 依賴注入
- 基本概念
- 復雜的問題
- 容器
- 延伸閱讀
- 數據庫
- MYSQL 擴展
- PDO 擴展
- 數據庫交互
- 數據庫抽象層
- 使用模板
- 好處
- 原生PHP模板
- 編譯模板
- 延伸閱讀
- 錯誤與異常
- 錯誤
- 異常
- 安全
- Web應用程序安全
- 密碼哈希
- 數據過濾
- 配置文件
- 注冊全局變量
- 錯誤報告
- 測試
- 測試驅動開發
- 行為驅動開發
- 其他測試工具
- 服務器與部署
- Platform as a Service (PaaS)
- 虛擬或專用服務器
- 共享服務器
- 構建及部署應用
- 虛擬化
- Vagrant
- Docker
- 緩存
- Opcode緩存
- 對象緩存
- 文檔撰寫
- 資源
- 社區
- Credits