378 发表于 2015-8-2 07:22:24

apache&mod_wsgi&django部署多个项目

  今天做好了第二个django项目,但在部署时出了一点小问题,在此记录一下。
  1、mod_wsgi 3.4已经支持了部署多个项目,只需在httpd.conf中进行如下配置:



WSGIScriptAlias /website1 "D:\website1\django.wsgi"

Options ExecCGI
Order deny,allow
Allow from all

WSGIScriptAlias /website2 "D:\website2\django.wsgi"

Options ExecCGI
Order deny,allow
Allow from all

  
2、urls.py需要修改一下,如下:



from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
# Examples:
# url(r'^$', 'cloudweb.views.home', name='home'),
# url(r'^cloudweb/', include('cloudweb.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
# url(r'^admin/', include(admin.site.urls)),
#url(r'^initos/$', 'cloudapp.views.initos'),
url(r'^$', 'cloudapp.views.publish'),
url(r'^submit/$', 'cloudapp.views.publish_submit'),
)
  原来按照官方文档是这样设置的:



httpd.conf:
WSGIScriptAlias / "D:\website1\django.wsgi"
urls.py:
url('^website1/submit/$', 'cloudapp.views.publis_submit'),
  
3、如果碰到如下错误:



mod_wsgi (pid=7976): Exception occurred processing WSGI script 'D:/website1/django.wsgi'.
Traceback (most recent call last):
   File "C:\\Python26\\lib\\site-packages\\django\\core\\handlers\\wsgi.py", line 236, in __call__
   self.load_middleware()
   File "C:\\Python26\\lib\\site-packages\\django\\core\\handlers\\base.py", line 51, in load_middleware
   mod = import_module(mw_module)
   File "C:\\Python26\\lib\\site-packages\\django\\utils\\importlib.py", line 35, in import_module
   __import__(name)
   File "C:\\Python26\\lib\\site-packages\\django\\contrib\\auth\\middleware.py", line 3, in
   from django.contrib.auth.backends import RemoteUserBackend
   File "C:\\Python26\\lib\\site-packages\\django\\contrib\\auth\\backends.py", line 3, in
   from django.contrib.auth.models import Permission
   File "C:\\Python26\\lib\\site-packages\\django\\contrib\\auth\\models.py", line 8, in
   from django.db import models
   File "C:\\Python26\\lib\\site-packages\\django\\db\\models\\__init__.py", line 12, in
   from django.db.models.fields.files import FileField, ImageField
   File "C:\\Python26\\lib\\site-packages\\django\\db\\models\\fields\\files.py", line 7, in
   from django.core.files.storage import default_storage
   File "C:\\Python26\\lib\\site-packages\\django\\core\\files\\storage.py", line 12, in
   from django.core.files import locks, File
   File "C:\\Python26\\lib\\site-packages\\django\\core\\files\\locks.py", line 24, in
   import pywintypes
   File "C:\\Python26\\lib\\site-packages\\win32\\lib\\pywintypes.py", line 124, in
   __import_pywin32_system_module__("pywintypes", globals())
   File "C:\\Python26\\lib\\site-packages\\win32\\lib\\pywintypes.py", line 114, in __import_pywin32_system_module__
   assert sys.modules is old_mod
AssertionError
  找到C:\Python26\lib\site-packages\win32\lib\pywintypes.py文件的114行,修改如下:
  



if sys.version_info < (3,0):
pass
##      assert sys.modules is old_mod
##      assert mod is old_mod
else:
assert sys.modules is not old_mod
assert sys.modules is mod
# as above - re-reset to the *old* module object then update globs.
sys.modules = old_mod
globs.update(mod.__dict__)
  
  
  现在两个站点均可访问:)
页: [1]
查看完整版本: apache&mod_wsgi&django部署多个项目