beego项目部署与热更新

1.开发自己的第一个项目

这里我引用的是在线聊天室,参考源码是https://github.com/beego/samples/tree/master/WebIM

在源码的基础上重新开发,整理项目发布到了liu289747235/WebIM

推荐下载源码:https://gitee.com/myselfyou/web-im

在线聊天室应用:

  • 使用长轮询模式。
  • 使用 WebSocket 模式。

以上两种模式均默认将数据存储在内存中,因此每次启动都会被重置。但您也可以通过修改 conf/app.conf 中的设置来启用数据库。

以下为项目组织大纲:

WebIM/WebIM.go            # main 包的文件confapp.conf        # 配置文件controllersapp.go            # 供用户选择技术和用户名的欢迎页面chatroom.go        # 数据管理相关的函数longpolling.go    # 长轮询模式的控制器和方法websocket.go    # WebSocket 模式的控制器和方法modelsarchive.go        # 操作数据相关的函数views...                # 模板文件static...                # JavaScript 和 CSS 文件

2.beego项目部署

一般服务器都是linux,这里主要介绍linux系统的项目部署。

2.1.项目打包

之前介绍过beego的安装及bee工具的使用-CSDN博客, 在项目根目录执行下面命令完成项目打包。

C:\Users\leell\go\src\WebIM>set GOOS=linuxC:\Users\leell\go\src\WebIM>bee pack
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v2.1.0
2024/01/20 15:25:07 INFO     ▶ 0001 Packaging application on 'C:\Users\leell\go\src\WebIM'...
2024/01/20 15:25:07 INFO     ▶ 0002 Building application (WebIM)...
2024/01/20 15:25:07 INFO     ▶ 0003 Using: GOOS=linux GOARCH=amd64
2024/01/20 15:25:12 SUCCESS  ▶ 0004 Build Successful!
2024/01/20 15:25:12 INFO     ▶ 0005 Writing to output: C:\Users\leell\go\src\WebIM\WebIM.tar.gz
2024/01/20 15:25:12 INFO     ▶ 0006 Excluding relpath prefix: .
2024/01/20 15:25:12 INFO     ▶ 0007 Excluding relpath suffix: .go:.DS_Store:.tmp:go.mod:go.sum
2024/01/20 15:25:13 SUCCESS  ▶ 0008 Application packed!

打包完成后当前目录得到一个tar.gz后缀的压缩包。

2.2.独立部署

独立部署就是直接将上面得到的压缩包,上传到服务器,解压缩后直接运行go程序。


[root@k8s-master01 ~]# tar -zxf WebIM.tar.gz -C WebIM
# 先进入项目目录
[root@k8s-master01 ~]# cd WebIM
# 添加执行权限
[root@k8s-master01 WebIM]# chmod +x WebIM 
# 在后台执行beego程序
[root@k8s-master01 WebIM]# nohup ./WebIM &
[1] 32604

2.3 查看服务部署情况

我的服务器是本地192.168.10.10 centos7

root用户登录聊天室:

leellun用户登录聊天室:

3.beego热更新

热更新指的是在不中断服务的情况下,完成程序升级。beego项目默认已经实现了热更新。

下面介绍beego如何实现热更新。

首先在app.conf配置文件中打开热更新配置。

graceful = true

假设目前老版本的程序正在运行,进程ID是32604。

现在将新版本的beego程序压缩包上传到服务器,解压缩,直接覆盖老的文件。

下面是触发beego程序热更新的命令:

[root@k8s-master01 WebIM]# ps -ef|grep WebIM
root      3733 22656  0 15:32 pts/0    00:00:00 grep --color=auto WebIM
root     32604 22656  0 15:30 pts/0    00:00:00 ./WebIM
[root@k8s-master01 WebIM]# kill -HUP 32604
[root@k8s-master01 WebIM]# ps -ef|grep WebIM
root      4124 32604  0 15:33 pts/0    00:00:00 [WebIM] <defunct>
root      4206 22656  0 15:33 pts/0    00:00:00 grep --color=auto WebIM
root     32604 22656  0 15:30 pts/0    00:00:00 ./WebIM

上面这个命令的意思就是给指定进程发送一个HUB信号,beego程序接收到这个信号后就开始处理热更新操作。defunct表示失灵的服务

因为我们老版本的进程ID是32604, 因此命令是:

kill -HUP 32604

执行命令就可以完成热更新操作。

参考文章:beego项目部署与热更新 - 范斯猫

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/635894.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年12月青少年软件编程Python等级考试(六级)真题试卷

2023年12月青少年软件编程Python等级考试&#xff08;六级&#xff09;真题试卷 单选题 第 1 题 单选题 运行以下程序&#xff0c;输出的结果是&#xff1f;&#xff08; &#xff09; class A(): def __init__(self,x): self.xx1 def b(self): re…

游戏开发中的噪声算法

一、噪声 噪声是游戏编程的常见技术&#xff0c;广泛应用于地形生成&#xff0c;图形学等多方面。 那么为什么要引入噪声这个概念呢&#xff1f;在程序中&#xff0c;我们经常使用直接使用最简单的rand()生成随机值&#xff0c;但它的问题在于生成的随机值太“随机”了&#xf…

爬虫之牛刀小试(八):爬取微博评论

今天爬取的是微博评论。 可以发现其特点是下一页评论的max_id在上一页中。 于是代码如下&#xff1a; import requests import json import re import time headers {User-Agent: ,"Cookie": "","Referer": "https://m.weibo.cn/detail/4…

【想要安利给所有人的开发工具】最强工具ChatGPT——分享一些使用经验

目录 &#x1f525;个人使用ChatGPT的经验 &#x1f525;如何使用ChatGPT 方法一 方法二 &#x1f525;&#x1f525;提问技巧分享 1、英语翻译员 2、面试官 3、javascript 控制台 4、Excel表格 5、作曲家 6、辩手 7、小说家 8、诗人 9、数学老师 10、网络安全…

2023江苏职教高考计算机技能考试--填空题解析

/*--------------- 【程序填空】 ----------------- 题目&#xff1a;验证任意一个大于1的正整数都可以找到 一串连续奇数&#xff0c;它们的和等于该整数的立方。 例如&#xff1a;4的立方等于64&#xff0c;6413579111315程序运行结果如下&#xff1a;3的立方等于27&#xff…

linux磁盘,分区,挂载等等

1. 修改磁盘分区的标签 例如&#xff1a;733be18b-7baf-d84c-879d-ca3db465f179太长了&#xff0c;修改一下。 linuxchenxiao:/media/linux/733be18b-7baf-d84c-879d-ca3db465f179$ 先 sudo blkid sudo blkid 找到你想修改的UUID(唯一标识符) /dev/sda1: UUID"733be…

Pytorch从零开始实战17

Pytorch从零开始实战——生成对抗网络入门 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——生成对抗网络入门环境准备模型定义开始训练总结 环境准备 本文基于Jupyter notebook&#xff0c;使用Python3.8&#xff0c;Pytorch1.8cpu&#xf…

【Linux】更新python版本并设置默认版本

文章目录 1.查看目前python的版本2.添加软件源并更新3.选择你想要下载的版本4.设置默认版本 网上有很多教程都是教导小白去官方下载之后编译安装。但是&#xff0c;小白连cmake是什么都不知道&#xff0c;这种教导方式实在是误人子弟。这里作者介绍了一种十分简洁的更新方法。 …

YOLOv8改进:RepBiPAN结构 + DETRHead检测头,为YOLOv8目标检测使用不一样的检测头,用于提升检测精度

💡本篇内容:YOLOv8全新Neck改进:RepBiPAN 结构升级版,为目标检测打造全新融合网络,增强定位信号,对于小目标检测的定位具有重要意义 💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 💡本文改进 Neck部分和DETRHead系列检测头…

8.2摆动序列(LC376-M)

算法&#xff1a; 其实动态规划和贪心算法都能做 但是动态规划的时间复杂度是O(n^2) 贪心算法的时间复杂度是O(n) 所以学习贪心算法 到底为什么用贪心&#xff1f;&#xff08;分析局部最优和全局最优&#xff09; 局部最优&#xff1a;删除单调坡度上的节点&#xff08;不…

第一篇【传奇开心果系列】beeware开发移动应用:轮盘抽奖移动应用

系列博文目录 beeware开发移动应用示例系列博文目录一、项目目标二、开发传奇开心果轮盘抽奖安卓应用编程思路三、传奇开心果轮盘抽奖安卓应用示例代码四、补充抽奖逻辑实现五、开发传奇开心果轮盘抽奖苹果手机应用编程思路六、开发传奇开心果轮盘抽奖苹果手机应用示例代码七、…

如何配置Pycharm服务器并结合内网穿透工具实现远程开发

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;…

NLP深入学习(五):HMM 详解及字母识别/天气预测用法

文章目录 0. 引言1. 什么是 HMM2. HMM 的例子2.1 字母序列识别2.2 天气预测 3. 参考 0. 引言 前情提要&#xff1a; 《NLP深入学习&#xff08;一&#xff09;&#xff1a;jieba 工具包介绍》 《NLP深入学习&#xff08;二&#xff09;&#xff1a;nltk 工具包介绍》 《NLP深入…

JS的数据类型和运算符

typeof()方法&#xff1a;检测数据类型 JS中的基本数据类型 基本数据类型 1.number 数字 2.string 字符串 3.boolean 布尔 4.null 代表空值&#xff08;typeof方法检测出来的数据类型是object类型&#xff09; 5.underfined 未定义&#xff1b;变量已声明但是未赋值 6.…

QT Model/View 设计模式中 selection 模型

1. QT 的 selection 模型是用来做什么的&#xff1f; Qt的selection模型用于管理TableView中的选择操作。它允许用户选择和操作特定的数据。 2. Selection 模型用途的例子&#xff1f; 当使用Qt的TableView时&#xff0c;可以使用selection模型来实现以下用途&#xff1a; …

vue路由-全局前置守卫

1. 介绍 详见&#xff1a;全局前置守卫网址 使用场景&#xff1a; 对于支付页&#xff0c;订单页等&#xff0c;必须是登录的用户才能访问的&#xff0c;游客不能进入该页面&#xff0c;需要做拦截处理&#xff0c;跳转到登录页面 全局前置守卫的原理&#xff1a; 全局前置…

KubeSphere 核心实战之二【在kubesphere平台上部署redis】(实操篇 2/4)

文章目录 1、登录kubesphere平台2、redis部署分析3、redis容器启动代码4、kubesphere平台部署redis4.1、创建redis配置集4.2、创建redis工作负载4.3、创建redis服务 5、测试连接redis 在kubesphere平台上部署redis应用都是基于redis镜像进行部署的&#xff0c;所以所有的部署操…

2022-ECCV-Adaptive Face Forgery Detection in Cross Domain

一、研究背景 1.伪造视频是逐帧生成的&#xff0c;因此会造成时间维度上的伪影。而鲁棒的检测模型需要对同一身份的不同帧有一致的检测结果。 1.利用频率线索进行deepfake检测效果良好&#xff0c;但也会导致帧间不一致问题&#xff0c;即不同帧检测结果不同。 2.以往方法中固定…

【JavaScript】面向后端快速学习 笔记

文章目录 JS是什么&#xff1f;一、JS导入二、数据类型 变量 运算符三、流程控制四、函数五、对象 与 JSON5.1 对象5.2 JSON5.3 常见对象1. 数组2. Boolean对象3. Date对象4. Math5. Number6. String 六、事件6.1 常用方法1. 鼠标事件2. 键盘事件3. 表单事件 6.2 事件的绑定**1…

【咕咕送书 | 第八期】羡慕同学进了大厂核心部门,看懂这本书你也能行!

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 写在前面参与规则 ✅参与方式&#xff1a;关注博主、点赞、收藏、评论&#xff0c;任意评论&#xff08;每人最多评论…