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,一经查实,立即删除!

相关文章

游戏开发中的噪声算法

一、噪声 噪声是游戏编程的常见技术&#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…

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;…

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;每人最多评论…

VMware虚拟机设置NAT网络模式

查看本地服务器网卡ip10.9.158.77 设置vmNet8虚拟网卡ip10.9.58.177&#xff0c;不需要在同一网段 3.点击VMware设置“虚拟网络编辑器”&#xff0c;点击“NAT设置”所有设置的ip网段需要与第二步的VMNet8网卡的网一致

算法 动态分析 及Java例题讲解

动态规划 动态规划&#xff08;英语&#xff1a;Dynamic programming&#xff0c;简称 DP&#xff09;&#xff0c;是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的&#xff0c;通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适…

day-15 按分隔符拆分字符串

思路 依次对words的每个字符进行split(),然后将非空的加入List 解题方法 String arr[]s.split(ss);利用split()方法将words的每个字符串划分为String数组 if(arr[i]!“”) //将非空的加入 list.add(arr[i]); String ss“”separator; //使用转义字符 时间复杂度&#xff1a;…

HCIA——18实验:NAT

学习目标&#xff1a; NAT 学习内容&#xff1a; NAT 1.要求——基本的 2.模型 3.IP分配、规划、优化 1&#xff09;思路 R2为ISP路由器&#xff0c;其上只能配置ip地址&#xff0c;不得冉进行其他的任何配置—ospf配置 认证 、汇总、沉默接口、加快收敛、缺省路由 PC1-PC2…

制动盘市场分析:预计2029年将达到123亿美元

制动系统是高速列车动车组九大关键技术之一&#xff0c;制动性能的好坏将直接影响列车的行车安全及运行品质。制动系统按照操纵控制方式&#xff0c;主要分为电制动和空气制动。通常情况下&#xff0c;电制动和空气制动联合作用&#xff0c;但是在紧急制动情况下&#xff0c;只…

蓝桥杯备战 每日一题 (2)

今天的题目是回忆迷宫 这个题目我们来熟悉一下 弗洛伊德算法 的代码模板 弗洛伊德算法用来处理最短路径问题 弗洛伊德算法&#xff08;Floyd’s algorithm&#xff09;用于解决图中所有节点对之间的最短路径问题。算法的基本思路是通过逐步迭代更新节点对之间的最短路径长度&a…