我正在尝试在我的 Ubuntu VPS 上设置 Thin Ruby 应用程序服务器。我创建了一个特定的帐户,在其下安装了 rbenv 以及所有 gem。
我正在寻找一种便捷的方法来实现以下目标:
- 在我的非特权用户帐户下运行我的 Thin Rack 应用程序。
- 使应用程序作为守护进程运行
- 让守护进程在系统启动时自动运行
- 使守护进程可重新启动
- 使 Nginx 通过 unix 域套接字访问应用程序。
目标二和目标三是最棘手的。是否可以为用户定义脚本,以便在系统启动时以该用户身份运行?
答案1
要在启动时启动,请在您的用户 crontab 文件中添加一行(使用crontab -e
):
带参数的 @reboot /path/to/your/script
该脚本的实际内容根据您的需要而有所不同。它可能只是启动守护进程,或者可能启动一个您传递配置的更智能的代理。这样,如果服务由于某种原因意外终止,您可以自动重新启动服务。
答案2
您只需要调整发行版的启动脚本模板即可。相信每个人都有这样的模板。
如果您使用 systemd,那么您可以指定要在单元文件中使用的用户。
如果您使用旧的初始化脚本,那么该脚本可能使用startproc
或start_daemon
。您可以向这些包装器添加参数以配置用户 ID。
或者您将程序设置为 SUID(不是针对 root 用户,而是针对目标用户)并将执行权限限制为受信任的用户(或仅限 root 用户)。