]> git.ozlabs.org Git - patchwork/blob - docs/INSTALL
Document dependency on django-registration
[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/packages
51          svn checkout http://code.djangoproject.com/svn/django/trunk django
52          cd ../python
53          ln -s ../packages/django/django ./django
54
55         We also use the django-registration infrastructure from
56         http://code.google.com/p/django-registration/
57
58          cd lib/packages/
59          svn checkout \
60              http://django-registration.googlecode.com/svn/trunk/registration/ \
61              django-registration
62          cd ../../apps
63          ln -s ../lib/packages/django-registration ./registration
64
65         You'll need to customise apps/settings.py to suit your database, and
66         change the SECRET_KEY variable too. While you're there, change the
67         following to suit your installation:
68
69           SECRET_KEY
70           ADMINS
71           TIME_ZONE
72           LANGUAGE_CODE
73           MEDIA_ROOT
74
75         You can generate the SECRET_KEY with the following python code:
76
77           import string, random
78           chars = string.letters + string.digits + string.punctuation
79           print repr("".join([random.choice(chars) for i in range(0,50)]))
80
81         Then, get patchwork to create its tables in your configured database:
82
83          cd apps/
84          ./manage.py syncdb
85
86         And add privileges for your mail and web users:
87
88         Postgresql:
89           psql -f lib/sql/grant-all.sql patchwork
90
91
92
93 3. Apache setup
94
95 Example apache configuration files are in lib/apache/.
96
97 mod_python:
98
99         This should be the simpler of the two to set up. An example apache
100         configuration file is in:
101
102           lib/apache/patchwork.mod_python.conf
103
104         However, mod_python and mod_php may not work well together. So, if your
105         web server is used for serving php files, the fastcgi method may suit
106         instead.
107
108 fastcgi:
109
110         django has built-in support for fastcgi, which requires the
111         'flup' python module. An example configuration is in:
112
113           lib/apache/patchwork.fastcgi.conf
114
115         - this also requires the mod_rewrite apache module to be loaded.
116
117         Once you have apache set up, you can start the fastcgi server with:
118
119           cd /srv/patchwork/apps
120           ./manage.py runfcgi method=prefork \
121                               socket=/srv/patchwork/var/fcgi.sock \
122                               pidfile=/srv/patchwork/var/fcgi.pid
123
124 4. Configure patchwork
125     Now, you should be able to administer patchwork, by visiting the
126     URL:
127
128       http://your-host/admin/
129
130     You'll probably want to do the following:
131
132       * Set up your projects
133       * Configure your website address (in the Sites) section of the admin
134
135 5. Subscribe a local address to the mailing list
136
137      You will need an email address for patchwork to receive email on - for
138      example - patchwork@, and this address will need to be subscribed to the
139      list. Depending on the mailing list, you will probably need to confirm the
140      subscription - temporarily direct the alias to yourself to do this.
141
142 6. Setup your MTA to deliver mail to the parsemail script
143
144     Your MTA will need to deliver mail to the parsemail script in the email/
145     directory. (Note, do not use the parsemail.py script directly). Something
146     like this in /etc/aliases is suitable for postfix:
147
148       patchwork: "|/srv/patchwork/apps/patchwork/bin/parsemail.sh"
149
150     You may need to customise the parsemail.sh script if you haven't installed
151     patchwork in /srv/patchwork.
152
153     Test that you can deliver a patch to this script:
154
155      sudo -u nobody /srv/patchwork/apps/patchwork/bin/parsemail.sh < mail
156
157
158 Some errors:
159
160 * __init__() got an unexpected keyword argument 'max_length'
161
162  - you're running an old version of django. If your distribution doesn't
163    provide a newer version, just download and extract django into
164    lib/python/django
165
166 * ERROR: permission denied for relation patchwork_...
167
168  - the user that patchwork is running as (ie, the user of the web-server)
169    doesn't have access to the patchwork tables in the database. Check that
170    your web-server user exists in the database, and that it has permissions
171    to the tables.