欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ubuntu环境使用supervisor部署Go应用

程序员文章站 2022-06-23 19:39:18
...

首先进行前期准备,安装supervisor

sudo apt-get install supervisor

安装后,通过Supervisor附送的贴心的小脚本生成默认的配置文件

sudo echo_supervisord_conf > /etc/supervisord.conf

然后打开配置文件确认下(/etc/supervisord/supervisord.conf),是否有以下配置,没有的话手动添加一下

[include]
files = /etc/supervisor/conf.d/*.conf

第二步开始进行Go项目的编译,-o 指定输出的可执行文件名,GOARCH根据系统是64位还是32位来设置,64位amd64,32位i386,系统环境通过 uname -a 命令可以查看

env GOOS=linux GOARCH=amd64 go build -o myexec main.go lib.go

修改下可执行文件权限

sudo chmod -R 777 myexec

第三步配置项目的supervisor配置文件

sudo vim /etc/supervisor/conf.d/myexec.conf
[program:myexec]
command=/data/golang/myexec
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/var/log/myexec.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/myexec_err.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB

几个配置说明:

program: 项目名称
command:表示运行的命令,填入完整的路径即可。
autostart:表示是否跟随supervisor一起启动。
autorestart:如果该程序挂了,是否重新启动。
stdout_logfile:终端标准输出重定向文件,日志文件最好自己先创建。
stderr_logfile:终端错误输出重定向文件,日志文件最好自己先创建。

创建好以后,我们开始启动

sudo service supervisor start //启动服务
sudo supervisorctl reload

提示:Restarted supervisord
然后我们再查看状态,输入命令,看到myexec运行中。

sudo supervisorctl status
myexec                              RUNNING    pid 6219, uptime 0:00:24

到此,go项目的部署就完成了。

supervisor常用命令:
supervisorctl start programxxx,启动某个进程
supervisorctl restart programxxx,重启某个进程
supervisorctl stop groupworker: ,重启所有属于名为groupworker这个分组的进程(start,restart同理)
supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl reload,载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
supervisorctl update,根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
supervisor启动和停止的日志文件存放在/var/log/supervisor/supervisord.log
注意:显式用stop停止掉的进程,用reload或者update都不会自动重启

我部署过程中遇到go服务启动不了,可以使用以下命令查看启动过程中的错误信息,myexec你指定的项目名称

sudo supervisorctl tail myexec stdout

 

参考:https://www.jianshu.com/p/13ab43e0895b