在启动时运行Python服务器

我有几个基于Python的服务器,我需要运行,并希望他们启动我的Ubuntu服务器框时自动启动。 执行它们的最好方法是什么?

我希望我可以写一个Bash脚本,并使用Screen来让它们在后台运行,我可以随时查看它们,但是在哪里

echo screen -d -m python 

工作得很好,

 echo screen -d -m `sudo python /home/matt/tornadoServer/tornadoDeploy.py` 

不,没有错误信息。 这与空间有关吗? 即使我用反引号包围了它? 我也试过:

 WEB="screen -d -m `sudo python /home/matt/tornadoServer/tornadoDeploy.py`" echo $WEB 

作为逃避空间的一种方式,但没有运气。 什么是Bash脚本的方式来做到这一点?

而且,一旦Bash脚本工作,我可以把它放在启动时执行?

它的失败,因为sudo提示input密码。 由于没有TTY开放,它只是在等待你进入一个 – 或者可能,实际上,立即失败。 如果你以root身份运行它,你不需要像sudo一样启动它。

然而,你可能想要做的是改变tornadoDeploy.py来守护自身 – 也就是分离自己,这样它就不会以打开的会话运行。 python-daemonize库提供了简单的工具来允许你这样做。 这消除了不得不处理屏幕,同时仍然允许你守护进程。

 sudo -n python /home/matt/tornadoServer/tornadoDeploy.py & 

进入文件/etc/rc.d/rc.local。 或者等同于你的发行。

假设你的脚本是一个行为良好的守护进程,并且你已经设置了sudo,不需要密码来运行你的脚本。

阅读关于启动脚本和关于python守护进程库的信息。 另外,你不需要在真正的http服务器后面运行龙卷风吗?

Ubuntu(和Debian)在启动时启动应用程序的方法是使用update-rc.d将其转换为系统服务 – 请参阅此处的说明: http : //www.debuntu.org/how-to-manage -Services与-更新的rc.d

请记住,以root身份运行的任何内容都是潜在的安全漏洞,尤其是在其他用户可以修改的情况下。

如果你从rc.local运行它,你还需要编辑/ etc / sudoers并注释这个string:

默认值requiretty