置頂:
推薦使用pip install supervisor安裝最新版supervisor,yum install supervisor最高版本3.1.4,有不少bugjava
supervisor:要安裝的軟件的名稱。
supervisord:裝好supervisor軟件後,supervisord用於啓動supervisor服務。
supervisorctl:用於管理supervisor配置文件中program。python
yum install epel-release yum install supervisor systemctl enable supervisord.service # 開機自啓動 systemctl start supervisord.service # 啓動supervisord服務 systemctl status supervisord.service # 查看supervisord服務狀態 # 開啓web服務:修改supervisord.conf ,inet_http_server節點取消註釋。 vim /etc/supervisord.conf supervisorctl reload [inet_http_server] ; inet (TCP) server disabled by default port=*:9001 ; (ip_address:port specifier, *:port for all iface) username=clark ; (default is no username (open server)) password=123456 ; (default is no password (open server)) ps -ef|grep supervisord # 查看是否存在supervisord進程
Supervisor 管理應用的進程,須要對每一個應用進行配置。在 /etc/supervisord.d
中建立 helloworld.ini
,每一個應用對應一個配置文件便可。
下面是配置文件的示例:web
[program:helloworld] ;程序的名稱 command = dotnet HelloWorld.dll ;執行的命令 directory = /root/www/ ;命令執行的目錄 environment = ASPNETCORE__ENVIRONMENT=Production ;環境變量 user = root ;執行進程的用戶 stopsignal = INT autostart = true ;是否自動啓動 autorestart = true ;是否自動重啓 startsecs = 1 ;自動重啓間隔 stderr_logfile = /var/log/helloworld.err.log ;標準錯誤日誌 stdout_logfile = /var/log/helloworld.out.log ;標準輸出日誌
實際項目:spring
supervisor部署: cd /etc/supervisord.d/ vim product_new_merchant.ini [program:product_new_merchant] user = root directory = /root/data_hub/all_script command = /root/.virtualenvs/ProductNewMerchant/bin/python3.7 product_new_merchant.py autostart = true autorestart = true startsecs = 1 environment = MYSQL_HOST="192.168.6.160",MYSQL_DATABASE="xxxxx",MYSQL_USER_NAME="xxxxxx",MYSQL_PASSWORD="xxxxx",MYSQL_PORT=3306,REDIS_HOST="192.168.95.55",LANG="en_US.utf8",LC_ALL="en_US.UTF-8",LC_LANG="en_US.UTF-8" stdout_logfile = /var/log/product_new_merchant.log redirect_stderr=true stopsignal = INT
建立好配置文件後,重啓 Supervisorshell
supervisorctl reload
或熱重啓,不會重啓其餘子進程vim
supervisorctl reread supervisorctl update
爲確保沒有錯誤,能夠正常啓動,使用前文提到的查看Supervisor狀態的命令查看。或者查看要管理的進程是否啓動,本例中可使用下面的命令:centos
ps -ef | grep HelloWorld.dll 或 ps -ef | grep dotnet
一、我在網頁上tail的時候,要不就是一直不返回,要不就是Error response
Error code 410.
Message: Gone.
二、stderr_logfile和stdout_logfile 顛倒
三、web界面中文亂碼
參考:https://www.crifan.com/upgrad...安全
3.1.4老版本,升級最新版 [root@web-95-55 admin]# supervisord --version 3.1.4 備份yum版本supervisor配置文件,供參考: yum remove supervisor yum remove python-meld3 pip install supervisor mkdir /etc/supervisor echo_supervisord_conf > /etc/supervisor/supervisord.conf vim /etc/supervisor/supervisord.conf 修改應用配置文件路徑: ;[include] files = /etc/supervisor/config.d/*.ini mkdir /etc/supervisor/config.d cd /etc/supervisor/config.d 啓動supervisor: supervisord -c /etc/supervisor/supervisord.conf
yum install supervisor -y supervisor 配置說明 經過這種形式安裝的supervisor,其配置文件的目錄位於: /etc/supervisord.conf (主配置文件,下面會詳細介紹) /etc/supervisor.d/ (默認子進程配置文件,也就是須要咱們根據程序配置的地方) [unix_http_server] file=/home/supervisor/supervisor.sock ; supervisorctl使用的 socket文件的路徑 ;chmod=0700 ; 默認的socket文件權限0700 ;chown=nobody:nogroup ; socket文件的擁有者 [inet_http_server] ; 提供web管理後臺管理相關配置 port=0.0.0.0:9001 ; web管理後臺運行的ip地址及端口,綁定外網需考慮安全性 ;username=root ; web管理後臺登陸用戶名密碼 ;password=root [supervisord] logfile=/var/log/supervisord.log ; 日誌文件,默認在$CWD/supervisord.log logfile_maxbytes=50MB ; 日誌限制大小,超過會生成新文件,0表示不限制 logfile_backups=10 ; 日誌備份數量默認10,0表示不備份 loglevel=info ; 日誌級別 pidfile=/home/supervisor/supervisord.pid ; supervisord pidfile; default supervisord.pid ; pid文件 nodaemon=false ; 是否在前臺啓動,默認後臺啓動false minfds=1024 ; 能夠打開文件描述符最小值 minprocs=200 ; 能夠打開的進程最小值 [supervisorctl] serverurl=unix:///home/supervisor/supervisor.sock ; 經過socket鏈接supervisord,路徑與unix_http_server->file配置的一致 [include] files = supervisor.d/*.conf ;指定了在當前目錄supervisor.d文件夾下配置多個配置文件 定義supervisor管理進程配置文件 [program:sboot] ;[program:xxx] 這裏的xxx是指的項目名字 directory = /opt/project ;程序所在目錄 command = java -jar springboot-hello-sample.jar ;程序啓動命令 autostart=true ;是否跟隨supervisord的啓動而啓動 autorestart=true; 程序退出後自動重啓,可選值:[unexpected,true,false],默認爲unexpected,表示進程意外殺死後才重啓 stopasgroup=true;進程被殺死時,是否向這個進程組發送stop信號,包括子進程 killasgroup=true;向進程組發送kill信號,包括子進程 stdout_logfile=/var/log/sboot/supervisor.log;該程序日誌輸出文件,目錄須要手動建立 stdout_logfile_maxbytes = 50MB;日誌大小 stdout_logfile_backups = 100;備份數 service supervisord restart 直接在命令行輸入supervisorctl會展現當前已配置好的項目信息。 [root@wangzh supervisor.d]# supervisorctl sboot RUNNING pid 27517, uptime 0:18:04 supervisor> 而後能夠執行 start/stop/restart sboot 來簡單控制項目的啓停等 supervisorctl update #更新配置文件 supervisorctl reload #從新啓動配置的程序 supervisorctl stop all #中止所有管理進程
一、https://www.chengxulvtu.com/s...springboot