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