aboutsummaryrefslogtreecommitdiffstats
path: root/doc/DEPLOY.md
blob: f2e643ec5cb8921876d6e4d062107637b7332cc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Deployment

mySociety uses a custom deployment and buildout system however Capistrano is included as part of Alaveteli as a standard deployment system.

## Capistrano

### Set up

First you need to customise your deployment settings, e.g. the name of the server you're deploying to. This is done by copying the example file `config/deploy.yml.example` to `config/deploy.yml` and editing the settings to suit you.

TODO: The following instructions could be greatly improved

These are the general steps required to get your staging server up and running:

* Install packages from `config/packages`
* Install Postgres and configure a user
* Create a directory to deploy to and make sure your deployment user can write to it
* Run `cap deploy:setup` to create directories, etc.
* Run `cap deploy:update_code` so that we've got a copy of the example config on the server. This process will take a long time installing gems, etc. it will also fail on `rake:themes:install` but that's OK
* SSH to the server, change to the `deploy_to` directory
* `cp releases/[SOME_DATE]/config/general.yml-example shared/general.yml`
* `cp releases/[SOME_DATE]/config/database.yml-example shared/database.yml`
* Edit those files to match your required settings
* Back on your machine run `cap deploy` and it should successfully deploy
* Run the DB migrations `cap deploy:migrate`
* Build the Xapian DB `cap xapian:rebuild_index`
* Configure Apache/Passenger with a DocumentRoot of `your_deploy_to/current/public`
* Phew. Time to admire your work by browsing to the server!

### Usage

Ensure you've got a `config/deploy.yml` file with the correct settings for your site. You'll need to share this with everyone in your team that deploys so it might be a good idea to keep the latest version in a [Gist](http://gist.github.com/).

To deploy to staging just run `cap deploy` but if you want to deploy to production you need to run `cap -S stage=production deploy`.

For additional usage instructions, see the [Capistrano wiki](https://github.com/capistrano/capistrano/wiki/).

### TODO

* Get `cap deploy:setup` to do most of the work described above in the *Set up* section
* Use [Whenever](https://github.com/javan/whenever) to set up cronjobs