Options for deploying PHP applications
Upcoming SlideShare
Loading in...5
×
 

Options for deploying PHP applications

on

  • 11,464 views

For many PHP shops, moving code from development to production sounds like it should be easy, and it can be. The problem is that sometimes deployment strategies can result in longer downtime than is ...

For many PHP shops, moving code from development to production sounds like it should be easy, and it can be. The problem is that sometimes deployment strategies can result in longer downtime than is desired, rollbacks can be difficult or there can even be uncertainty on what is actually in the production environment.

Watch the webinar at http://www.zend.com/webinar/Server/70170000000bHsS-webinar-guidelines-for-deploying-php-applications-20100617.flv and read the blog posts at http://www.eschrade.com/search/tag/id/deployment.

Statistics

Views

Total Views
11,464
Views on SlideShare
8,074
Embed Views
3,390

Actions

Likes
3
Downloads
72
Comments
1

7 Embeds 3,390

http://www.eschrade.com 3370
http://eschrade.com 7
http://translate.googleusercontent.com 4
http://www.linkedin.com 4
http://webcache.googleusercontent.com 2
http://r.eschrade.com 2
http://pinggu.baidu.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • You may want to check out our deploydo (http://www.deploy.do). It takes care of the whole process and even shows you line-by-line comparisons when updating code. The goal is to make it very easy for the developers and sysadmins so that they can focus on their actual work :-)
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Options for deploying PHP applications Options for deploying PHP applications Presentation Transcript

  • Guidelines for deploying PHP applications
    By Kevin Schroeder
    Technology Evangelist
    Zend Technologies
  • About me
    Kevin Schroeder
    Technology Evangelist for Zend
    Programmer
    Sys Admin
    Author
    IBM i Programmer’s Guide to PHP
    You want to do WHAT with PHP?
    Coming up
    Race Ferraris on the weekend
    My Honda has a dismal win record
  • If you have a question you can
    Type in the Q&A panel
    Follow us!
    Zend Technologies
    http://twitter.com/zend
    http://twitter.com/kpschrade (me!)
  • Agenda
    What we will be talking about
    Deployment->Testing->Staging->Production
    Rsync/SVN/PEAR/yum mechanisms
    What we will not be talking about
    Build tools (Phing, Maven, etc.)
    Database versioning/deployment
    Continuous Integration
    MSI installs (Sorry MS folks, I really wanted to but, y’know, time)
    Test-Driven Development
  • Application Stages
    | 5
    Increasing Maturity of PHP Applications
    Development
    Testing/QA
    Staging
    Production
  • Maturity
    | 6
    Increasing Maturity of PHP Applications
    Uptime!!
    Testing & Validating Environment
    Testing & Validating Application
    Distinct Dev Environments
    Benefit
    Where are you?
    Structure
  • Development
    Purpose
    To provide developers an environment to write their code
    Characteristics
    Should be similar to production, though it usually isn’t
    Often more open security
    Usually local to the developer, though not required
  • Testing
    Purpose
    To provide a non-programming environment to test functionality
    Characteristics
    Continuous Integration could be included
    Generally no development occurs, only testing
    Developers should not do the testing, if possible
    Restricted outbound networking
    Use Zend Server Monitoring and Code Tracing to help reproduce errors
  • Prepared for and handed off to System Administrators
    (the stuff we’re here to talk about)
  • Staging
    Purpose
    To test your deployment process/scripting (not your code)
    Characteristics
    Developers generally do not have access, unless they are also the sysadmin
    Very restricted outbound networking
    Mirrors production as best as possible
  • Change Control
    A formal process used to ensure that changes are introduced in a controlled and coordinated manner
    Protect against unnecessary changes introduced to a system without forethought
    Requires documenting the release process
    Software version number
    Plans for rollback (tested? y/n)
    Expected outage time
    Customer impact
    Done prior to doing anything in production
  • Pre-Production (Optional)
    Purpose
    Test the code in the production environment without impacting customers
    Characteristics
    Not likely to have use in the cloud or large scale deployments
    Deployed in production immediately prior to making it live
    Test the application with production settings without customer interaction
  • Production
    • Purpose
    • Do whatever it is that it’s supposed to be doing
    • Characteristics
    • Developers do not have access (as they might be tempted to fix something)
    Deployment should be done without requiring developer input
    • Very limited inbound traffic – generally only the service that is being served. i.e. HTTP
  • Application considerations
    Build the application to be aware of different environments
    Zend_Config_* is good at this
    Do not set the environment type in your code
    Environment variables can be placed in server config
    It means that you won’t accidentally keep your development settings turned on in production
    Make production your default environment
    Keeps accidental data leakage to a minimum
  • Deployment Option 1 – rsync
    Benefits
    Easy
    Already installed on your system
    Drawbacks
    No deployment script can be run
    Not integrated with either PHP or the OS
    Rollbacks require rolling back the entire source server
    Does not understand versioning
    One option is to move the source tree prior to the rsync
    Uses xinetd
  • Deployment Option 2 – Source Control
    Benefits
    Easy
    You should already be using source control
    Has versioning
    Can have pre/post install scripts
    Easy to do automatic deployments
    Drawbacks
    Do you want to put details on how to access your source code on your production box?
    Requires that your source control is accessible from production
    Deny access to .svn directories
  • Deployment Option 3 – PEAR
    Benefits
    Designed for PHP
    Very scriptable
    Natural for doing things like clearing a cache
    Has a better understanding of PHP
    Cross platform compatible
    Drawbacks
    Requires admins to be familiar with PHP code
    Limited to PHP deployment
    Available tooling is restrictive/build your own package.xml
  • Deployment Option 4 - OS-based
    Benefits
    Easily added as part of your server deployment
    Very cloud friendly
    Admins already know how to use it
    Can describe OS-requirements
    Downtime limited to actual install, not network transfer time
    Drawbacks
    Depends on environment
    Any PHP deployment scripting needs to be deployed with the application and executed in %post hook
    E.g. Invalidating the cache
  • Which should you use?
    Need something simple? rsync
    Need to deploy to multiple disparate platforms? PEAR
    Need to deploy internally/with minimal developer input?OS (yum/apt)
    If using the OS consider maintaining an internal “blessed” repository instead of depending on the distribution
  • Continuous Deployment
    Using automated deployment
    Very tight end-to-end integration
    Requires a lot of trust that the developers have a fully tested application w/ backend and frontend code
    Probably more work to manage if you can count the servers in your production environment with your fingers
    Could be beneficial but make sure you know what you’re doing
    You will need to have several testing experts
  • Takeaways
    No need for copy-and-paste deployment
    No need for (S)FTP
    Have an easy rollback mechanism
    Prepare for errors in deployment
    Try to minimize the amount of scripting needed for deployment
    Consider using VMs on anything important to keep downtime to zero
  • If you have a question you can
    Type in the Q&A panel
    Follow us!
    Zend Technologies
    http://twitter.com/zend
    http://twitter.com/kpschrade (me!)
  • Get this information and all the examples at eschrade.com… once I’ve written it