+ All Categories
Home > Software > Build & deploy PHP application (intro level)

Build & deploy PHP application (intro level)

Date post: 11-May-2015
Category:
Upload: anton-babenko
View: 634 times
Download: 3 times
Share this document with a friend
Description:
There is a number of ways to build and deploy PHP application reviewed. In particular, Symfony2 apps using Capifony.
Popular Tags:
23
Build & deploy PHP applications* brief introduction
Transcript
Page 1: Build & deploy PHP application (intro level)

Build & deployPHP applications*

brief introduction

Page 2: Build & deploy PHP application (intro level)

Who am I ?

Anton Babenko@antonbabenko

Tech lead at Zoozoo.com

Symfony2/PHP/MySQL

Page 3: Build & deploy PHP application (intro level)

Develop > Build > Test > Deploy

Page 4: Build & deploy PHP application (intro level)

Develop > Build > Test > Deploy

Develop locally, run some tests, commit and push code…

Page 5: Build & deploy PHP application (intro level)

Develop > Build > Test > Deploy

?

Page 6: Build & deploy PHP application (intro level)

Develop > Build > Test > Deploy

Automate

Page 7: Build & deploy PHP application (intro level)

Develop Build Test Deploy

Automate and get:● Faster development cycle● Easier handover to new team members● Improves quality● Reduces errors● Saves time● Establish routine process which team can rely on

Page 8: Build & deploy PHP application (intro level)

Develop Build Test Deploy

What to automate:● Dependency & configuration management

○ Using Puppet, Chef, Ansible, bash scripting● Compilation, minification of your assets● Running tests● Creation of documentation and changelogs● Packaging● Deployment

Page 9: Build & deploy PHP application (intro level)

Develop Build Test Deploy

How to build?

Page 10: Build & deploy PHP application (intro level)

Develop Build Test DeployHow to build? Why do you need a build tool?● To prepare a project to act in a specific environment

Should be no room for misconfiguration

● Staging should have environment similar to production

Page 11: Build & deploy PHP application (intro level)

Develop Build Test DeployExample flow:● Get project files from VCS● Configure● DB Migration● Run package managers and builders (npm, bower,

grunt)● Upload● Cache warmup● Clear opcache

Page 12: Build & deploy PHP application (intro level)

Develop Build Test DeployPopular build & deployment tools for PHP projects:● Bash scripting (Still hit #1)● Apache Ant● Phing● Capistrano● Fabric● http://en.wikipedia.org/wiki/List_of_build_automation_software

or use PaaS

Page 13: Build & deploy PHP application (intro level)

Develop Build Test Deploy

PHP PaaS Providers:PagodaBoxAppFogHerokufortrabbitEngine Yard CloudRed Hat OpenShift PlatformdotCloudhttp://www.phptherightway.com/#servers_and_deployment

AWS Elastic BeanstalkcloudControlWindows AzureZend Developer CloudGoogle App EngineJelastic

Page 14: Build & deploy PHP application (intro level)

Develop Build Test Deploy

● Bash scripting = be creative as you wish● Jenkins CI + Apache Ant + jenkins-php.org = great

starting point● Phing = “Apache Ant written in PHP”● Capistrano● Fabric

Page 15: Build & deploy PHP application (intro level)

Develop Build Test Deploy

● Bash scripting = be creative as you wish● Jenkins CI + Apache Ant + jenkins-php.org = great

starting point● Phing = “Apache Ant written in PHP”● Capistrano = for builds and deployments● Fabric

Page 16: Build & deploy PHP application (intro level)

Develop Build Test Deploy

Capistrano is an open source tool for running scripts on multiple servers. It’s primary use is for easily deploying applications.capifony is a deployment recipes collection that works with both symfony and Symfony2 applications.Source: capifony.org

Page 17: Build & deploy PHP application (intro level)

Develop Build Test Deploy

# gem install hipchat newrelic_rpmif exists?(:config_hipchat_token) require 'hipchat/capistrano' set :hipchat_token, "#{config_hipchat_token}" set :hipchat_room_name, "Developers chat"end

# Recipe:# github.com/ekino/EkinoNewRelicBundle/blob/master/Resources/recipes/newrelic.rb if exists?(:config_newrelic_license) require 'new_relic/recipes' set :newrelic_license_key, "#{config_newrelic_license}" set :newrelic_appname, "You name it" after "deploy", "newrelic:notice_deployment"end

Capifony sugar (1/4):

Page 18: Build & deploy PHP application (intro level)

Develop Build Test Deploy

after "symfony:composer:install", "symfony:verify_console"

namespace :symfony do task :verify_console do capifony_pretty_print "--> Run app/console to verify if parameters.yml has all required keys and application is runnable"

if capture("#{try_sudo} sh -c 'cd #{latest_release} && #{php_bin} #{symfony_console} > /tmp/app_console_output 2>&1 ; echo $?'").to_s.strip != "0" run "cat /tmp/app_console_output && rm -rf /tmp/app_console_output" raise CommandError.new("There was an unrecoverable error.") end

capifony_puts_ok endend

Capifony sugar (2/4):

Page 19: Build & deploy PHP application (intro level)

Develop Build Test Deploy

# Update assets_version# Source: https://github.com/kachkaev/KachkaevAssetsVersionBundle

namespace :assets_version do task :increment do capifony_pretty_print "--> Increment assets_version"

run "#{try_sudo} sh -c 'cd #{latest_release} && #{php_bin} #{symfony_console} assets_version:increment --env=#{symfony_env_prod}'"

capifony_puts_ok endend

Capifony sugar (3/4):

Page 20: Build & deploy PHP application (intro level)

Develop Build Test Deploy

# Run migration on one DB server instead of all:

role :web, "www1.mysite.com", "www2.mysite.com"role :app, "www1.mysite.com", "www2.mysite.com"

role :db, "db1.mysite.com", :primary => truerole :db, "db2.mysite.com"role :db, "db3.mysite.com"

Capifony sugar (4/4):

Page 21: Build & deploy PHP application (intro level)

Develop Build Test Deploy

Capifony questions?http://stackoverflow.com/questions/tagged/capifony

Want something with GUI?http://www.deployhq.com/

Page 22: Build & deploy PHP application (intro level)

Develop Build Test Deploy

Questions?

Questions?

Questions?

Questions?

Page 23: Build & deploy PHP application (intro level)

Thanks!


Recommended