From ff013e20a352307b5609efa7e703a14fbc86f838 Mon Sep 17 00:00:00 2001 From: Aamir Khan Date: Fri, 10 Aug 2012 20:40:00 +0530 Subject: Apache deployment files --- apache/README.rst | 17 ++++ apache/__init__.py | 0 apache/apache_django_wsgi.conf | 23 +++++ apache/django.wsgi | 42 +++++++++ apache/settings_production.py | 193 +++++++++++++++++++++++++++++++++++++++++ apache/urls_production.py | 38 ++++++++ 6 files changed, 313 insertions(+) create mode 100644 apache/README.rst create mode 100644 apache/__init__.py create mode 100644 apache/apache_django_wsgi.conf create mode 100755 apache/django.wsgi create mode 100644 apache/settings_production.py create mode 100644 apache/urls_production.py diff --git a/apache/README.rst b/apache/README.rst new file mode 100644 index 0000000..e06893a --- /dev/null +++ b/apache/README.rst @@ -0,0 +1,17 @@ +Create logs directory +--------------------- +**mkdir -p logs** + +Create python egg directory +--------------------------- +**mkdir -p .python-egg** +chmod -R 777 .python-egg/ + + + +Edit httpd.conf +--------------- + +Add the following line in your httpd.conf (generally present at /etc/apache2/httpd.conf) + +Include "/path/to/application/apache/apache_django_wsgi.conf" diff --git a/apache/__init__.py b/apache/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apache/apache_django_wsgi.conf b/apache/apache_django_wsgi.conf new file mode 100644 index 0000000..d7fddec --- /dev/null +++ b/apache/apache_django_wsgi.conf @@ -0,0 +1,23 @@ + + + Alias /robots.txt /home/akhan/hyperkitty/robots.txt + Alias /favicon.ico /home/akhan/hyperkitty/favicon.ico + Alias /static /home/akhan/hyperkitty/static + + ErrorLog /home/akhan/hyperkitty/logs/error.log + CustomLog /home/akhan/hyperkitty/logs/access.log combined + + WSGIScriptAlias / /home/akhan/hyperkitty/apache/django.wsgi + WSGIDaemonProcess akhan user=akhan group=users threads=25 + + + Order deny,allow + Allow from all + + + + Order allow,deny + Allow from all + + + diff --git a/apache/django.wsgi b/apache/django.wsgi new file mode 100755 index 0000000..cc699a4 --- /dev/null +++ b/apache/django.wsgi @@ -0,0 +1,42 @@ +import os +import sys +import site + +STAGING=True + +if STAGING: + # staging virtual environment + vepath = '/home/akhan/.virtualenvs/wackyenv/lib/python2.7/site-packages' +else: + # live virtual environment + vepath = '/home/akhan/.virtualenvs/live-server/lib/python2.7/site-packages' + +prev_sys_path = list(sys.path) + +# add the site-packages of our virtualenv as a site dir +site.addsitedir(vepath) + +# add the app's directory to the PYTHONPATH +sys.path.append('/home/akhan/gsoc') + +# reorder sys.path so new directories from the addsitedir show up first +new_sys_path = [p for p in sys.path if p not in prev_sys_path] + +for item in new_sys_path: + sys.path.remove(item) +sys.path[:0] = new_sys_path + + +#Calculate the path based on the location of the WSGI script. +apache_configuration= os.path.dirname(__file__) +project = os.path.dirname(apache_configuration) +workspace = os.path.dirname(project) +sys.path.append(workspace) + + +os.environ['DJANGO_SETTINGS_MODULE'] = 'gsoc.apache.settings_production' +# make sure this directory is writable by wsgi process +os.environ['PYTHON_EGG_CACHE'] = '/home/akhan/gsoc/.python-egg' + +from django.core.handlers.wsgi import WSGIHandler +application = WSGIHandler() diff --git a/apache/settings_production.py b/apache/settings_production.py new file mode 100644 index 0000000..aca6f61 --- /dev/null +++ b/apache/settings_production.py @@ -0,0 +1,193 @@ +import os + +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) +# Django settings for hyperkitty project. + +DEBUG = False +TEMPLATE_DEBUG = DEBUG + +ADMINS = ( + ('Aamir Khan', 'syst3m.w0rm+hk@gmail.com'), +) + +MANAGERS = ADMINS + +MAILMAN_API_URL=r'http://%(username)s:%(password)s@localhost:8001/3.0/' +MAILMAN_USER='mailmanapi' +MAILMAN_PASS='88ffd62d1094a6248415c59d7538793f3df5de2f04d244087952394e689e902a' + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. + 'NAME': 'hk', # Or path to database file if using sqlite3. + 'USER': 'root', # Not used with sqlite3. + 'PASSWORD': 'rootroot', # Not used with sqlite3. + 'HOST': '', # Set to empty string for localhost. Not used with sqlite3. + 'PORT': '', # Set to empty string for default. Not used with sqlite3. + } +} + +# Local time zone for this installation. Choices can be found here: +# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name +# although not all choices may be available on all operating systems. +# On Unix systems, a value of None will cause Django to use the same +# timezone as the operating system. +# If running in a Windows environment this must be set to the same as your +# system time zone. +TIME_ZONE = 'America/Chicago' + +# Language code for this installation. All choices can be found here: +# http://www.i18nguy.com/unicode/language-identifiers.html +LANGUAGE_CODE = 'en-us' + +SITE_ID = 1 + +# If you set this to False, Django will make some optimizations so as not +# to load the internationalization machinery. +USE_I18N = True + +# If you set this to False, Django will not format dates, numbers and +# calendars according to the current locale +USE_L10N = True + +# Absolute filesystem path to the directory that will hold user-uploaded files. +# Example: "/home/media/media.lawrence.com/media/" +MEDIA_ROOT = '' + +# URL that handles the media served from MEDIA_ROOT. Make sure to use a +# trailing slash. +# Examples: "http://media.lawrence.com/media/", "http://example.com/media/" +MEDIA_URL = '' + +# Absolute path to the directory static files should be collected to. +# Don't put anything in this directory yourself; store your static files +# in apps' "static/" subdirectories and in STATICFILES_DIRS. +# Example: "/home/media/media.lawrence.com/static/" +#STATIC_ROOT = '' +STATIC_ROOT = BASE_DIR + '/static_files/' + +# URL prefix for static files. +# Example: "http://media.lawrence.com/static/" +STATIC_URL = '/static/' + +# URL prefix for admin static files -- CSS, JavaScript and images. +# Make sure to use a trailing slash. +# Examples: "http://foo.com/static/admin/", "/static/admin/". +ADMIN_MEDIA_PREFIX = '/static/admin/' + +# Additional locations of static files +STATICFILES_DIRS = ( + # Put strings here, like "/home/html/static" or "C:/www/django/static". + # Always use forward slashes, even on Windows. + # Don't forget to use absolute paths, not relative paths. + BASE_DIR + '/static/', +) + +# List of finder classes that know how to find static files in +# various locations. +STATICFILES_FINDERS = ( + 'django.contrib.staticfiles.finders.FileSystemFinder', + 'django.contrib.staticfiles.finders.AppDirectoriesFinder', +# 'django.contrib.staticfiles.finders.DefaultStorageFinder', +) + +# Make this unique, and don't share it with anybody. +SECRET_KEY = 'dtc3%x(k#mzpe32dmhtsb6!3p(izk84f7nuw1-+4x8zsxwsa^z' + +# List of callables that know how to import templates from various sources. +TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', +# 'django.template.loaders.eggs.Loader', +) + + +TEMPLATE_CONTEXT_PROCESSORS = ( + "django.contrib.auth.context_processors.auth", + "django.contrib.messages.context_processors.messages", + "django.core.context_processors.debug", + "django.core.context_processors.i18n", + "django.core.context_processors.media", + "django.core.context_processors.static", + "django.core.context_processors.csrf", + "django.contrib.messages.context_processors.messages", + "hyperkitty.context_processors.app_name", +) + + +MIDDLEWARE_CLASSES = ( + 'django.middleware.common.CommonMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', +) + +ROOT_URLCONF = 'hyperkitty.apache.urls_production' + +TEMPLATE_DIRS = ( + # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". + # Always use forward slashes, even on Windows. + # Don't forget to use absolute paths, not relative paths. + BASE_DIR + '/templates', +) + +AUTHENTICATION_BACKENDS = ( + 'social_auth.backends.google.GoogleBackend', + 'social_auth.backends.yahoo.YahooBackend', + 'social_auth.backends.browserid.BrowserIDBackend', + 'social_auth.backends.OpenIDBackend', + 'django.contrib.auth.backends.ModelBackend', +) + +INSTALLED_APPS = ( + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'django.contrib.admin', + 'hyperkitty', + 'social_auth', + 'djangorestframework', + 'gravatar', +) + + +LOGIN_URL = '/hyperkitty/accounts/login/' +LOGIN_REDIRECT_URL = '/' +LOGIN_ERROR_URL = '/hyperkitty/accounts/login/' +SOCIAL_AUTH_COMPLETE_URL_NAME = 'socialauth_complete' +SOCIAL_AUTH_ASSOCIATE_URL_NAME = 'socialauth_associate_complete' +SOCIAL_AUTH_DEFAULT_USERNAME = 'new_social_auth_user' +SOCIAL_AUTH_UUID_LENGTH = 16 + +AUTH_PROFILE_MODULE = 'hyperkitty.UserProfile' + + +# A sample logging configuration. The only tangible logging +# performed by this configuration is to send an email to +# the site admins on every HTTP 500 error. +# See http://docs.djangoproject.com/en/dev/topics/logging for +# more details on how to customize your logging configuration. +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'handlers': { + 'mail_admins': { + 'level': 'ERROR', + 'class': 'django.utils.log.AdminEmailHandler' + } + }, + 'loggers': { + 'django.request': { + 'handlers': ['mail_admins'], + 'level': 'ERROR', + 'propagate': True, + }, + } +} + +SOCIAL_AUTH_LAST_LOGIN = 'social_auth_last_login_backend' +APP_NAME = 'Fedora Mailman App' +KITTYSTORE_URL = 'postgres://mm3:mm3@localhost/mm3' diff --git a/apache/urls_production.py b/apache/urls_production.py new file mode 100644 index 0000000..90a5c58 --- /dev/null +++ b/apache/urls_production.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 1998-2012 by the Free Software Foundation, Inc. +# +# This file is part of Postorius. +# +# Postorius is free software: you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation, either version 3 of the License, or (at your option) +# any later version. +# +# Postorius is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along with +# Postorius. If not, see . + +import hyperkitty + +from django.conf.urls.defaults import * +from django.conf import settings + +# Uncomment the next two lines to enable the admin: +from django.contrib import admin +admin.autodiscover() + +# Import mailman urls and set urlpatterns if you want to hook +# mailman_django into an existing django site. +# Otherwise set ROOT_URLCONF in settings.py to +# `mailman_django.urls`. +# from mailman_django import urls as mailman_urls + +urlpatterns = patterns('', + url(r'^$', 'hyperkitty.views.pages.index'), + (r'^hyperkitty/', include('hyperkitty.urls')), + url(r'', include('social_auth.urls')), +) -- cgit