]> git.ozlabs.org Git - patchwork/blob - docs/INSTALL
7d0df1234118e42687c6effbb32dae53f1778952
[patchwork] / docs / INSTALL
1 Deploying Patchwork
2
3 Patchwork uses the django framework - there is some background on deploying
4 django applications here:
5
6  http://www.djangobook.com/en/1.0/chapter20/
7
8 You'll need the following (applications used for patchwork development are
9 in brackets):
10
11   * A python interpreter
12   * djano
13   * A webserver (apache)
14   * mod_python or flup
15   * A database server (postgresql)
16
17 1. Database setup
18
19     At present, I've tested with PostgreSQL and (to a lesser extent) MySQL
20     database servers. If you have any (positive or negative) experiences with
21     either, email me.
22
23     For the following commands, a $ prefix signifies that the command should be
24     entered at your shell prompt, and a > prefix signifies the commant-line
25     client for your sql server (psql or mysql)
26
27     Create a database for the system, add accounts for two system users: the
28     web user (the user that your web server runs as) and the mail user (the
29     user that your mail server runs as). On Ubuntu these are
30     www-data and nobody, respectively.
31
32       PostgreSQL:
33         createdb patchwork
34         createuser www-data
35         createuser nobody
36
37       MySQL:
38         $ mysql
39         > CREATE DATABASE 'patchwork';
40         > INSERT INTO user (Host, User) VALUES ('localhost', 'www-data');
41         > INSERT INTO user (Host, User) VALUES ('localhost', 'nobody');
42
43 2. Django setup
44
45         At the time of initial release, patchwork depends on a svn version of
46         django. I've been using svn commit 7854 - but anything after this
47         point should be fine. If your distribution provides a sufficiently
48         recent version of django, you can use that; if not, do a:
49
50          cd lib/python
51          svn checkout http://code.djangoproject.com/svn/django/trunk .
52
53         You'll need to customise apps/settings.py to suit your database, and
54         change the SECRET_KEY variable too. While you're there, change the
55         following to suit your installation:
56
57           SECRET_KEY
58           ADMINS,
59           TIME_ZONE
60           LANGUAGE_CODE
61           MEDIA_ROOT
62
63         You can generate the SECRET_KEY with the following python code:
64
65           import string, random
66           chars = string.letters + string.digits + string.punctuation
67           print repr("".join([random.choice(chars) for i in range(0,50)]))
68
69         Then, get patchwork to create its tables in your configured database:
70
71          cd apps/
72          ./manage.py syncdb
73
74         And add privileges for your mail and web users:
75
76         Postgresql:
77           psql -f lib/sql/grant-all.sql patchwork
78
79
80 3. Apache setup
81
82 Example apache configuration files are in lib/apache/.
83
84 mod_python:
85
86         This should be the simpler of the two to set up. An example apache
87         configuration file is in:
88
89           lib/apache/patchwork.mod_python.conf
90
91         However, mod_python and mod_php may not work well together. So, if your
92         web server is used for serving php files, the fastcgi method may suit
93         instead.
94
95 fastcgi:
96
97         django has built-in support for fastcgi, which requires the
98         'flup' python module. An example configuration is in:
99
100           lib/apache/patchwork.fastcgi.conf
101
102         - this also requires the mod_rewrite apache module to be loaded.
103
104         Once you have apache set up, you can start the fastcgi server with:
105
106           cd /srv/patchwork/apps
107           ./manage.py runfcgi method=prefork \
108                               socket=/srv/patchwork/var/fcgi.sock \
109                               pidfile=/srv/patchwork/var/fcgi.pid
110
111 4. Configure patchwork
112     Now, you should be able to administer patchwork, by visiting the
113     URL:
114
115       http://your-host/admin/
116
117     You'll probably want to do the following:
118
119       * Set up your projects
120       * Configure your website address (in the Sites) section of the admin
121
122 5. Subscribe a local address to the mailing list
123
124      You will need an email address for patchwork to receive email on - for
125      example - patchwork@, and this address will need to be subscribed to the
126      list. Depending on the mailing list, you will probably need to confirm the
127      subscription - temporarily direct the alias to yourself to do this.
128
129 6. Setup your MTA to deliver mail to the parsemail script
130
131     Your MTA will need to deliver mail to the parsemail script in the email/
132     directory. (Note, do not use the parsemail.py script directly). Something
133     like this in /etc/aliases is suitable for postfix:
134
135       patchwork: "|/srv/patchwork/apps/patchwork/bin/parsemail.sh"
136
137     You may need to customise the parsemail.sh script if you haven't installed
138     patchwork in /srv/patchwork.
139
140     Test that you can deliver a patch to this script:
141
142      sudo -u nobody /srv/patchwork/apps/patchwork/bin/parsemail.sh < mail
143
144
145 Some errors:
146
147 * __init__() got an unexpected keyword argument 'max_length'
148
149  - you're running an old version of django. If your distribution doesn't
150    provide a newer version, just download and extract django into
151    lib/python/django
152
153 * ERROR: permission denied for relation patchwork_...
154
155  - the user that patchwork is running as (ie, the user of the web-server)
156    doesn't have access to the patchwork tables in the database. Check that
157    your web-server user exists in the database, and that it has permissions
158    to the tables.