如何在apache2中运行Django应用程序

时间:2011-03-09 13:03:41

标签: python django apache2

大家好我无法在apache2 webserver中运行django应用程序。我已经浏览了所有文档,但它仍然无法正常工作。这是我的Apache2的httpd.conf文件

<Location "/mysite/">
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE mysite.settings
  PythonOption django.root /mysite
  PythonPath "['/home/djangotest/mysite'] + sys.path"
  PythonDebug On
</Location>

我的django项目位置在/ home / djangotest / mysite,我正在运行民意调查应用程序。有什么我必须在settings.py或urls.py中提到这个在apache2中工作,它在开发服务器中工作正常。或者是否需要在apache2中进行配置才能工作

3 个答案:

答案 0 :(得分:2)

  1. 下载并安装http://modwsgi.googlecode.com/files/mod_wsgi-3.3.tar.gz

  2. 添加到/etc/httpd/conf.d/目录


  3. <VirtualHost *:80>
      ServerName --insert--
    
      ErrorLog /home/djangotest/mysite/error_log
      CustomLog /home/djangotest/mysite/access_log combined
    
      UseCanonicalName Off
    
      WSGIScriptAlias /g2 /home/djangotest/mysite/mysite.wsgi
      WSGIDaemonProcess iproj processes=7 threads=1 display-name=%{GROUP}
    
    </VirtualHost>
    
    1. 在/etc/httpd/conf/httpd.conf中添加到LoadModules secion

      LoadModule wsgi_module /usr/lib/httpd/modules/mod_wsgi.so

    2. 在/etc/httpd/conf/httpd.conf中添加到AddHandler部分

      AddHandler wsgi-script .wsgi

    3. 确保您的httpd用户可以访问/ home / djangotest /以及执行您的python脚本

    4. 创建一个mysite.wsgi文件:


    5. import os
      import sys
      
      sys.path.append('/home/djangotest/mysite')
      os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
      
      import django.core.handlers.wsgi
      application = django.core.handlers.wsgi.WSGIHandler()
      

      或者@Efazati说,阅读手册;)


      Hopefuly这解决了你的最后一期:

        

      没有名为mysite.urls的模块,但有一个文件urls.py

      检查您的设置文件

        

      ROOT_URLCONF =“mysite.urls”

      这是您的网址文件的名称,我猜您没有名为mysite.urls.py的模块?听起来你的财产应该是:

        

      ROOT_URLCONF =“urls”

答案 1 :(得分:1)

尝试将'/ home / djangotest'添加到PythonPath:

<Location "/mysite/">

  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE mysite.settings
  PythonOption django.root /mysite
  PythonPath "['/home/djangotest', '/home/djangotest/mysite'] + sys.path"

  PythonDebug On
</Location>

如果您使用语法导入项目的文件,则需要添加它。 不过,这里的其他人都是对的;如果可以的话,切换到mod-wsgi。 Django的mod_python支持很快就会被弃用。 http://docs.djangoproject.com/en/1.2/howto/deployment/modpython/

编辑:在Django 1.3中不推荐使用mod_python支持,并且将在Django 1.5上完全删除。

答案 2 :(得分:0)