首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用apache,mod-wsgi部署django

使用apache,mod-wsgi部署django
EN

Stack Overflow用户
提问于 2011-12-02 16:57:47
回答 3查看 3.8K关注 0票数 1

我正在尝试使用wsgi部署django。但它不起作用。你能帮帮我吗?谢谢

django.wsgi.py

代码语言:javascript
复制
#!/usr/bin/python
import os, sys
sys.path.append('/home/me/project')
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

/etc/apache2/sites-available/default

代码语言:javascript
复制
    <VirtualHost *:80>

  ServerName www.me.org
  ServerAlias *me.org

  Alias /admin_media /usr/lib/python2.4/site-packages/django/contrib/admin/media

  <Location /admin_media>
    Order allow,deny
    Allow from all
  </Location>

  Alias /media /var/www/media/

  <Location /media>
    Order allow,deny
    Allow from all
  </Location>

  WSGIScriptAlias / /home/me/project/apache/django.wsgi

  WSGIDaemonProcess me processes=2 maximum-requests=500 threads=1
  WSGIProcessGroup me

</VirtualHost>

Error Message

代码语言:javascript
复制
   /etc/init.d/apache2 restart
Syntax error on line 3 of /etc/apache2/sites-enabled/me:
Invalid command 'PythonHandler', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
   ...fail!

更新:奇怪的/etc/apache2/sites-enable/me

代码语言:javascript
复制
<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
PythonDebug On
PythonPath "['/home/me2'] + sys.path"
SetEnv DJANGO_SETTINGS_MODULE me.settings

我可以禁用mod-python吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-02 18:57:47

/etc/apache2/sites-enable/me文件是用于modpython的。

您正在使用mod_wsgi。

因此。删除/etc/apache2/sites-enable/me并按照此处提供的文档进行操作

https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/

票数 1
EN

Stack Overflow用户

发布于 2011-12-02 17:06:55

很明显,您的错误消息来自与此处显示的文件不同的文件- me而不是default。该文件显然引用了PythonHandler,这是一个属于mod_python的指令,您似乎没有安装它(而且不应该安装,因为它已被弃用)。

当您修复了这个错误之后--很可能是通过完全删除该文件--您将在wsgi文件中修复另一个错误--您已经将project路径添加到path路径,但随后将您的设置引用为project.settings,因此它将不会被找到。请改为添加父路径,或者仅将引用设置作为settings

票数 3
EN

Stack Overflow用户

发布于 2011-12-02 17:48:03

我不是这方面的专家,但这里是我工作的比较。我正在使用mod_wsgi而不是mod_python。"/etc/apache2/ sites-enabled /me“中的内容我似乎已经在我的"django.wsgi.py”文件中指定了,但在sites-enabled下没有这样的文件。

对于您的django.wsgi.py,您可能需要添加外部库的路径,当我为我的项目设置路径时,我的设置文件是/var/myproject/src/myapp/settings.py,我将路径设置为'/var/myproject/src',并将django_settings_module设置为myapp.settings。下面是我的myproject.wsgi文件的样子:

代码语言:javascript
复制
#!/usr/bin/python
import os
import sys
sys.path.append('')
sys.path.append('/usr/local/lib/python2.7/site-packages')
sys.path.append('/usr/local/lib/python2.7/site-packages/Django-1.3-py2.7.egg')
... other external libs ..
sys.path.append('/var/myproject/myapp/src')
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
os.environ['PYTHON_EGG_CACHE'] = '/tmp'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

这是我为我的wsgi.conf准备的:

代码语言:javascript
复制
<VirtualHost *:80>
    ServerAdmin me@me.com
    DocumentRoot "/var/myproject/"
    ServerName localhost
    ErrorLog "/var/myproject/logs/apache-error.log"
    CustomLog "/var/myproject/logs/apache-access.log" common

    Options ExecCGI FollowSymLinks MultiViews

    AddHandler wsgi-script .wsgi
    WSGIDaemonProcess asgportal
    WSGIProcessGroup asgportal

    Alias /static /var/myproject/media/static
    WSGIScriptAlias / /var/myproject/myproject.wsgi  # my django.wsgi.py file

    DirectoryIndex index.html index.cgi

    AddHandler cgi-script .cgi .pl
</VirtualHost>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8353886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档