Django Development with IIS

From Littledamien Wiki
Revision as of 22:01, 25 September 2013 by Video8 (talk | contribs) (→‎See also)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Overview

Information about setting up Django projects on IIS.

Prerequisites

BitNami Django Stack

The BitNami Django Stack is a bundle of installers for the whole environment necessary to run Django on a Windows server. It includes Python, MySQL, PostgreSQL, an Apache server, and Django.

The installation prompts for a port number to use for the Apache server. 8080 is commonly used.

The Apache server can then be reached with `http://localhost:8080. Or, after opening the port in Windows Firewall, the server can be reached on the LAN with http://[MACHINE_NAME]:8080 or http://[LOCAL_IP]:8080`.

Changing the Apache server port number

To change the port number of the Apache server after installation:

  • Edit the Listen value in the [DJANGO_INSTALL_ROOT]/apache2/conf/httpd.conf file.
  • Restart the server.
  • (Windows Start Menu > BitNami DjangoStack > Manager Tool > Apache Web Server > Restart)

Accessing projects

Goals

  • Local development: Access the project using `http://localmachine:8080:/MyDjangoProject/
  • Public access: Access the project using http://staging.devdomain.com:8080:/MyDjangoProject/`
  • N.B. The Apache server needs to be restarted for any changes to the code to take effect.
  • N.B. It's very insecure to allow public access.

Workflow

For each Django Project:

  • Create a WSGI application script file named projectName.wsgi in [DJANGO_INSTALL_DIR]/appls/django/conf.

import os, sys
sys.path.append('/path/to/your/project/folder')
os.environ['DJANGO_SETTINGS_MODULE'] = 'projectName.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

  • After saving the WSGI file, create an Apache configuration file named projectName.conf in installdir/apps/django/conf to load it.

Alias /static "installdir/apps/django/lib/python-version/site-packages/django/contrib/admin/static"

<Directory 'installdir/apps/django/lib/python-version/site-packages/django/contrib/'>
Order allow,deny
Allow from all
</Directory>

WSGIScriptAlias /URL_mount_point "installdir/apps/django/scripts/projectName.wsgi"

<Directory 'installdir/apps/django/scripts'>
Order allow,deny
Allow from all
</Directory>

  • Edit the file 'httpd.conf' and add the following line:

Include "installdir/apps/django/conf/projectName.conf"

  • Restart the Apache server.

N.B. Paths on Windows should use Unix-style forward slashes: c:/path/to/dir/

Source: BitNami Django Stack Wiki: How to Start a Django Project?

Making requests to the project

Local network

Access the project with either the local IP or network name of the server: `http://machinename:8080/DjangoProjectName`

Public access

  • Open port 8080 (or whatever port the Apache server is using) on the router.
  • Access the project using the default URL within IIS: `http://www.devdomain.com:8080/DjangoProjectName`
  • N.B. the Windows versions of all the necessary software are not secure. Public access to the Django project running on IIS should only be allowed on a temporary basis and only if there is a compelling reason.

See also