以root身份运行twistd,找不到模块

jps*_*ons 4 python twisted

我已经写在扭曲的一个简单的web服务器,我试图用其启动守护进程的twistd来.一切正常,reactor.run()但是当我使用twistd -y(作为root)时,找不到直接子目录中的任何包.我正在以root身份运行,因为服务器在端口80上运行.wordd的联机帮助页说:

请注意,如果twistd以root身份运行,则不会在工作目录中搜索Python模块.

那很好但为什么呢?我该如何解决?--rundir .即使我明确地设置了这个选项,twistd似乎也在忽略.

Jea*_*one 7

一般的UNIX智慧是在工作目录中搜索root时执行的事情是个坏主意.争论说它打开了特洛伊木马的大门.在以root身份运行时,不要忘记将工作目录添加到Python模块导入搜索路径,twistd基本上试图遵循这种智慧.

正如另一位评论者所说,您可以自己明确设置PYTHONPATH以包含包含您的应用所需代码的目录.

您还可以完全跳过以root身份运行,并使用authbind绑定低编号端口而不具有超级用户权限.这就是我所有服务器的部署方式.

  • 等等,使用authbind我可以在端口<1024上运行而不是root,我不需要重新编译我的内核?那太好了,希望我早点知道. (2认同)