Django: Difference between revisions

From lippmann wiki
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
==installing django in debian jessie with python3, mysql, apache2 and mod-wsgi==
=installing django in debian jessie with python3, mysql, apache2 and mod-wsgi=


Packages:
==Packages==
  aptitude install python3-django python3 libapache2-mod-wsgi-py3 python3-mysql.connector apache2
  aptitude install python3-django python3 libapache2-mod-wsgi-py3 python3-mysql.connector apache2


Line 12: Line 12:
  dpkg-reconfigure libapache2-mod-wsgi-py3
  dpkg-reconfigure libapache2-mod-wsgi-py3


Create workspace, in my case instance zealot is installed in /var/django/zealot:
==Create workspace, in my case instance zealot is installed in /var/django/zealot==


  mkdir -p /var/django && cd /var/django
  mkdir -p /var/django && cd /var/django
  /usr/lib/python3/dist-packages/django/bin/django-admin.py startproject zealot .
  /usr/lib/python3/dist-packages/django/bin/django-admin.py startproject zealot .


Create your database (log into mysql first as a user that can do this):
==Create your database (log into mysql first as a user that can do this)==


  CREATE DATABASE database;
  CREATE DATABASE database;

Revision as of 03:50, 30 June 2015

installing django in debian jessie with python3, mysql, apache2 and mod-wsgi

Packages

aptitude install python3-django python3 libapache2-mod-wsgi-py3 python3-mysql.connector apache2

(optionally add a local mysql server if you need one locally)

aptitude install mysql-server

Make sure the wsgi module is enabled

dpkg-reconfigure libapache2-mod-wsgi-py3

Create workspace, in my case instance zealot is installed in /var/django/zealot

mkdir -p /var/django && cd /var/django
/usr/lib/python3/dist-packages/django/bin/django-admin.py startproject zealot .

Create your database (log into mysql first as a user that can do this)

CREATE DATABASE database;
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON database.* TO 'newuser'@'localhost';

(obviously these are placeholder values, use real names and a secure password!)

example apache config

Below apache config works with python 3 and the debian django repository (specifically, the static alias is on a separate location). Outside of that in my example the django instance named zealot is stored in /var/django/zealot.

<VirtualHost *:80>
ServerName fuego.lippmann.us
Alias /media/ /var/django/media/
Alias /static/ /usr/share/python-django-common/django/contrib/admin/static/

<Directory /var/django/static>
Require all granted
</Directory>

<Directory /var/django/media>
Require all granted
</Directory>

 WSGIDaemonProcess zealot python-path=/var/django:/usr/lib/python3.4
 WSGIProcessGroup zealot
 WSGIScriptAlias / /var/django/zealot/wsgi.py

 <Directory /var/django/zealot/>
 <Files wsgi.py>
 Require all granted
 </Files>
 </Directory>

</VirtualHost>

example settings.py

In my example /var/django/zealot holds this file and again the project is named zealot so settings match that. Adjust the database and other parameters (timezone, domain, etc.) according to your own environment.

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
SECRET_KEY = 'key'
DEBUG = False
TEMPLATE_DEBUG = False
ALLOWED_HOSTS = [
            '.lippmann.us.',  # Allow domain and subdomains
        ]
CSRF_COOKIE_DOMAIN = ".lippmann.us"
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
)
MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
ROOT_URLCONF = 'zealot.urls'
WSGI_APPLICATION = 'zealot.wsgi.application'
DATABASES = {
    'default': {
        'ENGINE': 'mysql.connector.django',
        'NAME': 'zealot',
        'USER': 'user',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'America/Los_Angeles'
USE_I18N = True
USE_L10N = True
USE_TZ = True
STATIC_URL = '/static/'