编写init的最佳方式.start_server和starman的D脚本



我正试图想出一个不错的init。D脚本启动一个psgi应用程序,使用start_server和starman。它需要具有以下特性:

  • 在RedHat上运行(即Debian的start-stop-daemon不可用)
  • 以其他用户运行start_server
  • 是可维护的。

理想情况下,我想使用的东西,/etc/init.d/functions来给脚本的外观和感觉的任何老红帽init。d脚本。

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

  • 将没有自带--daemonize选项的程序作为守护进程
  • 在其他UID下运行守护进程

你可以试试runit,它是另一个监控器。现在,使用这些东西似乎是一个很好的实践。这里你可以读到不同主管的比较。

最佳实践:

  • 对没有自带的程序进行守护——Daemonize选项

你不需要守护程序,runit会照顾它。

  • 在其他UID下运行守护进程

这里可以使用chpst

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

下面是我们使用的初始化脚本:starman-init

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

  • 使用start_server支持安全重启
  • 以无特权用户/组nobody/nobody运行
  • 使用/etc/init.d/functions

注意,它假设您已经为您的应用程序安装了一个本地Perl(例如plenv或perlbrew)。您需要根据您的环境自定义它。

最新更新