今天想把自己写的golang项目布置到线上试试,同时想用个插件帮忙管理,实现服务死了自动重启,和日志输出,这里的话由于以前用过hyperf,文档中有说supervisor的使用,所以这里就一起使用了。
首先把你的go项目传到线上,然后安装部署golang的各种配置,最后在目录下运行
go build -o test
然后yum 安装supervisor
yum install supervisor
安装好之后
cp /etc/supervisord.conf /etc/supervisord.d/supervisord.conf
接着
cd /etc/supervisord.d
vim supervisord.conf
把下面的内容复制到conf文件最下面
[program:test]
# 设置命令在指定的目录内执行
directory=/www/go/src/gin-api
# 这里为您要管理的项目的启动命令
command=/www/go/src/gin-api/test
# 以哪个用户来运行该进程
user=root
# supervisor 启动时自动该应用
autostart=true
# 进程退出后自动重启进程
autorestart=true
# 进程持续运行多久才认为是启动成功
startsecs=1
# 重试次数
startretries=3
# stderr 日志输出位置
stderr_logfile=/www/go/src/gin-api/runtime/stderr.log
# stdout 日志输出位置
stdout_logfile=/www/go/src/gin-api/runtime/stdout.log
这里注意要先自己去创建日志文件
然后如果你的是hyperf文件,就在下面加上
[program:hyperf]
# 设置命令在指定的目录内执行
directory=/var/www/hyperf/
# 这里为您要管理的项目的启动命令
command=php ./bin/hyperf.php start
# 以哪个用户来运行该进程
user=root
# supervisor 启动时自动该应用
autostart=true
# 进程退出后自动重启进程
autorestart=true
# 进程持续运行多久才认为是启动成功
startsecs=1
# 重试次数
startretries=3
# stderr 日志输出位置
stderr_logfile=/var/www/hyperf/runtime/stderr.log
# stdout 日志输出位置
stdout_logfile=/var/www/hyperf/runtime/stdout.log
配置好之后启动supervisor
supervisord -c /etc/supervisord.d/supervisord.conf
就行了。supervisord的命令有
supervisorctl status //查看所有进程的状态
supervisorctl stop es //停止es
supervisorctl start es //启动es
supervisorctl restart //重启es
supervisorctl update //配置文件修改后使用该命令加载新的配置
supervisorctl reload //重新启动配置中的所有程序