1. 程式人生 > >mac下supervisor安裝及簡單配置

mac下supervisor安裝及簡單配置

gen github back 管理工具 target 測試 重啟 symbol 重定向

supervisor是一個用 Python 寫的進程管理工具,可以很方便的用來啟動、重啟、關閉進程(守護進程)。可以用他來管理自己的“服務程序”。

安裝

首先安裝Python,Mac系統好像自帶。

執行 sudo pip install supervisor 安裝

安裝pip

下載get-pip.py,然後執行。具體請查看文檔

$ wget https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py
...
$ sudo python get-pip.py

配置

使用默認配置項

$ sudo echo_supervisord_conf > /etc/supervisord.conf
$ sudo vim /etc/supervisord.conf

其他可以暫時忽略,修改最底下一行

; 包含其他的配置文件
[include]
files = /etc/supervisor/*.conf    ; 可以隨意指定,目錄不存在請先建立。配置文件可以是 *.conf 或 *.ini

測試一下

supervisord -c /etc/supervisord.conf
ps aux | grep supervisord

配置“服務”

這裏我用“IDEA License Server”做示例

sudo vim /etc/supervisor/idea.conf

文件內容

[program:idea]                          ; 是應用程序的唯一標識,不能重復
directory = /data/jidea-server          ; 程序的啟動目錄
command = /data/jidea-server/IntelliJIDEALicenseServer_darwin_amd64 ; 啟動命令
autostart = true                        ; 在 supervisord 啟動的時候也自動啟動
startsecs = 5                           ; 啟動 5 秒後沒有異常退出,就當作已經正常啟動了
autorestart = true                      ; 程序異常退出後自動重啟
startretries = 3                        ; 啟動失敗自動重試次數,默認是 3
redirect_stderr = true                  ; 把 stderr 重定向到 stdout,默認 false
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /var/log/supervusor/jidea-server.log   ; stdout 日誌文件,註意:要確保目錄已經建立並且可以訪問(寫權限)

使用命令supervisorctl -c /etc/supervisord.conf加裝並啟動。如果一切正常可以使用命令supervisorctl status查看狀態。例如:

$ supervisorctl status
idea                            RUNNING   pid 1177, uptime 0:32:00
$ 

以上輸出表示一起正常,如果有錯誤,請“具體情況具體分析”本文檔暫不做相關討論。

使用 launchctl 來啟動 supervisor 自身

launchctl是Mac自帶的工具,具體使用方法請看官方文檔或者問度娘。
這裏我在 /Library/LaunchAgents

目錄下, 創建一個 supervisord.plist 文件, 命令:sudo vim /Library/LaunchDaemons/supervisord.plist,內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>KeepAlive</key>
    <dict>
        <key>SuccessfulExit</key>
        <false/>
    </dict>
    <key>Label</key>
    <string>supervisord</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/supervisord</string>
        <string>-n</string>
        <string>-c</string>
        <string>/etc/supervisord.conf</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

註意:檢查文件的權限

$ ls -lsa /Library/LaunchDaemons
total 24
0 drwxr-xr-x   5 root  wheel   170 11 22 09:44 .
0 drwxr-xr-x+ 67 root  wheel  2278 11 16 14:41 ..
8 -rw-r--r--   1 root  wheel   590 11 16 17:52 supervisord.plist

supervisord.plist必須是屬於root用戶的。不是的話修改:sudo chown root:wheel /Library/LaunchDaemons/supervisord.plist。最後啟動他

sudo launchctl load /Library/LaunchDaemons/supervisord.plist

註意,在啟動前先檢查一下supervisord時不時已經在運行了,如果已經運行請先kill掉。

註意: 必須在這個目錄(/Library/LaunchDaemons)下才會使用root啟動。

$ ps aux | grep supervisord
user              1167   0.0  0.2  4304600  15744   ??  Ss    9:52上午   0:00.51 /usr/bin/python /usr/local/bin/supervisord -n -c /etc/supervisord.conf
$ kill -4 1167


作者:xBei
鏈接:https://www.jianshu.com/p/050273859836
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並註明出處。

mac下supervisor安裝及簡單配置