【问题标题】:Weird error deploying django on apache, mod_wsgi, debian在 apache、mod_wsgi、debian 上部署 django 时出现奇怪的错误
【发布时间】:2015-04-30 06:34:06
【问题描述】:

在 Django 1.8 上 在 apache 错误日志中得到

File "..../python2.7/site-packages/django/utils/lru_cache.py", line 28
fasttypes = {int, str, frozenset, type(None)},
SyntaxError: invalid syntax

在运行 django 1.7+ 并且不满足 2.7 的最低 python 要求时,谷歌搜索似乎是一个错误。 然而

$ python --version
Python 2.7.3

这里是apache虚拟主机配置的相关部分。

<VirtualHost <some_ip>:80>       
        WSGIDaemonProcess some_process python-path=/path/to/django-project/main-django-app:/path/to/virtual-env/site-packages/ threads=15 display-name=%{GROUP}
        WSGIProcessGroup some_group

        WSGIScriptAlias / /path/to/django-project/main-django-app/wsgi.py

        <Directory /path/to/django-project/main-django-app>
        <Files wsgi.py>
                Order deny,allow

                # Require all granted
                # for Apache < 2.4
                Allow from all
        </Files>
        </Directory>
</VirtualHost>

有人知道问题可能是什么吗?

【问题讨论】:

  • 命令行 Python 版本无关紧要。 mod_wsgi 包针对特定的 Python 版本和 Python 共享库中的链接进行编译。因此不使用 PATH 中的“python”。您的 mod_wsgi 可能是为 Python 2.6 编译的。请参阅文档 code.google.com/p/modwsgi/wiki/…code.google.com/p/modwsgi/wiki/…
  • 就在按钮上。该系统的默认值为 2.6.6(它是一个托管服务器,我忘记了我使用的是本地编译的 2.7 版本)。我在等着看看将 mod_wsgi 重新编译到 2.7 是否可以解决这个问题。

标签: python django apache mod-wsgi


【解决方案1】:

您需要为您的 python 版本安装 mod_wsgi。

如果您无法访问 apache 安装,可以使用 pip 将 mod_wsgi 直接安装在您的 virtualenv 中。然后可以使用以下命令将其加载到您的服务器设置中:

全局设置:

LoadModule wsgi_module /path/to_your_env/path/to/mod_wsgi.so
WSGISocketPrefix run/wsgi
WSGIDaemonProcess 385969

虚拟主机:

WSGIScriptAlias / "/path/to/your/wsgi.py"
<Location />
    WSGIProcessGroup 385969 # this value must be identical to WSGIDaemonProcess
</Location>

最后,我是你的 wsgi.py 文件,你必须激活 virtualenv。

【讨论】:

    猜你喜欢
    • 2018-06-21
    • 2014-07-31
    • 2014-12-19
    • 2011-10-28
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    相关资源
    最近更新 更多