I was listening to an episode of PHP Rountable (Thumbs Up, guys!) and I learned a bit about web and app deployment.
The Wikipedia entry for DevOps lists several of the latest cool tools. I’ve been hearing a lot about these:
- Docker (containerization) : Docker uses Linux isolation tools – similar idea to virtualization, but with a less-complete illusion of independent resources – to allow applications to run independently in a consistent environment. Essentially, you install Docker and use it to run the app that you really want to run. It is a kind of application wrapper. The goal is to deploy your application along with its environment so that it runs consistently everywhere. It is written in Go and is open source.
- Jenkins (continuous integration) : Jenkins lets you run your applications in a servlet container on a traditional Apache web/app server. A servlet container manages the lifecycle of a servlet, while the servlet itself responds to web requests and maintains state and cookies and such. Jenkins ties into this ecosystem by reconfiguring or restarting server components and running test suites as commits are made to source code repositories. It is written in Java and is open source.
- Puppet (infrastructure as code) : Puppet allows you to declaratively assemble configuration data about your server and code dependencies in a kind of object-oriented way. Tool installations, libraries, frameworks, and server instances can all be described by rules you created, and puppet will take care of assembling these within a Linux virtual server (VSP). Puppet actually works on several platforms, is written in Ruby, and is open source.
- Vagrant (virtualization platform) : Vagrant is a wrapper for VirtualBox, VMWare, and for isolation tools such as Linux containers. It is similar to Docker in that it manages a configured server within a server. Vagrant is written in Ruby and is open source.
There are Docker MeetUps in southern Virginia.
I recently needed to update a web site on an already-established server, so I did not have my familiar dev loop set up. SSH was unavailable, so I made use of git-ftp. It works very smoothly; I recommend it if you can’t ssh to your web server!