write php deploy everywhere tek11
DESCRIPTION
TRANSCRIPT
![Page 1: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/1.jpg)
Write PHP, deploy anywhere
Tek 11 - Chicago, IL (USA)
![Page 2: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/2.jpg)
I ’m a
Developer
![Page 3: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/3.jpg)
I write code
![Page 4: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/4.jpg)
Not a sysadmin
http://www.flickr.com/photos/scobleizer/4870003098/
![Page 5: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/5.jpg)
Just want to run code
![Page 6: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/6.jpg)
![Page 7: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/7.jpg)
Deployment types
![Page 8: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/8.jpg)
Live Hacking
![Page 9: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/9.jpg)
Good old days
![Page 10: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/10.jpg)
FTP deploy
![Page 11: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/11.jpg)
Manual FTP deploy
![Page 12: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/12.jpg)
Version control
![Page 13: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/13.jpg)
Code management
![Page 14: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/14.jpg)
Versioning concepts
![Page 15: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/17.jpg)
Automated deployment
![Page 18: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/18.jpg)
Concept: build
• required steps• to “build” an application- validate- test- document- package
![Page 19: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/19.jpg)
PHP provides the tools!
![Page 20: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/22.jpg)
![Page 23: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/24.jpg)
![Page 25: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/25.jpg)
Deployment targets
• scp• rsync• ftp• VCM deployments- cvs- svn- git- …
![Page 26: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/26.jpg)
More info: phing.info
![Page 27: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/27.jpg)
Anywhere deployment
![Page 28: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/29.jpg)
Linux server
![Page 30: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/30.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/31.jpg)
![Page 32: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/32.jpg)
Windows server
![Page 33: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/33.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/34.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/35.jpg)
Windows Azure
![Page 36: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/36.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/37.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/38.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/39.jpg)
Deploy to Azure<target name="deploy-azure" depends="prepare-azure"> <exec command=""${cmd-cspack}" 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](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/40.jpg)
![Page 41: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/41.jpg)
![Page 42: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/42.jpg)
Continuous Integration
![Page 43: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/43.jpg)
Continuous Building
![Page 44: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/44.jpg)
![Page 45: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/45.jpg)
With CI
• always “ready to deploy” codebase• feedback on quality• documentation• more …
![Page 46: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/46.jpg)
Considerations
![Page 47: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/47.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/48.jpg)
automate what you might forget under stress!
![Page 49: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/49.jpg)
![Page 50: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/50.jpg)
![Page 51: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/51.jpg)
Conclusion
![Page 52: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/52.jpg)
1. deployment is simple2. automate the steps3. deploy to any platform
![Page 53: Write php deploy everywhere tek11](https://reader034.vdocuments.net/reader034/viewer/2022051819/54c93e174a7959e33d8b4585/html5/thumbnails/53.jpg)
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