2013-04-28 32 views
7

我試圖想出一個不錯的init.d腳本來啓動一個psgi應用程序,使用start_serverstarman。它需要具有以下特點:在RedHat爲start_server和starman編寫init.d腳本的最佳方法是什麼?

  • 運行(即Debian的start-stop-daemon不可用)
  • 運行start_server作爲另一個用戶
  • 可維護性。

理想情況下,我想使用/etc/init.d/functions附帶的內容爲腳本提供任何ol'RedHat init.d腳本的外觀和風格。

更具體地說,我正在尋找最好的做法:

  • 長期駐留的程序不來與自己的--daemonize選項
  • 運行在另一個UID守護進程。
+2

雖然產品和圖書館的建議並不完全一致,但您是否考慮過[supervisor](http://supervisord.org/)?您可以在RHEL5和6的EPEL repo中找到它。這需要關注init腳本部分,並且您幾乎不費力氣就可以獲得所需的所有其他功能。 – Charles 2013-04-28 14:56:38

+1

哇。謝謝,查爾斯。如果這個東西按照廣告的方式工作,我會爲它做很多工作。爲什麼這是我第一次讀到它? – innaM 2013-04-29 08:29:10

+0

我不確定,但傳播了這個詞!我們在生產中使用它來保持我們的Gearman工人運行。 – Charles 2013-04-29 16:32:55

回答

1

您可以試試runit,這是另一位主管。現在,使用這些東西中的一種似乎是一種好習慣。這裏有you could read不同主管的比較。

最佳實踐:

  • 長期駐留的程序不來與自己的--daemonize選項

您不必守護進程的程序,runit需要照顧它。

  • 在另一個UID下運行該守護進程。

這裏如果是用perl反正運行有關使用Ubic如何,你可以使用chpst

1

?這是一個基於perl的管理程序,它使得LSB /etc/init.d/兼容性變得相當容易。我傾向於以使用runit/daemontools/s6的方式使用它(在單獨的服務/目錄中),但您有很大的靈活性。既然你可以在你的腳本中使用perl,那麼有很多有趣的可能性。此外,由於Ubic可以在不同的平臺(BSD,Linux,Solaris,OS/X等)上以相同的方式工作,所以Ubic具有可移植性。

1

下面是我們使用的init腳本: starman-init

它擁有所有你所提到的功能:

  • 用途START_SERVER支持優雅重啓
  • 運行作爲非特權用戶/組人/沒有人
  • 使用/ etc/init。d /功能

注意,它假定您已經安裝了您的應用程序(如plenvperlbrew)一個本地Perl。你需要爲你的環境定製。

相關問題