X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=docs%2FINSTALL;h=2c1a0a95593ba4ed2fb27454557f92d9d3e3b151;hb=bbae39da3b36c86a91d709ff169c4dd8b26f9284;hp=7a32434688cdd7f2393fec58eaeb7e10f27e1dfa;hpb=ef3b7b60bbfbcd7b61e3a04797d110ee19fc4506;p=patchwork diff --git a/docs/INSTALL b/docs/INSTALL index 7a32434..2c1a0a9 100644 --- a/docs/INSTALL +++ b/docs/INSTALL @@ -3,16 +3,17 @@ 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 - * django + * django >= 1.5 * A webserver (apache) * mod_python or flup - * A database server (postgresql) + * A database server (postgresql, mysql) + * relevant python modules for the database server (e.g: python-mysqldb) 1. Database setup @@ -64,6 +65,17 @@ in brackets): > CREATE USER 'www-data'@'localhost' IDENTIFIED BY ''; > CREATE USER 'nobody'@'localhost' IDENTIFIED BY ''; + 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 = 'mysql' + DATABASE_NAME = 'patchwork' + DATABASE_USER = 'root' + DATABASE_PASSWORD = 'my_secret_root_password' + DATABSE_HOST = 'localhost' + DATABASE_PORT = '' + 2. Django setup Set up some initial directories in the patchwork base directory: @@ -73,37 +85,14 @@ in brackets): 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.5 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.2 + git clone https://github.com/django/django.git -b stable/1.5.x cd ../python ln -s ../packages/django/django ./django - We also use the django-registration infrastructure from - http://bitbucket.org/ubernostrum/django-registration/. Your distro - may provide the django-registration python module (in Ubuntu/Debian it's - called 'python-django-registration'). If not, download the module - and symlink it to lib/python/ : - - cd lib/packages/ - hg clone http://bitbucket.org/ubernostrum/django-registration/ - cd ../python - ln -s ../lib/packages/django-registration/registration ./registration - - We also use some Javascript libraries: - - cd lib/packages - mkdir jquery - cd jquery - wget http://jqueryjs.googlecode.com/files/jquery-1.3.min.js - wget http://www.isocra.com/articles/jquery.tablednd_0_5.js.zip - unzip jquery.tablednd_0_5.js.zip jquery.tablednd_0_5.js - cd ../../../htdocs/js/ - ln -s ../../lib/packages/jquery/jquery-1.3.min.js ./ - ln -s ../../lib/packages/jquery/jquery.tablednd_0_5.js ./ - The settings.py file contains default settings for patchwork, you'll need to configure settings for your own setup. @@ -115,6 +104,8 @@ in brackets): ADMINS TIME_ZONE LANGUAGE_CODE + DEFAULT_FROM_EMAIL + NOTIFICATION_FROM_EMAIL You can generate the SECRET_KEY with the following python code: @@ -125,6 +116,7 @@ in brackets): If you have patchwork installed in somewhere other than /srv/patchwork, you'll also need to define: + ROOT_DIR MEDIA_ROOT TEMPLATE_DIRS @@ -136,7 +128,7 @@ in brackets): Then, get patchwork to create its tables in your configured database: cd apps/ - PYTHONPATH=../lib/python ./manage.py syncdb + PYTHONPATH=../lib/python/django ./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 @@ -151,14 +143,26 @@ in brackets): 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 @@ -169,7 +173,7 @@ fastcgi: 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. @@ -213,6 +217,23 @@ fastcgi: sudo -u nobody /srv/patchwork/apps/patchwork/bin/parsemail.sh < mail +7. Optional: Configure your VCS to automatically update patches + + The tools directory of the patchwork distribution contains a file + named post-receive.hook which is an example git hook that can be + used to automatically update patches to the Accepted state when + corresponding comits are pushed via git. + + To install this hook, simply copy it to the .git/hooks directory on + your server, name it post-receive, and make it executable. + + This sample hook has support to update patches to different states + depending on which branch is being pushed to. See the STATE_MAP + setting in that file. + + If you are using a system other than git, you can likely write a + similar hook using pwclient to update patch state. If you do write + one, please contribute it. Some errors: