Skip to main content

Management commands to deploy Django webapps

Project description

DjaoDjin deployutils
====================

This Django app enables a Django project to seamlessly integrate behind
the [DjaoDjin HTTP session manager reverse proxy](https://github.com/djaodjin/djaoapp).
It will replace the default ``django.contrib.sessions``
and ``AUTHENTICATION_BACKENDS`` to decode sessions forwarded to your Django
project by the HTTP session manager.

[More technical documentation](https://djaodjin.com/docs/technical/)

Install
-------

Install deployutils into your environment


$ pip install djaodjin-deployutils


Update your settings.py


+from deployutils.configs import load_config

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+APP_NAME = os.path.basename(BASE_DIR)

+update_settings(sys.modules[__name__],
load_config(APP_NAME, 'credentials', verbose=True))

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
+ 'deployutils.apps.django',
)

MIDDLEWARE_CLASSES = (
'django.middleware.security.SecurityMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
+ 'deployutils.apps.django.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
)

+AUTHENTICATION_BACKENDS = (
+ 'deployutils.apps.django.backends.auth.ProxyUserBackend',
+)

# Session settings
+SESSION_ENGINE = 'deployutils.apps.django.backends.encrypted_cookies'

+DEPLOYUTILS = {
+ # Hardcoded mockups here.
+ 'MOCKUP_SESSIONS': {
+ 'donny': {
+ 'username': 'donny',
+ 'roles': {
+ 'manager': [{
+ 'slug': 'testsite', 'printable_name': 'Testsite'}]}},
+ },
+ 'ALLOWED_NO_SESSION': [
+ STATIC_URL, reverse_lazy('login')]
+}


Create a ``credentials`` file that contains the ``DJAODJIN_SECRET_KEY``


$ cat ./credentials
# Authentication for djaodjin firewall
DJAODJIN_SECRET_KEY = "__your_secret_key__"


(for stand-alone testing) Add the mockup views in urls.py


urlpatterns = [
...
+ url(r'^', include('deployutils.apps.django.mockup.urls')),
...
]


Development
-----------

Clone the repository in a virtualenv and install the prerequisites


$ virtualenv _installTop_
$ cd _installTop_
$ source bin/activate
$ git clone https://github.com/djaodjin/djaodjin-deployutils.git
$ cd djaodjin-deployutils
$ pip install -r testsite/requirements.txt


Create the credentials file with a ``DJAODJIN_SECRET_KEY`` and the empty db.


$ make initdb


Run the web application


$ python manage.py runserver


Browse to http://localhost:8000



Bonus commands
--------------

Commands to upload/download resources
-------------------------------------


$ python manage.py download_resources
$ python manage.py upload_resources


Not all assets are stored under source control. Images, videos, etc. are
better kept outside the git repository. These two commands are used to
download the extra resources into the webapp htdocs/ directory from
the stage server and upload them from the webapp htdocs/ directory to
the stage server respectively.

Commands to setup on deployed servers
-------------------------------------


$ python manage.py pullapp


Fetch/merge from the remote git repository and downlad the extra resources
from the stage server.

Using configuration files from a S3 bucket
------------------------------------------


$ python manage.py upload_configs --location s3://__example__ credentials site.conf

Project details


Release history Release notifications

This version
History Node

0.5.2

History Node

0.5.1

History Node

0.5.0

History Node

0.4.9

History Node

0.4.8

History Node

0.4.7

History Node

0.4.6

History Node

0.4.5

History Node

0.4.4

History Node

0.4.3

History Node

0.4.2

History Node

0.4.1

History Node

0.4.0

History Node

0.3.0

History Node

0.2.10

History Node

0.2.9

History Node

0.2.8

History Node

0.2.7

History Node

0.2.7-dev

History Node

0.2.6

History Node

0.2.5

History Node

0.2.4

History Node

0.2.3

History Node

0.2.2

History Node

0.2.1

History Node

0.2

History Node

0.1.1

History Node

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
djaodjin-deployutils-0.5.2.tar.gz (37.0 kB) Copy SHA256 hash SHA256 Source None May 21, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page