]> git.ozlabs.org Git - patchwork/blobdiff - docs/INSTALL
tox: Update versions of Django to be tested
[patchwork] / docs / INSTALL
index 55662931dd94430bdc044bf5ddccd7d1031d059d..bd9577023deed4e75d72be67575e0599f40f7e62 100644 (file)
@@ -15,6 +15,7 @@ in brackets):
   * A database server (postgresql, mysql)
   * relevant python modules for the database server (e.g: python-mysqldb)
 
   * 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
 1. Database setup
 
     At present, I've tested with PostgreSQL and (to a lesser extent) MySQL
@@ -22,7 +23,7 @@ in brackets):
     either, email me.
 
     For the following commands, a $ prefix signifies that the command should be
     either, email me.
 
     For the following commands, a $ prefix signifies that the command should be
-    entered at your shell prompt, and a > prefix signifies the commant-line
+    entered at your shell prompt, and a > prefix signifies the command-line
     client for your sql server (psql or mysql)
 
     Create a database for the system, add accounts for two system users: the
     client for your sql server (psql or mysql)
 
     Create a database for the system, add accounts for two system users: the
@@ -89,69 +90,86 @@ in brackets):
         it, tests checking for the correct handling of non-ASCII characters
         fail.
 
         it, tests checking for the correct handling of non-ASCII characters
         fail.
 
+
 2. Django setup
 
 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
+
+    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:
+
+      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 patchwork/settings/*.py files contain default settings for patchwork,
+    you'll need to configure settings for your own setup.
+
+    Rather than editing these files (which will cause conflicts when you
+    update the base patchwork code), create a file 'production.py', based on
+    the example:
 
 
-         mkdir -p lib/packages lib/python
+       cp patchwork/settings/production.example.py \
+          patchwork/settings/production.py
 
 
-        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.
+    and override or add settings as necessary. You'll need to define the
+    following:
 
 
-        At the time of release, patchwork depends on django version 1.5 or
-        later. Your distro probably provides this. If not, do a:
+      SECRET_KEY
+      ADMINS
+      DATABASES
+      TIME_ZONE
+      LANGUAGE_CODE
+      DEFAULT_FROM_EMAIL
+      NOTIFICATION_FROM_EMAIL
 
 
-         cd lib/packages
-         git clone https://github.com/django/django.git -b stable/1.5.x
-         cd ../python
-         ln -s ../packages/django/django ./django
+    You can generate the SECRET_KEY with the following python code:
 
 
-        The settings.py file contains default settings for patchwork, you'll
-        need to configure settings for your own setup.
+      import string, random
+      chars = string.letters + string.digits + string.punctuation
+      print repr("".join([random.choice(chars) for i in range(0,50)]))
 
 
-        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:
+    If you wish to enable the XML-RPC interface, add the following to
+    your local_settings.py file:
 
 
-          SECRET_KEY
-          ADMINS
-          TIME_ZONE
-          LANGUAGE_CODE
-          DEFAULT_FROM_EMAIL
-          NOTIFICATION_FROM_EMAIL
+      ENABLE_XMLRPC = True
 
 
-        You can generate the SECRET_KEY with the following python code:
+    Then, get patchwork to create its tables in your configured database:
 
 
-          import string, random
-          chars = string.letters + string.digits + string.punctuation
-          print repr("".join([random.choice(chars) for i in range(0,50)]))
+     PYTHONPATH=lib/python ./manage.py syncdb
 
 
-        If you wish to enable the XML-RPC interface, add the following to
-        your local_settings.py file:
+    and initialise the static content:
 
 
-          ENABLE_XMLRPC = True
+     PYTHONPATH=lib/python ./manage.py collectstatic
 
 
-        Then, get patchwork to create its tables in your configured database:
+    You'll also need to load the initial tags and states into the
+    patchwork database:
 
 
-         cd apps/
-         PYTHONPATH=../lib/python ./manage.py syncdb
+     PYTHONPATH=lib/python ./manage.py loaddata default_tags default_states
 
 
-        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.
+    Finally, 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
 
 
 
 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.
 
         django has built-in support for WSGI, which supersedes the fastcgi
         handler. It is thus the preferred method to run patchwork.
 
@@ -164,7 +182,8 @@ wsgi:
          a2enmod wsgi
          apache2ctl restart
 
          a2enmod wsgi
          apache2ctl restart
 
-mod_python:
+
+     mod_python:
 
         An example apache configuration file for mod_python is in:
 
 
         An example apache configuration file for mod_python is in:
 
@@ -174,7 +193,8 @@ mod_python:
         web server is used for serving php files, the fastcgi method may suit
         instead.
 
         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:
 
         django has built-in support for fastcgi, which requires the
         'flup' python module. An example configuration is in:
@@ -185,11 +205,12 @@ fastcgi:
 
         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
+          cd /srv/patchwork/
           ./manage.py runfcgi method=prefork \
                               socket=/srv/patchwork/var/fcgi.sock \
                               pidfile=/srv/patchwork/var/fcgi.pid
 
           ./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
     URL:
 4. Configure patchwork
     Now, you should be able to administer patchwork, by visiting the
     URL:
@@ -199,14 +220,16 @@ fastcgi:
     You'll probably want to do the following:
 
       * Set up your projects
     You'll probably want to do the following:
 
       * Set up your projects
-      * Configure your website address (in the Sites) section of the admin
+      * Configure your website address (in the Sites) section
 
 
+    
 5. Subscribe a local address to the mailing list
 
 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
 
 
 6. Setup your MTA to deliver mail to the parsemail script
 
@@ -214,14 +237,15 @@ fastcgi:
     directory. (Note, do not use the parsemail.py script directly). Something
     like this in /etc/aliases is suitable for postfix:
 
     directory. (Note, do not use the parsemail.py script directly). Something
     like this in /etc/aliases is suitable for postfix:
 
-      patchwork: "|/srv/patchwork/apps/patchwork/bin/parsemail.sh"
+      patchwork: "|/srv/patchwork/patchwork/bin/parsemail.sh"
 
     You may need to customise the parsemail.sh script if you haven't installed
     patchwork in /srv/patchwork.
 
     Test that you can deliver a patch to this script:
 
 
     You may need to customise the parsemail.sh script if you haven't installed
     patchwork in /srv/patchwork.
 
     Test that you can deliver a patch to this script:
 
-     sudo -u nobody /srv/patchwork/apps/patchwork/bin/parsemail.sh < mail
+     sudo -u nobody /srv/patchwork/patchwork/bin/parsemail.sh < mail
+
 
 7. Set up the patchwork cron script
 
 
 7. Set up the patchwork cron script
 
@@ -231,14 +255,13 @@ fastcgi:
     Something like this in your crontab should work:
 
       # m h  dom mon dow   command
     Something like this in your crontab should work:
 
       # m h  dom mon dow   command
-      PYTHONPATH=apps:.
-      DJANGO_SETTINGS_MODULE=settings
-      */10 * * * * cd patchwork; python apps/patchwork/bin/patchwork-cron.py
+      */10 * * * * cd patchwork; ./manage.py cron
 
 
     - the frequency should be the same as the NOTIFICATION_DELAY_MINUTES
     setting, which defaults to 10 minutes.
 
 
 
     - 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
 8. Optional: Configure your VCS to automatically update patches
 
     The tools directory of the patchwork distribution contains a file
@@ -257,6 +280,7 @@ fastcgi:
     similar hook using pwclient to update patch state. If you do write
     one, please contribute it.
 
     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'
 Some errors:
 
 * __init__() got an unexpected keyword argument 'max_length'
@@ -273,7 +297,7 @@ Some errors:
    to the tables.
 
 * pwclient fails for actions that require authentication, but a username
    to the tables.
 
 * pwclient fails for actions that require authentication, but a username
-  and password is given int ~/.pwclient rc. Server reports "No authentication
+  and password is given in ~/.pwclientrc. Server reports "No authentication
   credentials given".
 
  - if you're using the FastCGI interface to apache, you'll need the
   credentials given".
 
  - if you're using the FastCGI interface to apache, you'll need the