【问题标题】:How can I rebuild my mod_wsgi to use python 2.7.3?如何重建我的 mod_wsgi 以使用 python 2.7.3?
【发布时间】:2013-05-27 01:58:45
【问题描述】:

我正在使用 mod_wsgi 来提供一个 django 网站,但我遇到了内部服务器错误。这是apache日志:

[Fri May 31 10:11:25 2013] [error] python_init: Python version mismatch, expected '2.7.2+', found '2.7.3'.
[Fri May 31 10:11:25 2013] [error] python_init: Python executable found '/usr/bin/python'.
[Fri May 31 10:11:25 2013] [error] python_init: Python path being used '/usr/lib/python2.7/:/usr/lib/python2.7/plat-linux2:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload'.
[Fri May 31 10:11:25 2013] [warn] mod_wsgi: Compiled for Python/2.7.2+.
[Fri May 31 10:11:25 2013] [warn] mod_wsgi: Runtime using Python/2.7.3.
[Fri May 31 10:11:25 2013] [notice] Apache/2.2.22 (Ubuntu) DAV/2 mod_fcgid/2.3.6 mod_python/3.3.1 Python/2.7.3 mod_ssl/2.2.22 OpenSSL/1.0.1 mod_wsgi/3.3 mod_perl/2.0.5 Perl/v5.14.2 configured -- resuming normal operations

看来 mod_wsgi 版本和 python 的运行时版本不匹配。我该如何更新?

【问题讨论】:

  • 如果 mod_wsgi 链接到 Python 库的共享版本而不是静态链接,那么版本不匹配应该无关紧要。确保您启用了 Django 的某种日志记录,或向管理员发送错误电子邮件。还要确保为 Django 设置了 404 和 500 模板。

标签: python apache mod-wsgi


【解决方案1】:

遇到同样的问题,通过虚拟环境解决。

用于设置:https://www.digitalocean.com/community/tutorials/how-to-run-django-with-mod_wsgi-and-apache-with-a-virtualenv-python-environment-on-a-debian-vps 只需按照相同的步骤,在与我的 django 应用程序相同的文件夹中设置一个 virtualenv。

最终得到以下虚拟主机配置:

<Directory /storage/sandbox/www/django/sampleapp/static>
    Allow from all
    Order deny,allow
</Directory>
<Directory /storage/sandbox/www/django/sampleapp/media>
    Allow from all
    Order deny,allow
</Directory>
WSGIScriptAlias / /storage/sandbox/www/django/sampleapp/sampleapp/wsgi.py
WSGIPythonPath /storage/sandbox/www/django/sampleapp/:/storage/sandbox/www/django/env/lib/python2.7/site-packages
<Directory /storage/sandbox/www/django/sampleapp/sampleapp>
    <Files wsgi.py>
        Allow from all
        Order deny,allow
    </Files>
</Directory>

【讨论】:

    【解决方案2】:

    记得检查文件 wsgi.load 和 wsgi.conf 在 apache2 配置中是否仍然被引用。对于 Ubuntu(可能还有 Debian),这意味着有一个从 /etc/apache2/mods-available 到 /etc/apache2/mods-enabled 的符号链接。

    【讨论】:

    • 这很明显,但有时您只是忘记了。谢谢!
    【解决方案3】:

    我不必从源代码编译,这对我有帮助:

    $ apt-get remove libapache2-mod-python libapache2-mod-wsgi 
    $ apt-get build-dep libapache2-mod-python libapache2-mod-wsgi 
    

    【讨论】:

      【解决方案4】:

      您必须从源代码编译 mod_wsgi 并重新安装。

      很可能很简单:

      $ ./configure
      $ make
      $ sudo make install
      

      The mod_wsgi documentation 详细介绍了这一点。

      【讨论】:

        猜你喜欢
        • 2018-04-08
        • 2015-04-25
        • 1970-01-01
        • 2012-11-23
        • 2021-01-08
        • 1970-01-01
        • 1970-01-01
        • 2012-01-03
        • 2012-09-12
        相关资源
        最近更新 更多