Nesta CMS

A Ruby CMS. Built with Sinatra.

Deploying with Vlad

Though Heroku is awesome, it isn't for everybody. You get more
flexibility if you deploy Nesta to your own web server. For example, you
can install themes as submodules (allowing you to pull in the author's
latest changes), or run multiple applications using different
technologies on the same domain.

Getting Nesta running

Nesta works just like any other Sinatra application and can be setup
with a range of web servers. I'm a fan of both Phusion
Passenger and Unicorn running behind Nginx, but
you can use Apache just as easily.

I'm not going to go into details on setting up a production Ruby web
stack here, as there's every chance that you already know what you're
doing. If you don't, you get stuck, and you can't use Heroku for some
reason, please get in touch on the mailing list.

Once your stack is up and running you need to push your site to your
server. I have historically used Vlad in favour of Capistrano, but you
can do it any way you like. Capistrano has improved a lot since
I chose to use Vlad and I suspect I'd use Capistrano now if I was
configuring a new server. If you want a step by step guide to setting up
a deployment system my article on deploying Sinatra with Vlad
may come in handy.

Enabling page caching

If you'd like to write the HTML and CSS that Nesta generates to disk the
first time that they're requested, so that your web server (e.g. Nginx
or Apache) can serve it directly from the disk on subsequent requests,
see the docs on setting up page caching.

Installing themes as Git submodules

Installing themes as submodules makes it very easy to keep your chosen
theme up to date with the author's latest changes.

Using a Git submodule is only slightly more involved than committing the
theme to your local repository. Instead of nesta theme:install, type
this:

Sadly Git submodules aren't an option if you're deploying to Heroku, as
Heroku doesn't support them. Some people also find submodules fiddly to
maintain, and Gerhard Lazu has suggested giternal as a
suitable replacement. I've not had a chance to try giternal yet, but
wonder if it'll also work on Heroku...