web:supervisor 安裝

文檔:http://supervisord.org/introduction.html
supervisor 是什麼我就不說了,下面就來說一下我一天半的安裝踩坑之旅。
我是在 Ubuntu 系統上進行的安裝,採用的是 apt-get 的方式:

sudo apt-get install supervisor

一、安裝

1、使用上面的命令進行安裝。
2、安裝成功後你需要在終端進入到 /etc/supervisor 文件夾,然後輸入 echo_supervisord_conf

ouer@ouer-virtual-machine:/etc/supervisor$ echo_supervisord_conf

然後正常情況下你應該會看到,控制檯輸出一堆內容(其實是supervisor的默認配置文件的內容)
然後再執行:

ouer@ouer-virtual-machine:/etc/supervisor$ echo_supervisord_conf > /etc/supervisor/supervisord.conf
如果出現沒有權限的問題,可以使用這條命令
sudo su - root -c "echo_supervisord_conf > /etc/supervisor/supervisord.conf"

就是把配置文件(supervisord.conf)創建到 /etc/supervisor文件夾下。

3、使用這種方式創建的默認配置文件有些地方是需要更改的。
supervisord.pid 以及 supervisor.sock 是放在 /tmp 目錄下,但是 /tmp 目錄是存放臨時文件,裏面的文件是會被 Linux 系統刪除的,一旦這些文件丟失,就無法再通過 supervisorctl 來執行 restart 和 stop 命令了。會報錯。
因此:

[unix_http_server]
;file=/tmp/supervisor.sock   ; (the path to the socket file)
;修改爲 /var/run 目錄,避免被系統刪除
file=/var/run/supervisor.sock   ; (the path to the socket file)
;chmod=0700                 ; socket file mode (default 0700)
;chown=nobody:nogroup       ; socket file uid:gid owner
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))

;[inet_http_server]         ; inet (TCP) server disabled by default
;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for ;all iface)
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))
...

[supervisord]
;logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
;修改爲 /var/log 目錄,避免被系統刪除
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10           ; (num of main logfile rotation backups;default 10)
loglevel=info                ; (log level;default info; others: debug,warn,trace)
;pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
;修改爲 /var/run 目錄,避免被系統刪除
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
...
;設置啓動supervisord的用戶,一般情況下不要輕易用root用戶來啓動,除非你真的確定要這麼做
;user=chrism                 ; (default is current user, required if root)
...

[supervisorctl]
; 必須和'unix_http_server'裏面的設定匹配
;serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket
;修改爲 /var/run 目錄,避免被系統刪除
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris              ; should be same as http_username if set
;password=123                ; should be same as http_password if set
...

設置好配置文件後,應先創建上述配置文件中新增的文件夾。如果指定了啓動用戶 user,那麼應注意相關文件的權限問題,包括日誌文件,否則會出現沒有權限的錯誤。

Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13)

需要爲剛纔創建的文件夾賦予權限:

sudo chmod 777 /run
sudo chmod 777 /var/log

4、還有個 include 的問題:
其實你把自己的項目配置在默認配置文件中也可以,不過我可不想那麼幹。因此就的說到include。在默認的配置文件中include是被註釋了的(;),首先你需要打開註釋,然後配置你自己的配置文件的路徑。

[include]
files = /etc/supervisord.d/*.ini 可以是.conf 或者 .ini

5、使用瀏覽器管理
supervisor 同時提供了通過瀏覽器來管理進程的方法,只需要打開下面代碼的註釋就可以了。(就是把前面的;刪除)

;[inet_http_server]         ; inet (TCP) server disabled by default
;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for ;all iface)
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))

然後通過瀏覽器訪問 127.0.0.1:9001 就會看到管理界面。

二、命令

supervisord : 啓動supervisor
supervisorctl reload :修改完配置文件後重新啓動supervisor
supervisorctl status :查看supervisor監管的進程狀態
supervisorctl start 進程名 :啓動XXX進程
supervisorctl stop 進程名 :停止XXX進程
supervisorctl stop all:停止全部進程,注:start、restart、stop都不會載入最新的配置文件。
supervisorctl update:根據最新的配置文件,啓動新配置或有改動的進程,配置沒有改動的進程不會受影響而重啓

參考博客:http://www.cnblogs.com/restran/p/4854623.html
參考博客:http://www.ttlsa.com/linux/using-supervisor-control-program/

發佈了93 篇原創文章 · 獲贊 23 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章