1. 背景#
本次部署包含要素:
- golang 可执行文件,叫 task_center
- beanstalkd
- supervisor
- centos服务器
目的:把golang程序部署到centos服务器,golang程序里面包含beanstalkd后台服务需要启动,用supervisor来控制golang程序和beanstalkd后台服务在开机时可以自动启动
2. 操作#
2.1 supervisor安装和配置#
安装supervisor
代码语言:javascript复制yum install -y supervisor
启动supervisor
代码语言:javascript复制systemctl start supervisord
查看supervisor服务状态
代码语言:javascript复制systemctl status supervisord
代码语言:javascript复制[root@server06 centos]# systemctl status supervisord
● supervisord.service - Process Monitoring and Control Daemon
Loaded: loaded (/usr/lib/systemd/system/supervisord.service; enabled; vendor preset: disabled)
Active: inactive (dead) since 二 2022-04-26 15:30:24 CST; 2 weeks 3 days ago
Main PID: 4643 (code=exited, status=0/SUCCESS)
查看配置文件最底层,新增自己的进程监听配置文件目录
代码语言:javascript复制vim /etc/supervisord.conf
进入supervisord.d文件,新建自己的配置
代码语言:javascript复制cd /etc/supervisord.d/
vim task_center.ini
代码语言:javascript复制#项目名
[program:task_center]
#脚本目录
directory=/home/centos/task_center
#脚本执行命令
command=/home/centos/task_center/task_center
#脚本运行的用户身份
user = root
#supervisor启动的时候是否随着同时启动,默认True
autostart=true
#当程序exit的时候,这个program不会自动重启,默认unexpected,设置子进程挂掉后自动重启的情况,
#有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,
#如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的时候
autorestart=true
#这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了。默认值为1
startsecs=1
#当进程启动失败后,最大尝试启动的次数,默认为3次
startretries=3
#这个是当我们向子进程发送stopsignal信号后,到系统返回信息给supervisord所等待的最大时间
#默认为10秒
stopwaitsecs=10
#把stderr重定向到stdout,默认 false
redirect_stderr = true
#日志输出
stdout_logfile=/home/centos/task_center/log/comm.logs
#stdout日志文件大小,默认 50MB
stdout_logfile_maxbytes = 50M
#stdout日志文件备份数
stdout_logfile_backups = 10
stderr_logfile=/home/centos/task_center/log/err.log
#stderr日志文件大小,默认 50MB
stderr_logfile_maxbytes = 50M
#stderr日志文件备份数
stderr_logfile_backups = 10
把golang执行文件 task_center 放在/home/centos/task_center
目录下
[centos@server06 task_center]$ pwd
/home/centos/task_center
[centos@server06 task_center]$ ll
总用量 18952
drwxrwxr-x 2 centos centos 4096 5月 12 17:54 conf
drwxrwxr-x 2 centos centos 4096 5月 12 22:28 log
-rwxrwxr-x 1 centos centos 19391610 5月 12 17:41 task_center
drwxrwxr-x 2 centos centos 4096 5月 12 17:31 temp
然后执行supervisorctl update
更新supervisor配置
supervisor常用命令:
代码语言:javascript复制#supervisord 安装完成后有两个可用的命令行 supervisord 和 supervisorctl,命令使用解释如下:
supervisord #初始启动 Supervisord,启动、管理配置中设置的进程。
#停止某一个进程(programxxx),programxxx 为 [program:beepkg] 里配置的值,这个示例就是 beepkg。
supervisorctl stop programxxx
supervisorctl start programxxx #启动某个进程
supervisorctl restart programxxx #重启某个进程
supervisorctl stop groupworker #重启所有属于名为 groupworker 这个分组的进程(start,restart 同理)
supervisorctl stop all #停止全部进程,注:start、restart、stop 都不会载入最新的配置文件。
supervisorctl reload #载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
supervisorctl update #根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
# 注意:显示用 stop 停止掉的进程,用 reload 或者 update 都不会自动重启。
2.2 beanstalkd安装和开启#
安装beanstalkd
代码语言:javascript复制yum -y install beanstalkd --enablerepo=epel
查看版本
代码语言:javascript复制beanstalkd -v
因为我的项目中要开启11300和11301端口,并且我打算让服务器启动后自动启动这个两个端口的服务,所以可以用supervisor来运行相关的指令来实现这个功能
同上面一样,在目录/etc/supervisord.d/
下新建一个文件
vim task_centor_port.ini
代码语言:javascript复制[program:task_center_port]
# 同时开启 11300 和 11301 端口服务
command=/bin/bash -c "beanstalkd -l 172.18.92.148 -p 11300 & beanstalkd -l 172.18.92.148 -p 11301 &"
directory=/home/centos/task_center
autostart=true
startsecs=5
startretries=3
autorestart=true
stopwaitsecs=10
user=root
redirect_stderr=true
stdout_logfile=/home/centos/task_center/log/comm_port.log
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=5
stderr_logfile=/home/centos/task_center/log/err_port.log
stderr_logfile_maxbytes=100MB
stderr_logfile_backups=5
然后执行supervisorctl update
更新supervisor配置
退出服务器后重新打开,用如下命令检查是否开启端口
代码语言:javascript复制ps -aux | grep beanstalkd
如下结果表示开启成功
代码语言:javascript复制连接主机...
连接主机成功
Last login: Fri May 13 18:35:43 2022 from 183.56.160.125
Welcome to Alibaba Cloud Elastic Compute Service !
[centos@server06 ~]$ ps -aux | grep beanstalkd
centos 12953 0.0 0.0 112720 988 pts/0 S 18:35 0:00 grep --color=auto beanstalkd
root 17135 0.0 0.0 8748 664 ? S 5月12 0:02 beanstalkd -l 172.18.92.148 -p 11300
root 17136 0.0 0.0 8748 660 ? S 5月12 0:02 beanstalkd -l 172.18.92.148 -p 11301
[centos@server06 ~]$