亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

Linux下進程管理工具Supervisor的安裝配置和基本使用

添加時間:2016-2-22 3:46:32  添加: 思海網絡 
Supervisor (http://supervisord.org) 是一個用 Python 寫的進程管理工具,可以很方便的用來啟動、重啟、關閉進程(不僅僅是 Python 進程)。除了對單個進程的控制,還可以同時啟動、關閉多個進程,比如很不幸的服務器出問題導致所有應用程序都被殺死,此時可以用 supervisor 同時啟動所有應用程序而不是一個一個地敲命令啟動。
安裝

Supervisor 可以運行在 Linux、Mac OS X 上。如前所述,supervisor 是 Python 編寫的,所以安裝起來也很方便,可以直接用 pip :



代碼如下:
sudo pip install supervisor

如果是 Ubuntu 系統,還可以使用 apt-get 安裝。

supervisord 配置

Supervisor 相當強大,提供了很豐富的功能,不過我們可能只需要用到其中一小部分。安裝完成之后,可以編寫配置文件,來滿足自己的需求。為了方便,我們把配置分成兩部分:supervisord(supervisor 是一個 C/S 模型的程序,這是 server 端,對應的有 client 端:supervisorctl)和應用程序(即我們要管理的程序)。
首先來看 supervisord 的配置文件。安裝完 supervisor 之后,可以運行echo_supervisord_conf 命令輸出默認的配置項,也可以重定向到一個配置文件里:



代碼如下:
echo_supervisord_conf > /etc/supervisord.conf

去除里面大部分注釋和“不相關”的部分,我們可以先看這些配置:

[unix_http_server]
file=/tmp/supervisor.sock   ; UNIX socket 文件,supervisorctl 會使用
;chmod=0700                 ; socket 文件的 mode,默認是 0700
;chown=nobody:nogroup       ; socket 文件的 owner,格式: uid:gid

;[inet_http_server]         ; HTTP 服務器,提供 web 管理界面
;port=127.0.0.1:9001        ; Web 管理后臺運行的 IP 和端口,如果開放到公網,需要注意安全性
;username=user              ; 登錄管理后臺的用戶名
;password=123               ; 登錄管理后臺的密碼

[supervisord]
logfile=/tmp/supervisord.log ; 日志文件,默認是 $CWD/supervisord.log
logfile_maxbytes=50MB        ; 日志文件大小,超出會 rotate,默認 50MB
logfile_backups=10           ; 日志文件保留備份數量默認 10
loglevel=info                ; 日志級別,默認 info,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ; pid 文件
nodaemon=false               ; 是否在前臺啟動,默認是 false,即以 daemon 的方式啟動
minfds=1024                  ; 可以打開的文件描述符的最小值,默認 1024
minprocs=200                 ; 可以打開的進程數的最小值,默認 200

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; 通過 UNIX socket 連接 supervisord,路徑與 unix_http_server 部分的 file 一致
;serverurl=http://127.0.0.1:9001 ; 通過 HTTP 的方式連接 supervisord

; 包含其他的配置文件


[include]
files = relative/directory/*.ini    ; 可以是 *.conf 或 *.ini

[unix_http_server]
file=/tmp/supervisor.sock   ; UNIX socket 文件,supervisorctl 會使用
;chmod=0700                 ; socket 文件的 mode,默認是 0700
;chown=nobody:nogroup       ; socket 文件的 owner,格式: uid:gid
 
;[inet_http_server]         ; HTTP 服務器,提供 web 管理界面
;port=127.0.0.1:9001        ; Web 管理后臺運行的 IP 和端口,如果開放到公網,需要注意安全性
;username=user              ; 登錄管理后臺的用戶名
;password=123               ; 登錄管理后臺的密碼
 
[supervisord]
logfile=/tmp/supervisord.log ; 日志文件,默認是 $CWD/supervisord.log
logfile_maxbytes=50MB        ; 日志文件大小,超出會 rotate,默認 50MB
logfile_backups=10           ; 日志文件保留備份數量默認 10
loglevel=info                ; 日志級別,默認 info,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ; pid 文件
nodaemon=false               ; 是否在前臺啟動,默認是 false,即以 daemon 的方式啟動
minfds=1024                  ; 可以打開的文件描述符的最小值,默認 1024
minprocs=200                 ; 可以打開的進程數的最小值,默認 200
 
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
 
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; 通過 UNIX socket 連接 supervisord,路徑與 unix_http_server 部分的 file 一致
;serverurl=http://127.0.0.1:9001 ; 通過 HTTP 的方式連接 supervisord
 
; 包含其他的配置文件
[include]
files = relative/directory/*.ini    ; 可以是 *.conf 或 *.ini


我們把上面這部分配置保存到 /etc/supervisord.conf(或其他任意有權限訪問的文件),然后啟動 supervisord(通過 -c 選項指定配置文件路徑,如果不指定會按照這個順序查找配置文件:$CWD/supervisord.conf, $CWD/etc/supervisord.conf, /etc/supervisord.conf):



代碼如下:
supervisord -c /etc/supervisord.conf


program 配置

上面我們已經把 supervisrod 運行起來了,現在可以添加我們要管理的進程的配置文件?梢园阉信渲庙椂紝懙 supervisord.conf 文件里,但并不推薦這樣做,而是通過 include 的方式把不同的程序(組)寫到不同的配置文件里。
為了舉例,我們新建一個目錄 /etc/supervisor/ 用于存放這些配置文件,相應的,把 /etc/supervisord.conf 里 include 部分的的配置修改一下:



代碼如下:
[include]
files = /etc/supervisor/*.conf

假設有個用 Python 和 Flask 框架編寫的用戶中心系統,取名 usercenter,用 gunicorn (http://gunicorn.org/) 做 web 服務器。項目代碼位于 /home/leon/projects/usercenter,gunicorn 配置文件為 gunicorn.py,WSGI callable 是 wsgi.py 里的 app 屬性。所以直接在命令行啟動的方式可能是這樣的:


代碼如下:
cd /home/leon/projects/usercenter
gunicorn -c gunicorn.py wsgi:app

現在編寫一份配置文件來管理這個進程(需要注意:用 supervisord 管理時,gunicorn 的 daemon 選項需要設置為 False):
[program:usercenter]
directory = /home/leon/projects/usercenter ; 程序的啟動目錄
command = gunicorn -c gunicorn.py wsgi:app  ; 啟動命令,可以看出與手動在命令行啟動的命令是一樣的
autostart = true     ; 在 supervisord 啟動的時候也自動啟動
startsecs = 5        ; 啟動 5 秒后沒有異常退出,就當作已經正常啟動了
autorestart = true   ; 程序異常退出后自動重啟
startretries = 3     ; 啟動失敗自動重試次數,默認是 3
user = leon          ; 用哪個用戶啟動
redirect_stderr = true  ; 把 stderr 重定向到 stdout,默認 false
stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默認 50MB
stdout_logfile_backups = 20     ; stdout 日志文件備份數
; stdout 日志文件,需要注意當指定目錄不存在時無法正常啟動,所以需要手動創建目錄(supervisord 會自動創建日志文件)
stdout_logfile = /data/logs/usercenter_stdout.log

; 可以通過 environment 來添加需要的環境變量,一種常見的用法是修改 PYTHONPATH
; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere

[program:usercenter]
directory = /home/leon/projects/usercenter ; 程序的啟動目錄
command = gunicorn -c gunicorn.py wsgi:app  ; 啟動命令,可以看出與手動在命令行啟動的命令是一樣的
autostart = true     ; 在 supervisord 啟動的時候也自動啟動
startsecs = 5        ; 啟動 5 秒后沒有異常退出,就當作已經正常啟動了
autorestart = true   ; 程序異常退出后自動重啟
startretries = 3     ; 啟動失敗自動重試次數,默認是 3
user = leon          ; 用哪個用戶啟動
redirect_stderr = true  ; 把 stderr 重定向到 stdout,默認 false
stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默認 50MB
stdout_logfile_backups = 20     ; stdout 日志文件備份數
; stdout 日志文件,需要注意當指定目錄不存在時無法正常啟動,所以需要手動創建目錄(supervisord 會自動創建日志文件)
stdout_logfile = /data/logs/usercenter_stdout.log

; 可以通過 environment 來添加需要的環境變量,一種常見的用法是修改 PYTHONPATH
; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere
一份配置文件至少需要一個 [program:x] 部分的配置,來告訴 supervisord 需要管理那個進程。[program:x] 語法中的 x 表示 program name,會在客戶端(supervisorctl 或 web 界面)顯示,在 supervisorctl 中通過這個值來對程序進行 start、restart、stop 等操作。

supervisorctl 子命令



代碼如下:
$ supervisorctl help
default commands (type help <topic>):
=====================================
add clear fg open quit remove restart start stop update
avail exit maintail pid reload reread shutdown status tail version

使用 supervisorctl

Supervisorctl 是 supervisord 的一個命令行客戶端工具,啟動時需要指定與 supervisord 使用同一份配置文件,否則與 supervisord 一樣按照順序查找配置文件。



代碼如下:
supervisorctl -c /etc/supervisord.conf

上面這個命令會進入 supervisorctl 的 shell 界面,然后可以執行不同的命令了:


代碼如下:
> status # 查看程序狀態
> stop usercenter # 關閉 usercenter 程序
> start usercenter # 啟動 usercenter 程序
> restart usercenter # 重啟 usercenter 程序
> reread # 讀取有更新(增加)的配置文件,不會啟動新添加的程序
> update # 重啟配置文件修改過的程序

上面這些命令都有相應的輸出,除了進入 supervisorctl 的 shell 界面,也可以直接在 bash 終端運行:


代碼如下:
$ supervisorctl status
$ supervisorctl stop usercenter
$ supervisorctl start usercenter
$ supervisorctl restart usercenter
$ supervisorctl reread
$ supervisorctl update

控制守護進程

每次 修改主配置文件 或 增改子配置文件 都需要執行 supervisorctl update 使新配置生效:



代碼如下:sudo supervisorctl update
控制守護進程:


代碼如下:
# 控制所有進程
sudo supervisorctl start all
sudo supervisorctl stop all
sudo supervisorctl restart all
# 定向控制指定進程
sudo supervisorctl stop iot-kb
sudo supervisorctl start iot-kb
sudo supervisorctl restart iot-kb

關鍵字:Linux、進程管理、Supervisor、服務器
分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站