]> git.ozlabs.org Git - patchwork/blobdiff - docs/INSTALL
js: Add jquery and jquery tablednd plugins
[patchwork] / docs / INSTALL
index 42822e3650aac51c9b788c15a73dbecb51174b07..cb71cdd3eb8845bc7c85a3e06c3985831d0a4303 100644 (file)
@@ -3,13 +3,13 @@ Deploying Patchwork
 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
-  * djano
+  * django >= 1.2
   * A webserver (apache)
   * mod_python or flup
   * A database server (postgresql)
@@ -29,19 +29,38 @@ in brackets):
     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
         $ createuser nobody
 
-       - postgres uses the standard UNIX authentication, so these users
-         will only be accessible for processes running as the same username.
-         This means that no passwords need to be set.
+        - postgres uses the standard UNIX authentication, so these users
+          will only be accessible for processes running as the same username.
+          This means that no passwords need to be set.
+
+    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:
 
-     For MySQL:
+        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 DATABASE 'patchwork';
         > CREATE USER 'www-data'@'localhost' IDENTIFIED BY '<password>';
         > CREATE USER 'nobody'@'localhost' IDENTIFIED BY '<password>';
 
@@ -49,38 +68,32 @@ in brackets):
 
         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.
 
-        At the time of release, patchwork depends on django version 1.0.
-        However, most distros don't provide 1.0 yet. If yours does, then you
-        can skip this step. Otherwise, do a:
+        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
-         svn checkout http://code.djangoproject.com/svn/django/tags/releases/1.0
+         svn checkout http://code.djangoproject.com/svn/django/tags/releases/1.2
          cd ../python
          ln -s ../packages/django/django ./django
 
-        We also use the django-registration infrastructure from
-        http://code.google.com/p/django-registration/
-
-         cd lib/packages/
-         svn checkout \
-             http://django-registration.googlecode.com/svn/trunk/registration/ \
-             django-registration
-         cd ../../apps
-         ln -s ../lib/packages/django-registration ./registration
-
-       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
+          SECRET_KEY
+          ADMINS
+          TIME_ZONE
+          LANGUAGE_CODE
+          DEFAULT_FROM_EMAIL
+          NOTIFICATION_FROM_EMAIL
 
         You can generate the SECRET_KEY with the following python code:
 
@@ -88,61 +101,75 @@ in brackets):
           chars = string.letters + string.digits + string.punctuation
           print repr("".join([random.choice(chars) for i in range(0,50)]))
 
-       If you have patchwork installed in somewhere other than /srv/patchwork,
-       you'll also need to define:
+        If you have patchwork installed in somewhere other than /srv/patchwork,
+        you'll also need to define:
 
-         MEDIA_ROOT
-         TEMPLATE_DIRS
+          MEDIA_ROOT
+          TEMPLATE_DIRS
 
         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:
+        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/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
-       instead.
+        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
+        instead.
 
 fastcgi:
 
-       django has built-in support for fastcgi, which requires the
-       'flup' python module. An example configuration is in:
+        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.
+        - this also requires the mod_rewrite apache module to be loaded.
 
-       Once you have apache set up, you can start the fastcgi server with:
+        Once you have apache set up, you can start the fastcgi server with:
 
-         cd /srv/patchwork/apps
-         ./manage.py runfcgi method=prefork \
-                             socket=/srv/patchwork/var/fcgi.sock \
-                             pidfile=/srv/patchwork/var/fcgi.pid
+          cd /srv/patchwork/apps
+          ./manage.py runfcgi method=prefork \
+                              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
@@ -192,3 +219,11 @@ Some errors:
    doesn't have access to the patchwork tables in the database. Check that
    your web-server user exists in the database, and that it has permissions
    to the tables.
+
+* pwclient fails for actions that require authentication, but a username
+  and password is given int ~/.pwclient rc. Server reports "No authentication
+  credentials given".
+
+ - if you're using the FastCGI interface to apache, you'll need the
+   '-pass-header Authorization' option to the FastCGIExternalServer
+   configuration directive.