
Ask HN: How do you deploy your web sites? - f1gm3nt
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
======
sidmitra
Fabric is pretty decent. It's popular among Django, Python crowd. But there's
nothing stopping you from using it for any project.

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.

------
boyter
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.

------
lxt
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).

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.

This process has made deployments for a complex system amazingly easy.

------
malyk
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.

We just thought rolling our own was the easiest thing to do given the
simplicity of the Heroku deployment process.

------
andrewjshults
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).

------
albahk
I use Phing (www.phing.info) to run the entire process which includes:

\- export from SVN;

\- snapshot/backup existing DB;

\- modify/rename/move some files;

\- tar/gzip backups and send to S3;

\- DbDeploy to migrate DB;

\- create documentation (phpDoc);

Things I want to do to improve the process:

\- compressing/minifying JS and CSS files;

\- copy static assets to a CDN/subdomain;

\- create a rollback path (at the moment I only 'roll-forward')

------
latch
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

------
masonhensley
Pagodabox.com

Single click to deploy live from a github repo...

------
matthodan
GIT

~~~
mcrider
\+ Post-receive hook so I don't have to log in to the remote machine to update
it.

------
macca321
dropbox! i have it running as a service on my server

