7

我试图想出一个很好的 init.d 脚本来启动一个 psgi 应用程序,使用start_serverstarman。它需要具备以下功能:

  • 在 RedHat 上运行(即 Debianstart-stop-daemon不可用)
  • start_server以其他用户身份运行
  • 可维护。

理想情况下,我想使用附带的东西/etc/init.d/functions为脚本赋予任何 ol' RedHat init.d 脚本的外观和感觉。

更具体地说,我正在寻找最佳实践:

  • 守护一个没有自己--daemonize选项的程序
  • 在另一个 UID 下运行守护程序。
4

3 回答 3

1

如果 perl 仍然在运行,那么使用Ubic怎么样?它是一个基于 perl 的管理器,使 LSB /etc/init.d/ 的兼容性相当容易。我倾向于按照使用 runit/daemontools/s6 的方式使用它(在单独的 services/ 目录中),但您有很大的灵活性。由于您可以在脚本中使用 perl,因此有很多有趣的可能性。此外,Ubic 为您提供了可移植性,因为它可以在不同的平台(BSD、Linux、Solaris、OS/X 等)上以相同的方式工作。

于 2013-05-10T20:05:39.403 回答
1

你可以试试runit,它是另一个主管。现在,使用其中一种东西似乎是一种好习惯。在这里,您可以阅读不同主管的比较。

最佳实践:

  • 守护一个没有自带 --daemonize 选项的程序

你不必守护程序,runit 会处理它。

  • 在另一个 UID 下运行守护程序。

在这里你可以使用chpst

于 2013-05-05T09:14:18.723 回答
1

这是我们正在使用的初始化脚本: starman-init

它具有您提到的所有功能:

  • 使用 start_server 支持优雅重启
  • 作为非特权用户/组nobody/nobody运行
  • 使用 /etc/init.d/functions

请注意,它假定您为您的应用程序安装了本地 Perl(例如pleenvperlbrew)。您需要为您的环境定制它。

于 2014-07-07T21:27:34.533 回答