Django is a Python-based web open-source framework that shows how to deploy a Django-written Python Web site to Windows IIS.
The author's operating environment:
- Window XP SP3
- IIS 5.1
- Python 2.7.2 (http://www.python.org/)
- pywin32-217.win32-py2.7 (Python's Win32 extension)
- Django-1.3.1 (https://www.djangoproject.com/)
- isapi_wsgi-0.4.2-py2.5 (http://code.google.com/p/isapi-wsgi/, WSGI implementation of the IIS-based ISAPI extension).
- setuptools-0.6c11.win32-py2.7
Explanation of principle:
With ISAPI, IIS can extend Web applications that support other language implementations, and isapi_wsgi-0.4.2-py2.5 this program implements the WSGI specification as an ISAPI.
The WSGI specification is a specification of the interface between a Python Web application and a Web service container, through which a request to a virtual site of IIS can be directed
To this ISAPI, without having to change any of the Python web code in order to deploy to a particular container.
Steps
- It's easy to install IIS, Python, Django, Setuptools, and Pywin32 first. (Add the environment variable path to the Python installation home directory)
- Download the Isapi_wsgi-0.4.2-py2.5.egg file (this is a Python install package, similar to Red Hat rpm, of course you can also download exe or zip download installation)
- After downloading, enter in the command line window: Easy_install Isapi_wsgi-0.4.2-py2.5.egg (Here it will prompt you to install successfully, note: You must install Setuptools to run the command)
- Write a deployment script with the name assumed to be wsgi_deploy.py (assuming your Web project directory is C:\Web, there is an app for MySite in the web directory), the directory must not be mistaken, otherwise it is prone to HTTP 500 error.
Import OS, sys sys.path.append (' c:\\web ') os.environ[' django_settings_module '] = ' mysite.settings '
Import DJANGO.CORE.HANDLERS.WSGI application = Django.core.handlers.wsgi.WSGIHandler ()
Import Isapi_wsgi # The entry points for the ISAPI extension. Def __extensionfactory__ (): Return ISAPI_WSGI. Isapisimplehandler (Application)
If __name__== ' __main__ ': # If Run from the command-line, install ourselves. from isapi.install import * params = isapiparameters () # Setup th E virtual Directories-this is a list of directories we # extension uses-in this case only 1. # Each extension have a "script map"-This is the mapping of the ISAPI # extensions. sm = [ scriptmapparams (extension= "*", flags=0) ] VD = virtualdirparameters (name= "MySite", Description = "Isapi-wsgi isapisimplehandler Django mysite", & nbsp; scriptmaps = SM, scriptmapupdate = "Replace" ) params. Virtualdirs = [VD] handlecommandline (params)
5. In the command line input: wsgi_deploy.py install, after the run will create the above script definition of the virtual path "MySite", and you will find a ' _wsgi_deploy.dll ' file will be created, this is the ISAPI.
A careful reader may wish to check the settings of the IIS "MySite" to see it.
6. After deployment, you can access your web app from a browser
Note: If an error occurs, how do I handle it?
You can enter at the command line: python-m win32traceutil to output error stack information for ISAPI_WSGI module output
Usually, errors occur in the path aspect. As similar to
Importerror:could not import Settings ' Mysite.settings ' (Was it on Sys.path?): N o module named mysite.settings such a problem.
In this case, you need to find the above deployment script wsgi_deploy.py, go to the correct configuration, and then remember to run it first
wsgi_deploy.py Remove and then run wsgi_deploy.py install.
Reference: http://code.google.com/p/isapi-wsgi/
Deploying a Django Web framework-based Python website app on IIS