Hello HN, I am curious as to how everyone updates their web sites.<p>Right now I use symfony(PHP framework) for most of my projects and it can deploy using rsync. I'm curious to know how others deploy their sites. FTP? rsync? capistrano? etc?<p>Anyone use some type of multi server deploy? CDN?<p>Thanks
Fabric is pretty decent. It's popular among Django, Python crowd. But there's nothing stopping you from using it for any project.<p>Fabric + git pull should be enough to get rid of rsync. And you get instance version control on the server with rollbacks to any commit.
GIT/HG/SVN or whatever other source control system for my own stuff. I usually branch/tag off a version from trunk and then in prod suck down all updates and update to the new branch. Allows me to rollback pretty quickly which is nice.
Short version: Jenkins polls version control for changes, runs all tests and on success builds a package. Right now this is just a tar file but we plan to switch to rpms (we're on RHEL).<p>We run a script to deploy and use the same package on stage as we do on prod. We use puppet to manage staging and production configurations.<p>This process has made deployments for a complex system amazingly easy.
We use Heroku with a Cloudfront cdn and we wrote a small ruby script that uploads our assets to cloud front, pushes code to Heroku, and runs db migrations.<p>We just thought rolling our own was the easiest thing to do given the simplicity of the Heroku deployment process.
Rightscale scripts to provision new machines and Fabric to do the software deployments. We pushed a tarball up to S3, downloaded it to all the servers, untar the new deployment into a new directory, and then swap the symlinks/restart nginx either in a cascading fashion or all at once with a maintenance page depending on the complexity of the deployment (and if database changes were needed).
I use Phing (www.phing.info) to run the entire process which includes:<p>- export from SVN;<p>- snapshot/backup existing DB;<p>- modify/rename/move some files;<p>- tar/gzip backups and send to S3;<p>- DbDeploy to migrate DB;<p>- create documentation (phpDoc);<p>Things I want to do to improve the process:<p>- compressing/minifying JS and CSS files;<p>- copy static assets to a CDN/subdomain;<p>- create a rollback path (at the moment I only 'roll-forward')
capistrano via use a rake task to prepare assets and upload them to S3. cap also supports different roles, which we use to deploy utility scripts to a small micro utility server, and then the main stuff on our app/web servers