summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/INSTALL103
1 files changed, 57 insertions, 46 deletions
diff --git a/docs/INSTALL b/docs/INSTALL
index 84114f5..16ab2b5 100644
--- a/docs/INSTALL
+++ b/docs/INSTALL
@@ -15,6 +15,7 @@ in brackets):
* A database server (postgresql, mysql)
* relevant python modules for the database server (e.g: python-mysqldb)
+
1. Database setup
At present, I've tested with PostgreSQL and (to a lesser extent) MySQL
@@ -89,69 +90,71 @@ in brackets):
it, tests checking for the correct handling of non-ASCII characters
fail.
+
2. Django setup
- Set up some initial directories in the patchwork base directory:
+ Set up some initial directories in the patchwork base directory:
- mkdir -p lib/packages lib/python
+ mkdir -p lib/packages lib/python
- lib/packages is for stuff we'll download; lib/python is to add
- to our python path. We'll symlink python modules into lib/python.
+ lib/packages is for stuff we'll download; lib/python is to add
+ to our python path. We'll symlink python modules into lib/python.
- At the time of release, patchwork depends on django version 1.5 or
- later. Your distro probably provides this. If not, do a:
+ At the time of release, patchwork depends on django version 1.5 or
+ later. Your distro probably provides this. If not, do a:
- cd lib/packages
- git clone https://github.com/django/django.git -b stable/1.5.x
- cd ../python
- ln -s ../packages/django/django ./django
+ cd lib/packages
+ git clone https://github.com/django/django.git -b stable/1.5.x
+ cd ../python
+ ln -s ../packages/django/django ./django
- The settings.py file contains default settings for patchwork, you'll
- need to configure settings for your own setup.
+ The settings.py file contains default settings for patchwork, you'll
+ need to configure settings for your own setup.
- Rather than edit settings.py, create a file 'local_settings.py', and
- override or add settings as necessary. You'll need to define the
- following:
+ Rather than edit settings.py, create a file 'local_settings.py', and
+ override or add settings as necessary. You'll need to define the
+ following:
- SECRET_KEY
- ADMINS
- TIME_ZONE
- LANGUAGE_CODE
- DEFAULT_FROM_EMAIL
- NOTIFICATION_FROM_EMAIL
+ SECRET_KEY
+ ADMINS
+ TIME_ZONE
+ LANGUAGE_CODE
+ DEFAULT_FROM_EMAIL
+ NOTIFICATION_FROM_EMAIL
- You can generate the SECRET_KEY with the following python code:
+ You can generate the SECRET_KEY with the following python code:
- import string, random
- chars = string.letters + string.digits + string.punctuation
- print repr("".join([random.choice(chars) for i in range(0,50)]))
+ import string, random
+ chars = string.letters + string.digits + string.punctuation
+ print repr("".join([random.choice(chars) for i in range(0,50)]))
- If you wish to enable the XML-RPC interface, add the following to
- your local_settings.py file:
+ If you wish to enable the XML-RPC interface, add the following to
+ your local_settings.py file:
- ENABLE_XMLRPC = True
+ ENABLE_XMLRPC = True
- Then, get patchwork to create its tables in your configured database:
+ Then, get patchwork to create its tables in your configured database:
- cd apps/
- PYTHONPATH=../lib/python ./manage.py syncdb
+ cd apps/
+ PYTHONPATH=../lib/python ./manage.py syncdb
- And add privileges for your mail and web users. This is only needed if
- you use the ident-based approach. If you use password-based database
- authentication, you can skip this step.
+ And add privileges for your mail and web users. This is only needed if
+ you use the ident-based approach. If you use password-based database
+ authentication, you can skip this step.
- Postgresql:
- psql -f lib/sql/grant-all.postgres.sql patchwork
+ Postgresql:
+ psql -f lib/sql/grant-all.postgres.sql patchwork
- MySQL:
- mysql patchwork < lib/sql/grant-all.mysql.sql
+ MySQL:
+ mysql patchwork < lib/sql/grant-all.mysql.sql
3. Apache setup
-Example apache configuration files are in lib/apache2/.
+ Example apache configuration files are in lib/apache2/.
+
+ wsgi:
-wsgi:
django has built-in support for WSGI, which supersedes the fastcgi
handler. It is thus the preferred method to run patchwork.
@@ -164,7 +167,8 @@ wsgi:
a2enmod wsgi
apache2ctl restart
-mod_python:
+
+ mod_python:
An example apache configuration file for mod_python is in:
@@ -174,7 +178,8 @@ mod_python:
web server is used for serving php files, the fastcgi method may suit
instead.
-fastcgi:
+
+ fastcgi:
django has built-in support for fastcgi, which requires the
'flup' python module. An example configuration is in:
@@ -190,6 +195,7 @@ fastcgi:
socket=/srv/patchwork/var/fcgi.sock \
pidfile=/srv/patchwork/var/fcgi.pid
+
4. Configure patchwork
Now, you should be able to administer patchwork, by visiting the
URL:
@@ -201,12 +207,14 @@ fastcgi:
* Set up your projects
* Configure your website address (in the Sites) section
+
5. Subscribe a local address to the mailing list
- You will need an email address for patchwork to receive email on - for
- example - patchwork@, and this address will need to be subscribed to the
- list. Depending on the mailing list, you will probably need to confirm the
- subscription - temporarily direct the alias to yourself to do this.
+ You will need an email address for patchwork to receive email on - for
+ example - patchwork@, and this address will need to be subscribed to the
+ list. Depending on the mailing list, you will probably need to confirm the
+ subscription - temporarily direct the alias to yourself to do this.
+
6. Setup your MTA to deliver mail to the parsemail script
@@ -223,6 +231,7 @@ fastcgi:
sudo -u nobody /srv/patchwork/apps/patchwork/bin/parsemail.sh < mail
+
7. Set up the patchwork cron script
Patchwork uses a cron script to clean up expired registrations, and
@@ -239,6 +248,7 @@ fastcgi:
- the frequency should be the same as the NOTIFICATION_DELAY_MINUTES
setting, which defaults to 10 minutes.
+
8. Optional: Configure your VCS to automatically update patches
The tools directory of the patchwork distribution contains a file
@@ -257,6 +267,7 @@ fastcgi:
similar hook using pwclient to update patch state. If you do write
one, please contribute it.
+
Some errors:
* __init__() got an unexpected keyword argument 'max_length'