Supervisord部署Go应用

Supervisord

Supervisord 是用 Python 实现的一款非常实用的进程管理工具,supervisord 还要求管理的程序是非 daemon 程序,supervisord 会帮你把它转成 daemon 程序,因此如果用 supervisord 来管理 nginx 的话,必须在 nginx 的配置文件里添加一行设置 daemon off 让 nginx 以非 daemon 方式启动

  1. 安装

    yum install python-setuptools
    easy_install supervisor
    echo_supervisord_conf > /etc/supervisord.conf
    mkdir /etc/supervisord.conf.d
    
  2. 修改配置 /etc/supervisord.conf

    [include]
    files = /etc/supervisord.conf.d/*.conf
    
  3. 新建管理的应用

    cd /etc/supervisord.conf.d
    vim golang-server.conf
    

    配置文件:

    [program:golang-server]
    directory = /data/go/golang-server
    command = /data/go/golang-servser/golang-server
    autostart = true
    startsecs = 5
    user = root
    redirect_stderr = true
    stdout_logfile=/var/log/golang-server.log
    stderr_logfile=/var/log/golang-server.log
    

    配置说明:

    command:表示运行的命令,填入完整的路径即可。(编译后的执行文件路径)
    autostart:表示是否跟随supervisor一起启动。
    autorestart:如果该程序挂了,是否重新启动。
    redirect_stderr :重定向输出的日志
    stdout_logfile:终端标准输出重定向文件。
    stderr_logfile:终端错误输出重定向文件。
    directory:文件路径,不过貌似这个不写也没有关系,看到好多的博客里都没有写

  4. 启动supervisor

    supervisord -c /etc/supervisord.conf
    
  5. 查看进程状态

    supervisorctl
    

    在这里插入图片描述

    每列分别代表:programe名称、进程名称,进程状态、进程id,运行时间

    如果没有输出进程状态,在当前状态下输入status试试

  6. 开机自启 Supervisord

    vim 打开 /etc/rc.local 添加下面命令

    /usr/local/bin/supervisord -c /etc/supervisord.conf
    

    在添加前,先在终端测试一下命令是否能正常执行
    如果不知道supervisord路径可以用 find / -name supervisord 或者 whereis supervisord 查看

Supervisord 管理

Supervisord 安装完成后有两个可用的命令行 supervisord 和 supervisorctl,命令使用解释如下:

  • supervisorctl status
  • supervisord,初始启动 Supervisord,启动、管理配置中设置的进程。
  • supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx 为 [program:golang-server] 里配置的值,这个示例就是 olang-server。
  • supervisorctl start programxxx,启动某个进程
  • supervisorctl restart programxxx,重启某个进程
  • supervisorctl stop groupworker: ,重启所有属于名为 groupworker 这个分组的进程(start,restart 同理)
  • supervisorctl stop all,停止全部进程,注:start、restart、stop 都不会载入最新的配置文件。
  • supervisorctl reload,载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
  • supervisorctl update,根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。

说明 : 可以直接在系统shell中执行,也可以先执行supervisorctl,进入supervisorctl_shell中执行相应的命令。

遇到的问题
  1. ERROR (no such process)

    执行启动命令,reload命令都是正常的,没有报错,查看进程状态的时候什么都没有显示,说明进程没有开启, 遂执行supervisorctl start golang-server命令,报错golang-server: ERROR (no such process)
    解决问题 : 配置文件supervisor.conf中 ;[include]冒号去掉









参考

https://beego.me/docs/deploy/supervisor.md 配置文件
http://www.01happy.com/supervisor-golang-daemon/ 安装
https://thief.one/2018/06/01/1/ 启动&查看状态
https://blog.csdn.net/wangjianwanxiao/article/details/51007354 include问题
https://www.restran.net/2015/10/04/supervisord-tutorial/ 自启

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值