Patchwork uses the django framework - there is some background on deploying
django applications here:
- http://www.djangobook.com/en/1.0/chapter20/
+ http://www.djangobook.com/en/2.0/chapter12/
You'll need the following (applications used for patchwork development are
in brackets):
* A python interpreter
- * django
+ * django >= 1.2
* A webserver (apache)
* mod_python or flup
* A database server (postgresql)
user that your mail server runs as). On Ubuntu these are
www-data and nobody, respectively.
- For PostgreSQL
+ As an alternative, you can use password-based login and a single database
+ account. This is described further down.
+
+ For PostgreSQL (ident-based)
$ createdb patchwork
$ createuser www-data
will only be accessible for processes running as the same username.
This means that no passwords need to be set.
- For MySQL:
+ For PostgreSQL (password-based)
+
+ $ createuser -PE patchwork
+ $ createdb -O patchwork patchwork
+
+ Once that is done, you need to tell Django about the new Database
+ settings, using local_settings.py (see below) to override the defaults
+ in settings.py:
+
+ DATABASE_ENGINE = 'postgresql_psycopg2'
+ DATABASE_NAME = 'patchwork'
+ DATABASE_USER = 'patchwork'
+ DATABASE_PASSWORD = 'my_secret_password
+ DATABASE_HOST = 'localhost'
+ DATABASE_PORT = ''
+
+ For MySQL:
$ mysql
> CREATE DATABASE 'patchwork';
> CREATE USER 'www-data'@'localhost' IDENTIFIED BY '<password>';
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.0 or
+ At the time of release, patchwork depends on django version 1.2 or
later. Your distro probably provides this. If not, do a:
cd lib/packages
cd lib/packages/
hg clone http://bitbucket.org/ubernostrum/django-registration/
cd ../python
- ln -s ../lib/packages/django-registration/registration ./registration
+ ln -s ../packages/django-registration/registration ./registration
We also use some Javascript libraries:
cd apps/
PYTHONPATH=../lib/python ./manage.py syncdb
- And add privileges for your mail and web users:
+ 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
3. Apache setup
-Example apache configuration files are in lib/apache/.
+Example apache configuration files are in lib/apache2/.
+
+wsgi:
+ django has built-in support for WSGI, which supersedes the fastcgi
+ handler. It is thus the preferred method to run patchwork.
+
+ The necessary configuration for Apache2 may be found in
+
+ lib/apache2/patchwork.wsgi.conf.
+
+ You will need to install/enable mod_wsgi for this to work:
+
+ a2enmod wsgi
+ apache2ctl restart
mod_python:
- This should be the simpler of the two to set up. An example apache
- configuration file is in:
+ An example apache configuration file for mod_python is in:
- lib/apache/patchwork.mod_python.conf
+ lib/apache2/patchwork.mod_python.conf
However, mod_python and mod_php may not work well together. So, if your
web server is used for serving php files, the fastcgi method may suit
django has built-in support for fastcgi, which requires the
'flup' python module. An example configuration is in:
- lib/apache/patchwork.fastcgi.conf
+ lib/apache2/patchwork.fastcgi.conf
- this also requires the mod_rewrite apache module to be loaded.