write php deploy everywhere tek11

53
Write PHP, deploy anywhere Tek 11 - Chicago, IL (USA)

Upload: michelangelo-van-dam

Post on 29-Jan-2015

110 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Write php deploy everywhere   tek11

Write PHP, deploy anywhere

Tek 11 - Chicago, IL (USA)

Page 2: Write php deploy everywhere   tek11

I ’m a

Developer

Page 3: Write php deploy everywhere   tek11

I write code

Page 4: Write php deploy everywhere   tek11

Not a sysadmin

http://www.flickr.com/photos/scobleizer/4870003098/

Page 5: Write php deploy everywhere   tek11

Just want to run code

Page 6: Write php deploy everywhere   tek11
Page 7: Write php deploy everywhere   tek11

Deployment types

Page 8: Write php deploy everywhere   tek11

Live Hacking

Page 9: Write php deploy everywhere   tek11

Good old days

Page 10: Write php deploy everywhere   tek11

FTP deploy

Page 11: Write php deploy everywhere   tek11

Manual FTP deploy

Page 12: Write php deploy everywhere   tek11

Version control

Page 13: Write php deploy everywhere   tek11

Code management

Page 14: Write php deploy everywhere   tek11

Versioning concepts

Page 15: Write php deploy everywhere   tek11

Symlink switch oldpath/to/webapppath/to/webapp-1.0.2 -> path/to/webapppath/to/webapp-1.0.3

Page 16: Write php deploy everywhere   tek11

Symlink switch newpath/to/webapppath/to/webapp-1.0.2path/to/webapp-1.0.3 -> path/to/webapp

Page 17: Write php deploy everywhere   tek11

Automated deployment

Page 18: Write php deploy everywhere   tek11

Concept: build

• required steps• to “build” an application- validate- test- document- package

Page 19: Write php deploy everywhere   tek11

PHP provides the tools!

Page 20: Write php deploy everywhere   tek11

Phing

• build tool written in PHP- comparable to ANT- but written in PHP :-)

• impressive list of task templates• extensible for missing tasks

Page 21: Write php deploy everywhere   tek11

Phing HelloWorld!<?xml version="1.0" encoding="UTF-8"?><project name="demo" default="build"> <target name="build"> <echo msg="Hello World!"/> </target></project>

Page 22: Write php deploy everywhere   tek11
Page 23: Write php deploy everywhere   tek11

Export from SVN<property name="buildpath" value="./build"/><property name="repopath" value="https://svn.myserver.com/demo/trunk"/> <target name="prepare"> <delete dir="${buildpath}" includeemptydirs="true" quiet="true" verbose="false" failonerror="false" /> <mkdir dir="${buildpath}"/> </target> <target name="getsources" depends="prepare"> <svnexport svnpath="/usr/bin/svn" force="true" nocache="true" repositoryurl="${repopath}" todir="${buildpath}"/> </target>

Page 24: Write php deploy everywhere   tek11
Page 25: Write php deploy everywhere   tek11

Deployment targets

• scp• rsync• ftp• VCM deployments- cvs- svn- git- …

Page 26: Write php deploy everywhere   tek11

More info: phing.info

Page 27: Write php deploy everywhere   tek11

Anywhere deployment

Page 28: Write php deploy everywhere   tek11

Where to deploy to?

• bare metal servers• virtual servers- even cloud instances

• any OS (Windows, OSX, Linux, i5, …)

Page 29: Write php deploy everywhere   tek11

Linux server

Page 30: Write php deploy everywhere   tek11

Example deploy Linux<target name="deploy-linux"> <exec dir="./build" command="rsync -ruq [email protected]:/srv/www/demo"/></target>

Page 31: Write php deploy everywhere   tek11
Page 32: Write php deploy everywhere   tek11

Windows server

Page 33: Write php deploy everywhere   tek11

Deploy to windows<target name="deploy-windows" depends="version-bugfix"> <ftpdeploy host="${env.win-prod}" port="21" username="${auth.win-prod.username}" password="${auth.win-prod.password}" dir="/" mode="binary" clearfirst="false"> <fileset dir="."> <exclude=”./library/Zend”/> <exclude=”./library/ZendX”/> </fileset> </ftpdeploy></target>

Page 34: Write php deploy everywhere   tek11

Deploy to S3<target name="deploy-windows" depends="version-bugfix"> <ftpdeploy host="${env.win-prod}" port="21" username="${auth.win-prod.username}" password="${auth.win-prod.password}" dir="/" mode="binary" clearfirst="false"> <fileset dir="."> <exclude=”./library/Zend”/> <exclude=”./library/ZendX”/> </fileset> </ftpdeploy></target>

Page 35: Write php deploy everywhere   tek11

Windows Azure

Page 36: Write php deploy everywhere   tek11

A few remarks

• runs only on windows- but still uses phing :-)

• takes a considerable time to upload• instances are defined in the config

Page 37: Write php deploy everywhere   tek11

Setting properties<property name="cmd-cspack" value="c:\Program Files\Windows Azure SDK\v1.3\bin\cspack.exe" override="false"/><property name="cmd-csrun" value="c:\Program Files\Windows Azure SDK\v1.3\bin\csrun.exe" override="false"/>

Page 38: Write php deploy everywhere   tek11

Prepare for Azure<target name="prepare-azure" depends="version-bugfix"> <!-- start building in ./bldtmp --> <mkdir dir="./bldtmp" />

<copy todir="./bldtmp" overwrite="true"> <fileset dir="./deploy/azure"> <include name="**/*.*" /> </fileset> </copy> <copy todir="./bldtmp/PhpOnAzure.Web" overwrite="true"> <fileset dir="."> <include name="**/*"/> <include name="*"/> </fileset> </copy></target>

Page 39: Write php deploy everywhere   tek11

Deploy to Azure<target name="deploy-azure" depends="prepare-azure"> <exec command="&quot;${cmd-cspack}&quot; ServiceDefinition.csdef /role:PhpOnAzure.Web;PhpOnAzure.Web /out:PhpAzure.cspkg" dir="./bldtmp" /> <mkdir dir="./release/${phing.project.name}-${version.number}/azure-prod" /> <copy todir="./release/${phing.project.name}-${version.number}/azure-prod" overwrite="true"> <fileset dir="./bldtmp"> <include name="PhpOnAzure.cspkg"/> <include name="ServiceConfiguration.cscfg"/> </fileset> </copy></target>

Page 40: Write php deploy everywhere   tek11
Page 41: Write php deploy everywhere   tek11
Page 42: Write php deploy everywhere   tek11

Continuous Integration

Page 43: Write php deploy everywhere   tek11

Continuous Building

Page 44: Write php deploy everywhere   tek11
Page 45: Write php deploy everywhere   tek11

With CI

• always “ready to deploy” codebase• feedback on quality• documentation• more …

Page 46: Write php deploy everywhere   tek11

Considerations

Page 47: Write php deploy everywhere   tek11

Some reminders

• design your apps to work everywhere- use OOP abstraction layers- use plugins- take care of sessions!

• investigate “the other platform”- gives you a head start over competetion- teaches you the caveats

• “cloud” solutions are in high-demand- see what works best for your customer

Page 48: Write php deploy everywhere   tek11

automate what you might forget under stress!

Page 49: Write php deploy everywhere   tek11
Page 50: Write php deploy everywhere   tek11
Page 51: Write php deploy everywhere   tek11

Conclusion

Page 52: Write php deploy everywhere   tek11

1. deployment is simple2. automate the steps3. deploy to any platform

Page 53: Write php deploy everywhere   tek11

Thank you

• source code: http://github.com/DragonBe/zftest

• your rating:http://joind.in/3438

• follow me:- twitter: @DragonBe- facebook: DragonBe

Please use joind.in for feedback