Go-web应用部署的方式——(2)nohup、supervisor后台运行
摘要:本系列文章记录了几种Go-web应用的部署方式,记录并解释所有相关的命令。
1. nohup
nohup 用于在系统后台不挂断地运行命令,不挂断指的是退出执行命令的终端也不会影响程序的运行。
主流的 Linux 发行版中都会默认安装 nohup 命令。
sudo nohup ./bin/myapp conf/config.yaml > nohup_myapp.log 2>&1 &
其中:
./bluebell conf/config.yaml
是我们应用程序的启动命令nohup ... &
表示在后台不挂断的执行上述应用程序的启动命令> nohup_bluebell.log
表示将命令的标准输出重定向到 nohup_bluebell.log 文件2>&1
表示将标准错误输出也重定向到标准输出中,结合上一条就是把执行命令的输出都定向到 nohup_bluebell.log 文件
上面的命令执行后会返回pid
[1] 6338
同时我们也可以通过下面的命令查看后台运行的进程
ps -ef | grep myapp
root 6338 4048 0 08:43 pts/0 00:00:00 ./bin/myqpp conf/config.yaml root 6376 4048 0 08:43 pts/0 00:00:00 grep --color=auto myapp
然后通过 kill -9 pid 结束进程
2. Supervisor
首先安装
sudo yum install epel-release sudo yum install supervisor
在 /etc/supervisord.conf 中找到配置文件,include一个存放应用配置文件的目录,这里 Supervisor 所管理的应用的配置文件放在 /etc/supervisord.d/
目录中
[include] files = /etc/supervisord.d/*.conf
在/etc/supervisord.d
目录下创建一个名为 myapp.conf 的配置文件,具体内容如下:
[program:myapp] ;程序名称 user=root ;执行程序的用户 command=/.../myapp/bin/myapp /.../myapp/conf/config.yaml ;执行的命令 directory=/.../myapp/ ;命令执行的目录 stopsignal=TERM ;重启时发送的信号 autostart=true autorestart=true ;是否自动重启 stdout_logfile=/var/log/myapp-stdout.log ;标准输出日志位置 stderr_logfile=/var/log/myapp-stderr.log ;标准错误日志位置
启动服务:
sudo supervisord -c /etc/supervisord.conf
查看服务运行状态:
sudo supervisorctl status myapp
>>> myapp RUNNING pid 10918, uptime 0:05:46
Supervisor 常用相关命令
supervisorctl status # 查看所有任务状态
supervisorctl shutdown # 关闭所有任务
supervisorctl start 程序名 # 启动任务
supervisorctl stop 程序名 # 关闭任务
supervisorctl reload # 重启supervisor
supervisorctl update # 更新配置文件并重启相关的程序
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通