]> git.ozlabs.org Git - patchwork/blobdiff - docs/INSTALL
docs: Add collectstatic step to installation instructions
[patchwork] / docs / INSTALL
index 84114f51b09aa8bef8cd0a593734b9357eb0968e..cb0eccfc85a64dabe7cf82a1479156f72328d4aa 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
@@ -89,69 +90,81 @@ 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.
 
 
-         mkdir -p lib/packages 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:
 
 
-        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.
+      cd lib/packages
+      git clone https://github.com/django/django.git -b stable/1.5.x
+      cd ../python
+      ln -s ../packages/django/django ./django
 
 
-        At the time of release, patchwork depends on django version 1.5 or
-        later. Your distro probably provides this. If not, do a:
+    The patchwork/settings/*.py files contain default settings for patchwork,
+    you'll need to configure settings for your own setup.
 
 
-         cd lib/packages
-         git clone https://github.com/django/django.git -b stable/1.5.x
-         cd ../python
-         ln -s ../packages/django/django ./django
+    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:
 
 
-        The settings.py file contains default settings for patchwork, you'll
-        need to configure settings for your own setup.
+       cp patchwork/settings/production.example.py \
+          patchwork/settings/production.py
 
 
-        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:
+    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
+      DATABASES
+      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
+     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 initialise the static content:
 
 
-        Postgresql:
-          psql -f lib/sql/grant-all.postgres.sql patchwork
+     PYTHONPATH=lib/python ./manage.py collectstatic
 
 
-        MySQL:
-          mysql patchwork < lib/sql/grant-all.mysql.sql
+    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
+
+    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 +177,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 +188,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 +200,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:
@@ -201,12 +217,14 @@ fastcgi:
       * Set up your projects
       * Configure your website address (in the Sites) section
 
       * Set up your projects
       * 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 +232,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 +250,15 @@ 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
+      PYTHONPATH=.
+      DJANGO_SETTINGS_MODULE=patchwork.settings.production
+      */10 * * * * cd patchwork; python patchwork/bin/patchwork-cron.py
 
 
     - 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 +277,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'