Django passenger_wsgi.py问题

时间:2018-11-04 20:30:49

标签: python django passenger

我在A2 Hosting Linux共享主机帐户上运行Django。以前,我使用的是旧版本的Django和Python。我也在使用FCGI。我最近更改为新服务器,现在使用的是Django 2.1.2,Python 3.6.0。和Phusion乘客。

我无法获得passenger_wsgi.py来加载我的网站,也找不到错误日志来尝试解决问题。

.htaccess文件位于public_html目录中。

我的应用程序文件存储在: /home/username/example.com /

example.com目录中的文件夹/文件结构为: -媒体

-mysite

--- init.py

--- settings.py

--- urls.py

--- wsgi.py

-公共

-tmp

-manage.py

-passenger_wsgi.py

passenger_wsgi.py文件的内容:

import os
import sys

import mysite.wsgi

application = mysite.wsgi.application

cwd = os.getcwd()
sys.path.append(cwd)
#sys.path.append(os.getcwd())
sys.path.append(cwd + '/mysite')
SCRIPT_NAME = os.getcwd()


class PassengerPathInfoFix(object):
    """
    Sets PATH_INFO from REQUEST_URI since Passenger doesn't provide it.
    """
    def __init__(self, app):
        self.app = app

    def __call__(self, environ, start_response):
        from urllib.parse import unquote
        environ['SCRIPT_NAME'] = SCRIPT_NAME

        request_uri = unquote(environ['REQUEST_URI'])
        script_name = unquote(environ.get('SCRIPT_NAME', ''))
        offset = request_uri.startswith(script_name) and len(environ['SCRIPT_NAME']) or 0
        environ['PATH_INFO'] = request_uri[offset:].split('?', 1)[0]
        return self.app(environ, start_response)


application = PassengerPathInfoFix(application)

该网站产生错误(下图)。我整天都在尝试通过修改passenger_wsgi.py文件来解决此问题。

Site error

我找不到乘客错误日志文件。我对旅客没有任何经验。我已经没有足够的方法来尝试解决问题了。

当我在SSH中运行“ python passenger_wsgi.py”时,不会产生任何注释。

如果有人可以帮助我: (1)确认passenger_wsgi.py内容有什么问题,或 (2)如何在共享的Linux托管帐户上找到“乘客”错误日志。

2 个答案:

答案 0 :(得分:0)

不确定是否可以在没有日志的情况下进行诊断,但是我在共享A2 Hosting查找日志时遇到了类似的问题。我可以在cPanel的“错误”部分中找到一些旅客日志。

在cPanel主屏幕上,向下滚动到“指标”子标题。本节中将有一个指向“错误”的链接。您应该能够在其中找到重要的旅客日志。

答案 1 :(得分:0)

passenger_wsgi.py 的这种结构在A2托管上对我有效:

import os
import sys

import MyApp.wsgi 

SCRIPT_NAME = '/home/user/domain' 

class PassengerPathInfoFix(object): 
    """ Sets PATH_INFO from REQUEST_URI because Passenger doesn't provide it. """ 
    def __init__(self, app): 
        self.app = app 

    def __call__(self, environ, start_response): 
        from urllib.parse import unquote 
        environ['SCRIPT_NAME'] = SCRIPT_NAME

        request_uri = unquote(environ['REQUEST_URI']) 
        script_name = unquote(environ.get('SCRIPT_NAME', '')) 
        offset = request_uri.startswith(script_name) and len(environ['SCRIPT_NAME']) or 0
        environ['PATH_INFO'] = request_uri[offset:].split('?', 1)[0] 
        return self.app(environ, start_response) 

application = MyApp.wsgi.application 
application = PassengerPathInfoFix(application)