beego项目部署与热更新

发布时间:2024年01月20日

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项目部署与热更新 - 范斯猫

文章来源:https://blog.csdn.net/liu289747235/article/details/135716352
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。