23
© All rights reserved. Zend Technologies, Inc . Guidelines for deploying PHP applications By Kevin Schroeder Technology Evangelist Zend Technologies

Options for deploying PHP applications

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

Guidelines for deploying PHP applications

By Kevin Schroeder

Technology Evangelist

Zend Technologies

Page 2: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 3: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

• 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!)

Page 4: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 5: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

Application Stages

| 5 Increasing Maturity of PHP Applications

Development Testing/QA Staging Production

Page 6: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

Maturity

| 6 Increasing Maturity of PHP Applications

Testing & Validating

Application

Testing & Validating

Environment

Benefit

Structure

Distinct Dev Environments

Uptime!!

Where are you?

Page 7: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 8: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 9: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

Prepared for and handed off to System Administrators

(the stuff we’re here to talk about)

Page 10: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 11: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 12: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 13: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 14: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 15: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 16: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 17: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 18: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 19: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 20: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 21: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

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

Page 22: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

• 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!)

Page 23: Options for deploying PHP applications

©All rights reserved. Zend Technologies, Inc.

Get this information and all the examples at

eschrade.com… once I’ve written it