-1

尝试在我的 Debian 6 服务器上部署一个简单的龙卷风应用程序。我已经使用 pip 安装了龙卷风,现在它在:

/usr/local/lib/python2.6/dist-packages/tornado

此外,我在执行 myapp.py 的 myuser 的 .bashrc 上手动添加了 tornado 的路径:

PYTHONPATH=/usr/local/lib/python2.6/dist-packages/tornado:/usr/local/lib/python2.6/dist-packages/tornado:/usr/local/lib/python2.6/dist-packages

myuser 是 www-data 组的成员。

我在 /var/log/tornado.log 中得到这个恼人的错误:

File "/path/to/myapp.py", line 1, in <module>
    import tornado.httpserver, tornado.ioloop, tornado.options, tornado.web, os.path, random, string
ImportError: No module named tornado.httpserver

supervisor.conf 是这样的:

[group:tornadoes]
programs=tornado-8000,tornado-8001,tornado-8002,tornado-8003


[program:tornado-8000]
command=python /path/to/myapp.py --port=8000
directory=/path/to
user=www-data
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/tornado.log
loglevel=info
[program:tornado-8001]
command=python /path/to/myapp.py --port=8001
directory=/path/to
user=www-data
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/tornado.log
loglevel=info
[program:tornado-8002]
command=python /path/to/myapp.py --port=8002
directory=/path/to
user=www-data
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/tornado.log
loglevel=info
[program:tornado-8003]
command=python /path/to/myapp.py --port=8003
directory=/path/to
user=www-data
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/tornado.log
loglevel=info

具有讽刺意味的是,具有相同配置(aprat 形式 /path/to/myapp.py 和文件所有者)的相同应用程序在另一个 Debian 测试服务器上部署得很好。真的很困惑并感谢您的提示。

4

1 回答 1

0

您不应该将 tornado 目录添加到 PYTHONPATH,而是包含它的目录(dist-packages)。我不确定 debian 如何设置它的默认 python 路径,但是默认情况下,像 dist-packages 和 site-packages 这样的目录通常都在它上面。如果不是,您实际上需要通过 sitecustomize.py 文件(使用 site.addsitedir())添加它们,而不是仅仅修改 pythonpath 以使某些功能正常工作(尽管这对龙卷风无关紧要)。

在 supervisord 下运行程序时不使用 .bashrc。如果您需要更改环境,请在 supervisor.conf 中使用“环境”语句进行更改。

于 2013-10-08T12:44:10.840 回答