Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django WGSI路径_Python_Django_Apache_Apache2_Wsgi - Fatal编程技术网

Python Django WGSI路径

Python Django WGSI路径,python,django,apache,apache2,wsgi,Python,Django,Apache,Apache2,Wsgi,我在与django设置wgsi时遇到问题。我正在关注这个。然而,我仍然对将.wsgi文件放在哪里以及是否需要设置sys.path感到困惑。我已经在web根目录的外部和内部直接尝试了它,但我无法获得任何预期的效果 # /home/ben/public_html/django_test/testproject/apache/django.wsgi: import os import sys os.environ['DJANGO_SETTINGS_MODULE'] = 'testproject.s

我在与django设置wgsi时遇到问题。我正在关注这个。然而,我仍然对将.wsgi文件放在哪里以及是否需要设置sys.path感到困惑。我已经在web根目录的外部和内部直接尝试了它,但我无法获得任何预期的效果

# /home/ben/public_html/django_test/testproject/apache/django.wsgi:

import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'testproject.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Relivant apache配置:

DocumentRoot "/home/ben/public_html/django_test/testproject/"
WSGIScriptAlias / "/home/ben/public_html/django_test/testproject/apache/django.wsgi"
Apache日志错误(标准Apache 500页):

我至少可以通过以下方法让django抛出自己的错误:

import os
import sys

path = '/home/ben/public_html/django_test/testproject'
if path not in sys.path:
    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
导致此django错误页面的原因:

ImportError at /admin/
No module named testproject.urls

我将wsgi置于与settings.py相同的级别,如下所示:

import os
import sys

sys.path.insert(0,os.sep.join(os.path.abspath(__file__).split(os.sep)[:-2]))


os.environ['DJANGO_SETTINGS_MODULE'] = 'yourprojectname.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
这是apache conf文件:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName www.yourprojectname.com
    Alias /media/ /home/diegueus9/workspace/yourprojectname/media/

    <Directory /home/diegueus9/workspace/yourprojectname/media/>
        Order deny,allow
        Allow from all
    </Directory>

    WSGIScriptReloading On
    WSGIDaemonProcess yourprojectname 
    WSGIProcessGroup yourprojectname
    WSGIApplicationGroup yourprojectname
    WSGIPassAuthorization On

    WSGIScriptAlias / /home/diegueus9/workspace/yourprojectname/yourfile.wsgi
    ErrorLog /var/log/apache2/yourprojectname-error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel debug

    CustomLog /var/log/apache2/yourprojectname-access.log combined

</VirtualHost>
NameVirtualHost*:80
服务器管理员webmaster@localhost
服务器名www.yourprojectname.com
别名/media//home/diegueus9/workspace/yourprojectname/media/
命令拒绝,允许
通融
WSGIScript正在重新加载
wsgidaemonprocessyourprojectname
WSGIProcessGroup yourprojectname
WSGIApplication组您的项目名称
WSGIPassAuthorization On
WSGIScriptAlias//home/diegueus9/workspace/yourprojectname/yourfile.wsgi
ErrorLog/var/log/apache2/yourprojectname-error.log
#可能的值包括:调试、信息、通知、警告、错误、临界值、,
#警惕,埃默格。
日志级调试
CustomLog/var/log/apache2/yourprojectname-access.log组合

向您展示了如何将mod_wsgi与Django一起使用,以及一些与此问题无关的其他项目。

作为一个快速解决方案,您可以将其添加到sys.path中:

path = '/home/ben/public_html/django_test/testproject'
还应添加以下内容:

path2 = '/home/ben/public_html/django_test'
您还可以在Apache VirtualHost中更改Python路径:

WSGIDaemonProcess [...] python-path=/home/ben/public_html/django_test

但您也应该查看mod_wsgi文档,了解Graham Dumpleton的建议。

我刚刚花了几个小时解决了这个问题,我的修复方法是
SELinux
禁止访问我的
/django/
文件夹

要检查SEStatus是否阻止您的访问,请在
/var/log/audit/audit.log查看日志

我的解决办法很简单:

restorecon -R /var/www/django/

这给出了一个Apache500。还尝试设置
os.environ['DJANGO\u SETTINGS\u MODULE']='testproject.SETTINGS'
。但是没有运气。
restorecon -R /var/www/django/