lee_hirisun 发表于 2015-7-31 09:25:38

Apache上部署Django

  目前,Apache和mod_python是在生产服务器上部署Django的最健壮搭配。mod_python 是一个在Apache中嵌入Python的Apache插件,它在服务器启动时将Python代码加载到内存中。
  Django 需要Apaceh 2.x 和mod_python 3.x支持。
  Apache的配置参见:http://www.djangoproject.com/r/apache/docs/
  

使用mod_python部署
  1.为了配置基于 mod_python 的 Django,首先要安装有可用的 mod_python 模块的 Apache。
  2.然后应该有一个 LoadModule 指令在 Apache 配置文件中。 它看起来就像是这样:



LoadModule python_module /usr/lib/apache2/modules/mod_python.so
  3.配置Apache,用来定位请求URL到Django应用:




      ServerName www.example.com
      
            SetHandler python‐program
            PythonHandler django.core.handlers.modpython
            SetEnv DJANGO_SETTINGS_MODULE mysite1.settings
            PythonAutoReload Off
            PythonDebug Off
            PythonPath "['/var/www/html/mysite1'] + sys.path"
            PythonInterpreter mysite1
      
      
            SetHandler python‐program
            PythonHandler django.core.handlers.modpython
            SetEnv DJANGO_SETTINGS_MODULE mysite2.settings
            PythonAutoReload Off
            PythonDebug Off
            PythonPath "['/var/www/html/mysite2'] + sys.path"
            PythonInterpreter mysite2
      
      [......]

  它告诉 Apache,任何在 / mysite这个路径之后的 URL 都使用 Django 的 mod_python 来处理。 它 将DJANGO_SETTINGS_MODULE 的值传递过去,使得 mod_python 知道这时应该使用哪个配置。
  查看 mod_python 文档获得详细的指令列表。
  4.重启Apache,查看Http://www.example.com/mysite:



/etc/init.d/apache2 restart

使用mod_wsgi部署
  1.下载安装 mod_wsgi 模块,生成mod_wsgi.so和wsgi.conf
  2.在配置中加载模块:



LoadModule python_module /usr/lib/apache2/modules/mod_wsgi.so
  3.修改Apache配置文件httpd.conf




      ServerName www.example
      DocumentRoot /var/www/html/mysite
      WSGIScriptAlias / /var/www/html/mysite/apache/django.wsgi
      
                Order deny,allow
                Allow from all
      
      
                Allow from all
      

  4.创建并配置wsgi的配置文件:



# filename:mysite.apache.django.wsgi
import os, sys
#Calculate the path based on the location of the WSGI script.
apache_configuration= os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
os.environ['PYTHON_EGG_CACHE'] = '/tmp'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
print >> sys.stderr, sys.path   
shell>chmod a+x django.wsgi
  5.修改Django项目配置文件settings.py:



DATABASES = {
    'default': {
      'ENGINE': 'django.db.backends.mysql',
      'NAME': 'mysite',                     
      'USER': 'admin',                     
      'PASSWORD': 'admin123',                  
      'HOST': '127.0.0.1',                     
      'PORT': '3306', }
}
TEMPLATE_DIRS = (
    '/var/www/html/mysite/templates',
)
  6.重启Apache,访问http://www.example.com/mysite



/etc/init.d/apache2 restart
  
页: [1]
查看完整版本: Apache上部署Django