Django部署:配置正确的python以供apache/mod_wsgi使用

2024-10-02 02:26:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉使用基于Django的应用程序,并尝试使用以下配置部署Django项目,这些配置几乎与Django文档上给定的默认配置类似。在

apache2.conf

# WSGI Configuration
WSGIDaemonProcess demo python-path=/home/inian/Documents/demo
WSGIProcessGroup demo

WSGIScriptAlias / /home/inian/Documents/demo/demo/wsgi.py process-group=demo

<Directory /home/inian/Documents/demo/demo>
<Files wsgi.py>
    Require all granted
</Files>
</Directory>

# Serving static files
Alias /static/ /home/inian/Documents/demo/static/

<Directory /home/inian/Documents/demo/static>
    Require all granted
</Directory>

当我启动apache服务器时,它会正常启动,但是由于python版本不匹配而导致加载我的项目时出现运行时错误,如下所示。在

/var/log/apache2/错误.log

^{pr2}$

我希望我的应用程序使用安装在/usr/local位置的python,这是我用来编译和安装mod_wsgi的版本,但是为了安全起见,我还检查了/usr/bin/python -V,它的输出为Python 2.7.6。这就产生了两个问题:

  1. 如何让apache从安装位置/usr/local/bin/python使用python2.7.11(我一直将其作为服务器上所有东西的默认位置)。

  2. 我不记得曾经安装过2.7.10或者做过什么,所以我不知道apache是如何从哪里加载和使用它的。如果有人能引导我走向那个方向,那也将是伟大的。


Tags: 项目djangopy应用程序wsgihomedemousr
1条回答
网友
1楼 · 发布于 2024-10-02 02:26:15

在针对特定Python安装编译mod_wsgi,然后对Python安装进行升级的情况下,这是一条警告消息。因为共享库是如何工作的,所以这通常并不重要。记录在:

在您的例子中,虽然问题是您的mod_wsgi不是针对Python的安装进行编译的,而是在运行时为其找到Python共享库。这可能会导致各种问题,其中之一是两个Python安装没有安装兼容的编译器标志集,例如Unicode字符宽度的那些。在

所以在我看来,这个问题基本上看起来像是您根据/usr/local中的Python安装从源代码编译mod\wsgi,但是由于它的构建方式不适合这种情况,所以在运行时它会为安装在/usr中的版本找到Python共享库。在

有关如何在Linux系统上正确安装Python的详细讨论,请阅读:

下一步,当您从源代码处编译mod\wsgi时,请确保您设置了LD_RUN_PATH环境变量,以包含库目录,其中安装了备用Python安装的Python共享库。该环境变量将允许mod wsgi在运行时找到正确的库,而不使用/usr/lib中的版本。在

您可以通过以下文档中的说明来验证它是否找到了错误/正确的答案:

最后,一旦安装了mod wsgi并找到了正确的共享库,您可能还必须在Apache配置中设置WSGIPythonHome指令,以便它为运行时文件找到正确的Python安装。文档中对此进行了描述:

相关问题 更多 >

    热门问题