mac下supervisor安裝及簡單配置
阿新 • • 發佈:2019-01-10
gen github back 管理工具 target 測試 重啟 symbol 重定向
目錄下, 創建一個
作者:xBei
鏈接:https://www.jianshu.com/p/050273859836
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並註明出處。
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安裝及簡單配置