今年夏天晚些时候,我将在一个偏僻的地方呆上十天。我有一项服务需要保持运行,如果我离开后出现问题,我想授予一两个受信任的人访问权限,以便能够重新启动该服务。该服务是一个 Node.js 应用程序,尽管它们技术性很强,但我希望它像通过 SSH 运行脚本一样简单(或者更好的选择,如果有的话)。实现这一目标的最佳方法是什么?
答案1
为了完全避免需要第二个人,您可能应该使用看门狗键入软件以保持服务正常运行。 Linux 上使用许多不同的工具来执行此操作,例如:
- 监控:http://mmonit.com/monit/
- 暴发户:http://upstart.ubuntu.com/
- 守护进程工具:http://cr.yp.to/daemontools.html
- 启动工具:http://people.debian.org/~enrico/launchtool.html
幸运的是,有一个名为 Node.js 的特定应用程序'forever
'这将为您轻松完成此任务。这里有一个非常有帮助的教程关于如何使用它。
快速的方法是:
npm install forever -g
forever start app.js
答案2
配置sudo
以便这两个用户可以执行必要的命令来停止/启动/任何服务。
最简单的当然是如果您有一个可以执行所有必需操作的初始化脚本。然后您所需要做的就是/sbin/service <servicename> ...
根据您的发行版授予这些用户或类似用户。
这样您就不必对您的设置进行任何更改,并且您确定一切都会以所有正确的参数和设置等开始。
答案3
只需为值得信赖的人设置额外的帐户即可。仅允许此帐户对 Node.js 应用程序进行启动/停止/重新启动操作。毕竟,您可以使用以下示例脚本来管理您的应用程序:
#!/bin/bash
command=$1
ssh user@host "your-app $command"
之后像这样运行它:
script.sh restart
答案4
- 给他们一个普通用户。
- 将您想要的命令放在他们的路径中。
为您的可执行文件设置 SETUID 标志。
# chmod u+s [your executable file for service restart]