From d636cb34a3b13ea3e6b776e951e6276a94d968c6 Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Sun, 24 May 2015 17:50:33 +0800 Subject: [PATCH] Update documentation and default settings to suit patchwork deployment model We've always allowed configuration without altering any of the version-controlled files. With the recent settings changes, we have an extra level of indirection with the dev/prod settings modules. Since we have to edit a config file anyway, this change moves the prod.py settings file to a template, which is then used directly by mange.py (and the wsgi application). Signed-off-by: Jeremy Kerr --- docs/INSTALL | 14 ++++-- lib/apache2/patchwork.wsgi | 2 +- manage.py | 3 +- patchwork/settings/prod.py | 62 ------------------------ patchwork/settings/production.example.py | 58 ++++++++++++++++++++++ 5 files changed, 71 insertions(+), 68 deletions(-) delete mode 100644 patchwork/settings/prod.py create mode 100644 patchwork/settings/production.example.py diff --git a/docs/INSTALL b/docs/INSTALL index fdee592..7e1f309 100644 --- a/docs/INSTALL +++ b/docs/INSTALL @@ -108,11 +108,17 @@ in brackets): cd ../python ln -s ../packages/django/django ./django - The settings.py file contains default settings for patchwork, you'll - need to configure settings for your own setup. + The patchwork/settings/*.py files contain 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 + 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: + + cp patchwork/settings/production.example.py \ + patchwork/settings/production.py + + and override or add settings as necessary. You'll need to define the following: SECRET_KEY diff --git a/lib/apache2/patchwork.wsgi b/lib/apache2/patchwork.wsgi index 02d581d..efa870b 100644 --- a/lib/apache2/patchwork.wsgi +++ b/lib/apache2/patchwork.wsgi @@ -13,7 +13,7 @@ basedir = os.path.join( os.path.dirname(__file__), os.path.pardir, os.path.pardir) sys.path.append(basedir) -os.environ['DJANGO_SETTINGS_MODULE'] = 'patchwork.settings.prod' +os.environ['DJANGO_SETTINGS_MODULE'] = 'patchwork.settings.production' from django.core.wsgi import get_wsgi_application application = get_wsgi_application() diff --git a/manage.py b/manage.py index 04eac77..fe6189e 100755 --- a/manage.py +++ b/manage.py @@ -3,7 +3,8 @@ import os import sys if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "patchwork.settings.prod") + os.environ.setdefault("DJANGO_SETTINGS_MODULE", + "patchwork.settings.production") from django.core.management import execute_from_command_line diff --git a/patchwork/settings/prod.py b/patchwork/settings/prod.py deleted file mode 100644 index d71f3df..0000000 --- a/patchwork/settings/prod.py +++ /dev/null @@ -1,62 +0,0 @@ -""" -Sample production-ready settings for patchwork project. - -Most of these are commented out as they will be installation dependent. - -Design based on: - http://www.revsys.com/blog/2014/nov/21/recommended-django-project-layout/ -""" - -from base import * - -# -# Core settings -# https://docs.djangoproject.com/en/1.6/ref/settings/#core-settings -# - -# Security - -# SECRET_KEY = '00000000000000000000000000000000000000000000000000' - -# Email - -# ADMINS = ( -# ('Jeremy Kerr', 'jk@ozlabs.org'), -# ) - -# Database - -# DATABASES = { -# 'default': { -# 'ENGINE': 'django.db.backends.postgresql_psycopg2', -# 'NAME': 'patchwork', -# }, -# } - -# File Uploads - -# MEDIA_ROOT = os.path.join( -# ROOT_DIR, 'lib', 'python', 'django', 'contrib', 'admin', 'media') - - -# -# Static files settings -# https://docs.djangoproject.com/en/1.6/ref/settings/#static-files -# - -# STATIC_ROOT = '/srv/patchwork/htdocs' - - -# -# Custom user overrides (for legacy) -# - -try: - from local_settings import * -except ImportError, ex: - import sys - sys.stderr.write(\ - ("settings.py: error importing local settings file:\n" + \ - "\t%s\n" + \ - "Do you have a local_settings.py module?\n") % str(ex)) - raise diff --git a/patchwork/settings/production.example.py b/patchwork/settings/production.example.py new file mode 100644 index 0000000..fd0a1f6 --- /dev/null +++ b/patchwork/settings/production.example.py @@ -0,0 +1,58 @@ +""" +Sample production-ready settings for patchwork project. + +Most of these are commented out as they will be installation dependent. + +Design based on: + http://www.revsys.com/blog/2014/nov/21/recommended-django-project-layout/ +""" + +from base import * + +# +# Core settings +# https://docs.djangoproject.com/en/1.6/ref/settings/#core-settings +# + +# Security +# +# You'll need to replace this to a random string. The following python code can +# be used to generate a secret key: +# +# import string, random +# chars = string.letters + string.digits + string.punctuation +# print repr("".join([random.choice(chars) for i in range(0,50)])) + +# SECRET_KEY = '00000000000000000000000000000000000000000000000000' + +# Email +# +# Replace this with your own details + +ADMINS = ( +# ('Jeremy Kerr', 'jk@ozlabs.org'), +) + +DEFAULT_FROM_EMAIL = 'Patchwork ' +NOTIFICATION_FROM_EMAIL = DEFAULT_FROM_EMAIL + +# Database +# +# If you're using a postgres database, connecting over a local unix-domain +# socket, then the following setting should work for you. Otherwise, +# see https://docs.djangoproject.com/en/1.7/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'NAME': 'patchwork', + }, +} + +# +# Static files settings. Set this to the +# https://docs.djangoproject.com/en/1.7/ref/settings/#static-files +# + +STATIC_ROOT = '/srv/patchwork/htdocs/static' + -- 2.39.2