在啟動時運行 Python 伺服器

在啟動時運行 Python 伺服器

我有一些需要運行的基於 Python 的伺服器,並希望它們在我啟動 Ubuntu 伺服器時自動啟動。像這樣執行它們的最佳方法是什麼?

我希望我可以編寫一個 Bash 腳本並使用 Screen 讓它們在後台運行,這樣我就可以時不時地檢查它們,但是作為

echo screen -d -m python

工作得很好,

echo screen -d -m `sudo python /home/matt/tornadoServer/tornadoDeploy.py`

沒有,沒有錯誤訊息。這跟空間有關係嗎?即使我確實用反引號包圍它?我也嘗試過:

WEB="screen -d -m `sudo python /home/matt/tornadoServer/tornadoDeploy.py`"
echo $WEB

作為逃離空間的一種方式,但運氣不佳。 Bash 腳本執行此操作的方法是什麼?

而且,一旦 Bash 腳本起作用,我可以將其放在哪裡以使其在啟動時執行?

答案1

它失敗是因為sudo提示輸入密碼。由於沒有打開 TTY,它只是在等待您輸入 TTY,或者實際上可能會立即失敗。如果您以 root 身份運行它,則無需以 sudo 身份啟動它。

然而,您可能想要做的是改變tornadoDeploy.py以守護自身——也就是說,分離自身,以便它不以打開的會話運行。這python-daemonize 函式庫提供了簡單的工具來幫助您做到這一點。這消除了處理螢幕的麻煩,同時仍然允許您守護進程。

答案2

sudo -n python /home/matt/tornadoServer/tornadoDeploy.py &

進入檔案/etc/rc.d/rc.local。或您的發行版的任何等效內容。

假設您的腳本是一個行為良好的守護進程,並且您已將 sudo 設定為運行腳本時不需要密碼。

關於啟動腳本和關於 python 守護程式庫。另外,你不需要運行龍捲風嗎在真正的 http 伺服器後面

答案3

Ubuntu(和 Debian)讓應用程式在啟動時啟動的方法是使用 update-rc.d 將它們轉換為系統服務 - 請參閱此處的說明:http://www.debuntu.org/how-to-manage-services-with-update-rc.d

請記住,以 root 身分運行的任何內容都是潛在的安全漏洞,特別是如果其他使用者可以修改它。

答案4

如果從 rc.local 執行它,您也需要編輯 /etc/sudoers 並註解此字串:

預設值要求

相關內容