编程语言
首页 > 编程语言> > python-对Dreamhost Passenger Django进行故障排除

python-对Dreamhost Passenger Django进行故障排除

作者:互联网

我有一个网站,在Dreamhost Passenger Django上愉快地运行了几年.最近(上周四),Dreamhost似乎在不通知我的情况下更新了引擎盖下的“乘客”,这已导致网站崩溃.

这是已安装(托管)的乘客目录:

$pwd
/dh/nginx/passenger
$ls -la
total 32
drwxr-xr-x 12 root root 4096 2014-05-15 13:40 .
drwxr-xr-x  6 root root   76 2012-06-27 17:54 ..
-rw-r--r--  1 root root 1056 2013-10-26 15:00 LICENSE
drwxr-xr-x  2 root root 4096 2014-05-15 13:40 bin
drwxr-xr-x  7 root root   92 2014-05-15 13:40 buildout
drwxr-xr-x  2 root root 4096 2014-05-15 13:40 dev
drwxr-xr-x  5 root root 4096 2014-05-15 13:40 doc
drwxr-xr-x 10 root root  139 2014-05-15 13:40 ext
drwxr-xr-x  3 root root 4096 2014-05-15 13:40 helper-scripts
drwxr-xr-x  3 root root   69 2014-05-15 13:40 lib
drwxr-xr-x  2 root root  137 2014-05-15 13:40 man
drwxr-xr-x  3 root root   38 2014-05-15 13:40 node_lib
-rw-r--r--  1 root root 1243 2013-10-26 15:00 passenger.gemspec
drwxr-xr-x  4 root root 4096 2014-05-15 13:40 resources

这些文件更新近似于站点关闭的时间.

我认为这可能是通过触摸/path/to/app/tmp/restart.txt来重新启动乘客的简单情况,但这似乎没有用.有什么想法可以解决这个问题吗?

提前致谢.

编辑1:Web服务器是Nginx.我假设我可以重新加载Nginx,这将刷新通过Passenger的所有连接吗?

须藤/etc/init.d/nginx重新加载

编辑2:引发错误的问题文件是:

/dh/nginx/passenger/helper-scripts/wsgi-loader.py

与错误:

File "/dh/nginx/passenger/helper-scripts/wsgi-loader.py", line 171
    buf = b''
            ^

SyntaxError: invalid syntax

有趣的是,尽管看起来Passenger是在2014-05-15更新的,但所有这些帮助程序脚本的历史都可以追溯到2013-10-26.就像这些帮助程序脚本与新安装的Passenger版本过时一样,这是否简单?我以为旅客本身与语言无关?

编辑3:virtualenv被忽略

因此,系统安装的Python版本是2.5.2,但是我在其中构建了该应用程序的virtualenv Python是2.6.8.因此,该错误甚至都不会出现.我已经按照instructions添加了2.6.8 Python解释器,但它仍然无法正常工作,并且错误消息仍然表明正在使用旧的Python解释器.有任何想法吗?

编辑4:使用正确(和有效)的virtualenv Python解释器(2.6.8)

import sys, os
INTERP = "/home/<user>/venv/tcs/bin/python2.6"
if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv)
# print(sys.version)
sys.path.append(os.getcwd())
sys.path.append(os.path.join(os.getcwd(), '/home/<user>/<application>/<dir>'))
os.environ['DJANGO_SETTINGS_MODULE'] = "project.settings"
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

(<user>, <application> and <dir> hidden for obvious reasons)

当取消注释print(sys.version)时,得到以下输出:

2.6.8 (unknown, Jul 10 2012, 08:03:16)
[GCC 4.3.2]

解决方法:

看起来您正在运行的Python 2.5或更早版本不支持字节字符串声明语法. Phusion旅客requires Python 2.6 or later.

标签:dreamhost,nginx,passenger,python,django
来源: https://codeday.me/bug/20191121/2053936.html