beego项目部署与热更新

news2024/10/7 14:30:44

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 包的文件
    conf
        app.conf        # 配置文件
    controllers
        app.go            # 供用户选择技术和用户名的欢迎页面
        chatroom.go        # 数据管理相关的函数
        longpolling.go    # 长轮询模式的控制器和方法
        websocket.go    # WebSocket 模式的控制器和方法
    models
        archive.go        # 操作数据相关的函数
    views
        ...                # 模板文件
    static
        ...                # JavaScript 和 CSS 文件

2.beego项目部署

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

2.1.项目打包

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

C:\Users\leell\go\src\WebIM>set GOOS=linux

C:\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.coloradmin.cn/o/1400101.html

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

相关文章

如何卸载旧版docker

环境&#xff1a; Docker1.13 centos7.6 问题描述&#xff1a; 如何卸载旧版docker 解决方案&#xff1a; 1.停止Docker服务。使用以下命令停止Docker服务&#xff1a; sudo service docker stop2.卸载Docker软件包。根据您的Linux发行版&#xff0c;使用适当的包管理器来…

ClickHouse/Doris vs Elasticsearch谁更胜一筹?

前言 我之前在ClickHouse vs Doris 读写性能比较 一文中&#xff0c;初步做了一下ClickHouse和Doris的读写性能比较&#xff0c;但由于数据样本比较小&#xff0c;且未发挥出所有硬件资源的性能&#xff0c;因此进行了第二轮压测。 本轮压测与上一轮的区别在于: 新加入了Ela…

用Python实现Excel中的Vlookup功能

目录 一、引言 二、准备工作 三、实现Vlookup功能 1、导入pandas库 2、准备数据 3、实现Vlookup功能 4、处理结果 5、保存结果 四、完整代码示例 五、注意事项 六、总结 一、引言 在Excel中&#xff0c;Vlookup是一个非常实用的函数&#xff0c;它可以帮助我们在表…

有什么提高编程能力的书籍推荐吗?

数据密集型应用系统设计 原文完整版PDF&#xff1a;https://pan.quark.cn/s/d5a34151fee9 这本书的作者是少有的从工业界干到学术界的牛人&#xff0c;知识面广得惊人&#xff0c;也善于举一反三&#xff0c;知识之间互相关联&#xff0c;比如有个地方把读路径比作programming …

Docker进阶篇-安装MySQL主从复制

一、MySQL主服务器 1、新建主服务器容器实例3307 docker run -p 3307:3306 \--name mysql-master \--privilegedtrue \-v /mydata/mysql-master/log:/var/log/mysql \-v /mydata/mysql-master/data:/var/lib/mysql \-v /mydata/mysql-master/conf:/etc/mysql \-e MYSQL_ROOT_…

ctfshow-反序列化(web271-web276)

目录 web271 web272-273 web274 web275 web276 为什么不用分析具体为什么能成功 ,后面会有几个专题 会对php框架进行更深入的了解 这里面会专门的研究 为什么能够实现RCE 前面作为初步的熟悉 首先知道一下他的框架 知道框架的风格 知道啥版本可以用什么来打 首先先不用太研…

2024美赛数学建模思路 - 案例:感知机原理剖析及实现

文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法&#xff0c;其…

leetcode:每日温度---单调栈

题目&#xff1a; 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例&…

139:leafle加载here地图(v3软件多种形式)

第139个 点击查看专栏目录 本示例介绍如何在vue+leaflet中添加HERE地图(v3版本的软件),并且含多种的表现形式。包括地图类型,文字标记的设置、语言的选择、PPI的设定。 v3版本和v2版本有很大的区别,关键是引用方法上,请参考文章尾部的API链接。 直接复制下面的 vue+leaf…

2.1.4-相关性分析

跳转到根目录&#xff1a;知行合一&#xff1a;投资篇 已完成&#xff1a; 1、投资&技术   1.1.1 投资-编程基础-numpy   1.1.2 投资-编程基础-pandas   1.2 金融数据处理   1.3 金融数据可视化 2、投资方法论   2.1.1 预期年化收益率   2.1.2 一个关于yaxb的…

【redis13】集群前奏:sentinel模式

1.哨兵sentinel引入背景 我们现在来思考一个问题&#xff1a;如何实现服务的高可用。我们首先想到至少要满足两个要求&#xff1a;1.服务端能够实现主从自动切换&#xff1b;2.对于客户端来说&#xff0c;如果发生了主从切换&#xff0c;则能够自动连接到最新的master节点。 我…

第04章_IDEA的安装与使用(上)(认识,卸载与安装,JDK相关设置,详细设置,工程与模块管理,代码模板的使用)

文章目录 第04章_IDEA的安装与使用&#xff08;上&#xff09;本章专题与脉络1. 认识IntelliJ IDEA1.1 JetBrains 公司介绍1.2 IntelliJ IDEA 介绍1.3 IDEA的主要优势&#xff1a;(vs Eclipse)1.4 IDEA 的下载 2. 卸载与安装2.1 卸载过程2.2 安装前的准备2.3 安装过程2.4 注册2…

Django REST Framework入门之序列化器

文章目录 一、概述二、安装三、序列化与反序列化介绍四、之前常用三种序列化方式jsonDjango内置Serializers模块Django内置JsonResponse模块 五、DRF序列化器序列化器工作流程序列化&#xff08;读数据&#xff09;反序列化&#xff08;写数据&#xff09; 序列化器常用方法与属…

使用 Node 创建 Web 服务器

Node.js 提供了 http 模块&#xff0c;http 模块主要用于搭建 HTTP 服务端和客户端&#xff0c;使用 HTTP 服务器或客户端功能必须调用 http 模块&#xff0c;代码如下&#xff1a; var http require(http); 以下是演示一个最基本的 HTTP 服务器架构(使用 8080 端口)&#x…

acwing讲解篇之94. 递归实现排列型枚举

文章目录 题目描述题解思路题解代码 题目描述 题解思路 定义递归深度deep&#xff0c;数字使用情况used&#xff0c;选择的数字顺序path 进行递归 终止条件为递归深度达到n层时&#xff0c;打印path&#xff0c;然后返回 深度加一 遍历未使用的数字&#xff0c;选择数字&am…

web架构师编辑器内容-编辑器组件图层面板功能开发-锁定隐藏、键盘事件功能的开发

我们这一部分主要是对最右侧图层面板功能进行剖析&#xff0c;完成对应的功能的开发: 每个图层都对应编辑器上面的元素&#xff0c;有多少个元素就对应多少个图层&#xff0c;主要的功能如下&#xff1a; 锁定功能&#xff1a;点击锁定&#xff0c;在编辑器中没法编辑对应的组…

Elasticsearch的映射操作

本文来记录下Elasticsearch的映射操作 文章目录 映射的概述 映射的概述 Elasticsearch与mysql数据库对比 映射的概述 有了索引库&#xff0c;等于有了数据库中的 database。索引库(index)中的映射&#xff0c;类似于数据库(database)中的表结构(table)。创建数据库表需要设置字…

3、非数值型的分类变量

非数值型的分类变量 有很多非数字的数据,这里介绍如何使用它来进行机器学习。 在本教程中,您将了解什么是分类变量,以及处理此类数据的三种方法。 本课程所需数据集夸克网盘下载链接:https://pan.quark.cn/s/9b4e9a1246b2 提取码:uDzP 文章目录 1、简介2、三种方法的使用1…

Flutter 与 Android原生 相互通信:BasicMessageChannel、MethodChannel、EventChannel

前言 本文主要讲解&#xff0c;使用不同的 Channel 让 Flutter 和 Android原生 进行通信&#xff0c;由于只是讲解两端通信&#xff0c;所以可视化效果不好&#xff1b; 不过我写了一篇专门讲解 Flutter 嵌入 Android原生View的文章 Flutter 页面嵌入 Android原生 View-CSDN…

小程序使用echarts图表-雷达图

本文介绍下小程序中如何使用echarts 如果是通过npm安装&#xff0c;这样是全部安装的&#xff0c;体积有点大 我这边是使用echarts中的一个组件来实现的&#xff0c;下边是具体流程&#xff0c;实际效果是没有外边的红色边框的&#xff0c;加红色边框的效果是这篇说明 1.echa…