首先进行前期准备,安装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
centos7 安装 supervisor
$ sudo su - #切换为root用户
# yum install epel-release
# yum install -y supervisor
# systemctl enable supervisord # 开机自启动
# systemctl start supervisord # 启动supervisord服务
# systemctl status supervisord # 查看supervisord服务状态