add wsgi support
authorymh <ymh.work@gmail.com>
Fri, 10 Sep 2010 16:02:46 +0200
changeset 33 729251dd5c31
parent 32 eac14c3ae625
child 34 0560aed72b13
add wsgi support
.hgignore
sbin/virtualenv/create_python_env.py
web/franceculture/.htaccess.mod_python.tmpl
web/franceculture/.htaccess.mod_wsgi.tmpl
web/franceculture/.htaccess.tmpl
web/ldt/core/handlers/modwsgi.py
--- a/.hgignore	Thu Aug 19 12:15:27 2010 +0200
+++ b/.hgignore	Fri Sep 10 16:02:46 2010 +0200
@@ -7,3 +7,6 @@
 ^web/franceculture/config\.py$
 ^web/static/media/
 ^sbin/virtualenv/distribute.*\.tar\.gz$
+
+syntax: regexp
+^web/franceculture/modwsgi\.wsgi$
\ No newline at end of file
--- a/sbin/virtualenv/create_python_env.py	Thu Aug 19 12:15:27 2010 +0200
+++ b/sbin/virtualenv/create_python_env.py	Fri Sep 10 16:02:46 2010 +0200
@@ -49,7 +49,7 @@
 EXTRA_TEXT += "    'DJANGO' : { 'setup': 'django', 'url': 'http://www.djangoproject.com/download/1.2.1/tarball/', 'local': '"+ os.path.abspath(os.path.join(src_base,"Django-1.2.1.tar.gz"))+"'},\n"
 EXTRA_TEXT += "    'DJANGO-EXTENSIONS' : { 'setup': 'django-extensions', 'url':'http://django-command-extensions.googlecode.com/files/django-extensions-0.4.1.tar.gz', 'local':'"+ os.path.abspath(os.path.join(src_base,"django-extensions-0.4.1.tar.gz"))+"' },\n"
 EXTRA_TEXT += "    'DJANGO-REGISTRATION' : { 'setup': 'django-registration', 'url':'http://bitbucket.org/ubernostrum/django-registration/get/tip.tar.gz', 'local':'"+ os.path.abspath(os.path.join(src_base,"django-registration.tar.gz"))+"' },\n"
-EXTRA_TEXT += "    'LXML' : { 'setup': 'lxml', 'url': '"+ os.path.abspath(os.path.join(src_base,"lxml_2.2.7.tar.gz"))+"', 'local': '"+ os.path.abspath(os.path.join(src_base,"lxml_2.2.7.tar.gz"))+"'},\n"
+EXTRA_TEXT += "    'LXML' : { 'setup': 'lxml', 'url': '"+ os.path.abspath(os.path.join(src_base,"lxml_2.2.7.tar.gz"))+"', 'local': '"+ os.path.abspath(os.path.join(src_base,"lxml-2.2.7.tar.gz"))+"'},\n"
 EXTRA_TEXT += "}\n"
 
 EXTRA_TEXT += "import sys\n"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/franceculture/.htaccess.mod_python.tmpl	Fri Sep 10 16:02:46 2010 +0200
@@ -0,0 +1,12 @@
+SetHandler python-program
+PythonHandler ldt.core.handlers.modpython
+SetEnv DJANGO_SETTINGS_MODULE franceculture.settings
+SetEnv PY_USE_XMLPLUS true
+PythonInterpreter franceculture
+PythonOption django.root /~ymh/franceculture/franceculture
+PythonOption virtualenv.activate_path /Users/ymh/dev/workspace/franceculture/sbin/virtualenv/env/venv/bin/activate_this.py
+PythonDebug on
+PythonPath "['/Users/ymh/Sites/franceculture'] + sys.path"
+Header set Pragma "no-cache"
+Header set Cache-Control "no-cache"
+Header set Expires "-1"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/franceculture/.htaccess.mod_wsgi.tmpl	Fri Sep 10 16:02:46 2010 +0200
@@ -0,0 +1,16 @@
+
+SetEnv DJANGO_SETTINGS_MODULE franceculture.settings
+SetEnv PY_USE_XMLPLUS true
+SetEnv PROJECT_PATH /iridata/users/wakimd/hg/franceculture/web
+SetEnv PYTHON_PATH /iridata/users/wakimd/Env/Efculture/lib/python2.6/site-packages
+
+Options ExecCGI FollowSymLinks
+SetHandler wsgi-script
+
+RewriteEngine On
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteRule ^(.*)$ /dev/~wakimd/franceculture/franceculture/modwsgi.wsgi/$1 [QSA,PT,L]
+
+Header set Pragma "no-cache"
+Header set Cache-Control "no-cache"
+Header set Expires "-1"
--- a/web/franceculture/.htaccess.tmpl	Thu Aug 19 12:15:27 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-SetHandler python-program
-PythonHandler ldt.core.handlers.modpython
-SetEnv DJANGO_SETTINGS_MODULE franceculture.settings
-SetEnv PY_USE_XMLPLUS true
-PythonInterpreter franceculture
-PythonOption django.root /~ymh/franceculture/franceculture
-PythonOption virtualenv.activate_path /Users/ymh/dev/workspace/franceculture/sbin/virtualenv/env/venv/bin/activate_this.py
-PythonDebug on
-PythonPath "['/Users/ymh/Sites/franceculture'] + sys.path"
-Header set Pragma "no-cache"
-Header set Cache-Control "no-cache"
-Header set Expires "-1"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/core/handlers/modwsgi.py	Fri Sep 10 16:02:46 2010 +0200
@@ -0,0 +1,24 @@
+import os, sys, site
+
+def application(environ, start_response):
+    os.environ['DJANGO_SETTINGS_MODULE'] = environ['DJANGO_SETTINGS_MODULE']
+    os.environ['PY_USE_XMLPLUS'] = environ['PY_USE_XMLPLUS']
+
+    prev_sys_path = list(sys.path)
+
+    sys.path.append(environ['PROJECT_PATH'])
+    site.addsitedir(environ['PYTHON_PATH'])
+
+    new_sys_path = [] 
+    for item in list(sys.path): 
+        if item not in prev_sys_path: 
+            new_sys_path.append(item) 
+            sys.path.remove(item) 
+    sys.path[:0] = new_sys_path 
+
+    import django.core.handlers.wsgi
+
+    _application = django.core.handlers.wsgi.WSGIHandler()
+
+    return _application(environ, start_response)
+