热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux配置Supervisor配置遇到的坑

Linux配置Supervisor配置遇到的坑,Go语言社区,Golang程序员人脉社


在linux中web 应用部署到线上后之后发现退出终端后网站就无法访问了

所以需要用Supervisor来守护进程,它可以保证应用一直处于运行状态,在遇到程序异常、报错等情况,导致 web 应用终止时,需要保证程序可以立刻重启,继续提供服务。

在安装配置Supervisor时遇到了挺多坑,我们先看一下安装流程


$ # 安装Supervisor
$ yum install python
-setuptools
$ easy_install supervisor
$ # 自定义配置Supervisor
$ mkdir
/etc/supervisor
$ echo_supervisord_conf
> /etc/supervisor/supervisord.conf

1,然后打开/etc/supervisor/supervisord.conf ,注意我这里打开的是/etc/supervisor/supervisord.conf而不是/etc/supervisord.conf,我上面自定义配置Supervisor两句命令其实就是在新建的supervisor文件夹下面复制的/etc/supervisord.conf文件,我这里在配置的时候由于看了别人的博客,linux命令不熟悉,所以之前没看懂自定义配置那两句命令的意思,所以索性按照这样做了,不过配置完成后个人感觉没必要自己新建一个文件夹然后复制一份配置,完全可以直接打开/etc/supervisord.conf进行配置就够了

2,打开配置文件后你会看到[include] files = supervisord.d/*.ini(后缀或者.conf) 意思就是关联对应的配置文件下面后缀为.ini的所有配置文件,如果你是直接编辑的/etc/supervisord.conf文件,那就找到/ect/supervisord.d文件在里面建一个后缀.ini的配置文件,然后进行配置,如果你也和我一样加了上面自定义配置那两句话,那就在对应的/etc/supervisor/文件下新建一个supervisord.d(这文件名是自定义的,只要与[include]节点后面的文件名匹配就好了)文件夹并在这个新建的文件夹下面新建配置就好了

3,在建好的文件夹下面新建好配置文件后配置如下代码


[program:项目名称]
command
=dotnet 项目名称.dll
directory
=/root/www/hacker/publish
autorestart
=true
stderr_logfile
=/var/log/日志.err.log
stdout_logfile
=/var/log/日志.out.log
environment
=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal
=INT
autorestart
=true
startsecs
=1

4,运行 


$ supervisord -c /etc/supervisor/supervisord.conf

5,查看supervisord是否运行,下面显示运行成功


ps aux | grep supervisord

6,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,如果设成0,表示不限制大小
logfile_backups
=10 ;日志文件保留备份数量默认10,设为0表示不备份
loglevel
=info ;日志级别,默认info,其它: debug,warn,trace
pidfile
=/tmp/supervisord.pid ;pid 文件
nodaemon
=false ;是否在前台启动,默认是false,即以 daemon 的方式启动
minfds
=1024 ;可以打开的文件描述符的最小值,默认 1024
minprocs
=200 ;可以打开的进程数的最小值,默认 200
[supervisorctl]
serverurl
=unix:///tmp/supervisor.sock ;通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致
;serverurl
=http://127.0.0.1:9001 ; 通过HTTP的方式连接supervisord
;
[program:xx]是被管理的进程配置参数,xx是进程的名称
[program:xx]
command
=/opt/apache-tomcat-8.0.35/bin/catalina.sh run ; 程序启动命令
autostart
=true ; 在supervisord启动的时候也自动启动
startsecs
=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart
=true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries
=3 ; 启动失败自动重试次数,默认是3
user=tomcat ; 用哪个用户启动进程,默认是root
priority
=999 ; 进程启动优先级,默认999,值小的优先启动
redirect_stderr
=true ; 把stderr重定向到stdout,默认false
stdout_logfile_maxbytes
=20MB ; stdout 日志文件大小,默认50MB
stdout_logfile_backups
= 20 ; stdout 日志文件备份数,默认是10
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile
=/opt/apache-tomcat-8.0.35/logs/catalina.out
stopasgroup
=false ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup
=false ;默认为false,向进程组发送kill信号,包括子进程
;包含其它配置文件
[include]
files
= relative/directory/*.ini ;可以指定一个或多个以.ini结束的配置文件

 7,supervisorctl 操作

supervisorctl 是 supervisord 的命令行客户端工具,使用的配置和 supervisord 一样,这里就不再说了。下面,主要介绍 supervisorctl 操作的常用命令:

输入命令 supervisorctl 进入 supervisorctl 的 shell 交互界面,就可以在下面输入命令了。:


  • help # 查看帮助

  • status # 查看程序状态

  • stop program_name # 关闭 指定的程序

  • start program_name # 启动 指定的程序

  • restart program_name # 重启 指定的程序

  • tail -f program_name # 查看 该程序的日志

  • update # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)

也可以直接通过 shell 命令操作:


  • supervisorctl status

  • supervisorctl update

8,遇到问题

问题一:unix:///var/run/supervisor/supervisor.sock no such file

解决方案


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

问题二:Unlinking stale socket /var/run/supervisor/supervisor.sock

解决方案


unlink /var/run/supervisor/supervisor.sock

问题三:Error: Another program is already listening on a port that one of our HTTP servers is configured to use.  Shut this program down first before starting supervisord.


ps aux | grep supervisord
kill - 9 进程ID

如果还有其他问题可以到你配置的日志目录下面去查看日志


转载于:https://www.cnblogs.com/ruanraun/p/supervisor.html



推荐阅读
  • Linux是一套免费使用和***传播的类UNIX操作系统,主要用于基于Intel x86系列CPU的计算机上。Linux系统是由全世界各地的成千上万的程序员合适的方式定制自己的Li ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 这篇文章将为大家详细讲解有关C#开发技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C#开发技 ... [详细]
  • Linux提权之suid篇
    Linux提权之suid篇不知攻,焉知防一个在安服路上摸索的大三生,记录平时学习笔记suid前言:1.只有可以执行的二进制程序文件才 ... [详细]
  • 是不是zlib是这些库的压缩算法的实现库,而这么多库它们只是在打包的时候使用了zlib进行压缩而已.而具体的打包格式就有ZIP,BZIP2,GZ之分?但是在我们在用gz压缩时候通常之前 ... [详细]
  • 互联网世界 9 种基本的商业模式
    互联网世界9种基本的商业模式一个商业模式是运行一个公司的方法;通过该模式的运作,一个公司能维持自己的生存,就是说,能有收益。商业模式意味着一个公司是如何通过在价值链中定位自己,从而获 ... [详细]
  • 一、域名解析记录说明记录类型A:用来指定域名的IPv4地址(如:8.8.8.8),如果需要将域名指向一个IP ... [详细]
  • 本人先前是linux的支持都,使用过后就成为了其的鄙视者,观点如下:linux想跟windows比,tmd先搞好软件安装的问题。在linux在动不动就要命令行,有多少人会这恶心的命令行。会命令 ... [详细]
  • 方舟等级生成工具_关于方舟编译器的几个小疑问
    之前了解了一下方舟编译器,但是很粗,今天在知乎上看了各种大神关于方舟编译器的说法,其实一直以来就有几个问题,我看了知乎上的说 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • WebBrowser控件(1)
    WindowsPhone7内置了一个强大的网络浏览器,该浏览器的内核是基于桌面版的InternetExplorer7(Mango版基于InternetE ... [详细]
  • 导读:今天编程笔记来给各位分享关于php动态扩展怎么加载的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: ... [详细]
  • [网页设计]新手做 网站 必备 软件。及 下载 地址~~~~(06年10月10日修订)
      1、做网站先要从策划开始msvcp71dll下载。  MicrosoftOffice2007Beta2简体中文版  M ... [详细]
  • Linux磁盘的分区、格式化的观察和操作步骤
    本文介绍了如何观察Linux磁盘的分区状态,使用lsblk命令列出系统上的所有磁盘列表,并解释了列表中各个字段的含义。同时,还介绍了使用parted命令列出磁盘的分区表类型和分区信息的方法。在进行磁盘分区操作时,根据分区表类型选择使用fdisk或gdisk命令,并提供了具体的分区步骤。通过本文,读者可以了解到Linux磁盘分区和格式化的基本知识和操作步骤。 ... [详细]
author-avatar
滞留童年车
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有