diff --git a/_posts/09-05-01-Building your Application.md b/_posts/09-05-01-Building your Application.md index da039b3..4701a75 100644 --- a/_posts/09-05-01-Building your Application.md +++ b/_posts/09-05-01-Building your Application.md @@ -4,11 +4,16 @@ isChild: true ## Building and Deploying your Application {#build_title} -If you find yourself doing manual database schema changes or running your tests manually before updating your files (manually), think twice! With every additional manual task needed to deploy a new version of your app, the chances for potentially fatal mistakes increase. Whether you're dealing with a simple update, a comprehensive build process or even a continuous integration strategy, build tools are your friend. +If you find yourself doing manual database schema changes or running your tests manually before updating your files (manually), +think twice! With every additional manual task needed to deploy a new version of your app, the chances for potentially +fatal mistakes increase. Whether you're dealing with a simple update, a comprehensive build process or even a continuous +integration strategy, build tools are your friend. -### Control your deployment with Phing +### Phing - Deployment with XML and PHP -With [Phing](http://www.phing.info/) you can control your packaging, deployment or testing process from within a simple XML build file. Phing provides a rich set of tasks usually needed to install or update a web app and can be extended with additional custom tasks (written in PHP). +[Phing](http://www.phing.info/) is the easiest way to get started with automated deployment in the PHP world. With Phing you can control your packaging, deployment or testing process from within a simple +XML build file. Phing provides a rich set of tasks usually needed to install or update a web app and can be extended +with additional custom tasks, written in PHP. Example of a Phing script (build.xml): @@ -18,7 +23,7 @@ Example of a Phing script (build.xml): + promptText="What's the target environment (development, production)?" useExistingValue="true" /> @@ -53,13 +58,32 @@ Example of a Phing script (build.xml): {% endhighlight %} +### Capistrano - The powerful Ruby alternative + +[Capistrano](https://github.com/capistrano/capistrano/wiki) is a system for *intermediate-to-advanced programmers* to execute commands in a structured, repeatable way on one or more remote machines. + +It is pre-configured for deploying Ruby on Rails applications, however people are **successfully deploying PHP systems** with it. Successful use of Capistrano depends on a working knowledge of Ruby and Rake. + +Dave Gardner's blog post [PHP Deployment with Capistrano](http://www.davegardner.me.uk/blog/2012/02/13/php-deployment-with-capistrano/) is a good starting point for PHP developers interested in Capistrano. + +###Chef - Ruby based system integration framework + +[Chef](http://www.opscode.com/chef/) is more than a deployment framework, it is a very powerful Ruby based system integration framework that doesn't just deploy your app but can build your whole server environment or virtual boxes. + +Chef resources for PHP developers: + +* [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) + ### Continuous Integration -> Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily — leading to multiple integrations per day. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. +> Continuous Integration is a software development practice where members of a team integrate their work frequently, +usually each person integrates at least daily — leading to multiple integrations per day. Many teams find that this +approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. *Martin Fowler* -There are different ways to implement continuous integration for PHP. Recently [Travis CI](https://travis-ci.org/) has become by far the easiest way to do CI. Travis CI is a hosted continuous integration service for the open source community. It is integrated with GitHub and offers first class support for many languages including PHP. +There are different ways to implement continuous integration for PHP. Recently [Travis CI](https://travis-ci.org/) has done a great job of making continuous integration a reality even for small projects. Travis CI is a hosted continuous integration service for the open source community. It is integrated with GitHub and offers first class support for many languages including PHP. Example of a Travis CI build script: