【问题标题】:No module name django.core.wsgi apache2+ubuntu+mod_wsgi没有模块名称 django.core.wsgi apache2+ubuntu+mod_wsgi
【发布时间】:2017-11-11 10:28:38
【问题描述】:

我已经设置了我的 wsgipythonpath 和 daemonprocess,但是错误日志显示上述错误没有名为 django.core.wsgi 的模块,我正在共享我的 conf,可能是什么错误,以及如何检查 apache 是否可以访问我的django 安装与否。 我可以在本地系统上使用相同的配置进行托管,但不能在远程服务器上进行托管

WSGIPythonPath /home/env_mysite/lib/python2.7/site-packages
<VirtualHost *:80>
   ServerName  localhost
   DocumentRoot /home/unixadmin/PBpy

   WSGIScriptAlias / /home/unixadmin/PBpy/PBpy/wsgi.py

   WSGIDaemonProcess PBpy python-path=/home/env_mysite/lib/python2.7/site-packages

   ErrorLog /home/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined

   <Directory "/home/unixadmin/PBpy">
     Require all granted
   </Directory>

【问题讨论】:

    标签: python django apache hosting mod-wsgi


    【解决方案1】:

    mod_wsgi 配置有两点突出。

    1 - 您使用WSGIDaemonProcess,但不使用WSGIProcessGroup,或application-group 选项到WSGIScriptAlias,委派WSGI 应用程序在守护进程组中运行。

    2 - 您不使用推荐的方式来使用 mod_wsgi 设置 Python 虚拟环境。见:

    由于您尝试使用 Python 虚拟环境,另一个可能的问题是您的 mod_wsgi 是否甚至针对 Python 2.7 编译,特别是相同的 Python 安装。您的 Python 虚拟环境是否使用系统 Python 2.7 安装在同一目标系统上创建?

    其他奇怪的事情或问题的根源是:

    1 - ServerName 不应设置为 localhost。只有当这恰好是 Apache 发现的第一个 VirtualHost 时,事情才会起作用。

    2 - 您的代码在 Apache 下运行的用户通常无法访问主目录,因此它甚至可能无法看到 Python 包。

    【讨论】:

    • 当我能够在我的 ubuntu 机器上切换到 root 权限时,我应该给予 python 包什么必要的权限?
    • 您是否先修复了所有其他问题并确保您的 mod_wsgi 已针对所使用的相同 Python 安装进行编译?在modwsgi.readthedocs.io/en/develop/user-guides/… 中使用检查以确保正在使用正确的Python 虚拟环境并且sys.path 构造正确。目录至少应该是o+rx 和文件o+r。如果您不明白这意味着什么,请阅读linux.die.net/man/1/chmod
    【解决方案2】:

    试试这个WSGIDaemonProcess

    WSGIDaemonProcess <env> python-path=<path to project code> python-home=<path to env>
    

    希望这有帮助。

    【讨论】:

    • 对不起,它没有帮助,我可以在我的本地系统上使用具有相同上述配置的 apache 托管,但我不知道为什么当我在服务器上尝试时它会给我这样的错误。任何进一步的帮助将不胜感激。
    猜你喜欢
    • 2016-07-14
    • 2015-03-19
    • 1970-01-01
    • 2018-07-28
    • 2017-10-18
    • 2015-12-11
    • 2015-01-18
    • 1970-01-01
    相关资源
    最近更新 更多