ECS部署qq聊天机器人心得体会

简介: 本文介绍了使用ECS部署qq聊天机器人的实践经历,也介绍了部署服务器的心得。

[toc]

自我介绍

我是中国地质大学(武汉)计算机学院研二的一名学生,在实习时候通过同事推荐知道了这个平台和“飞天加速计划·高校学生在家实践”活动。

在公司实习时候接触了很多linux的操作,然后突然想在qq群部署一个封装了游戏查询和日常生活相关查询功能的聊天机器人,但是机器人要在后台24h运行,总不可能用自己的电脑,于是就想到了使用云服务器。

自己其实在本科时期使用过阿里云搭建自己的个人博客、云盘、和毕设的一些相关服务,但是后来到期了,就再没接触了。现在了解到有阿里云的这个计划,就来试一试了,这次的资源比上次好很多,核、流量都比本科时期的最便宜服务器大了不少。

阿里云ECS使用攻略

服务器系统选择

在公司时候我使用的是Ubuntu 20.x版本,但是在服务器上我突然想选 最新的22.x版本。但是经历了一系列不兼容和报错之后,我还是决定使用稳定的20.x版本。所以推荐大家使用这个版本,这里的apt-get的镜像也很全,基本不需要自己调整。

服务器部署

作为一个Python Programmer,拿到服务器第一件事肯定是部署Anaconda,那么只需在官网下载最新版本的x86 linux.sh版本即可。

bash Anaconda3-2022.05-Linux-x86_64.sh

值得注意的是运行完安装脚本之后一定要配置环境变量。

vim ~/.bashrc
# 添加 export PATH=/root/anaconda3/bin:$PATHsource ~/.bashrc

我的项目比较特殊,是一个py 3.10的新项目,所以自然而然配置了3.10环境:

conda create -n bot python=3.10
conda activate bot

然后就直接从我的github链接里克隆了,这是一个使用和cqhttp捕获q群聊天内容,再通过nonebot2实现机器人部署,依赖playwright库展示html模板,再将文本内容以网页图片的形式展示。与此同时,由于自己也是一个小炼丹er,我把目前正热的NLLB和BLOOM模型结合自己基于GPT系列微调后的模型部署成了服务,然后通过网络接口传输给了机器人,这样一来,群友就可以和机器人快乐说话啦!


服务器使用TIPS

本地访问服务器

为了更好地debug,我在本地上安装了Tabby:

然后通过ssh链接就能很好地访问服务器、使用FTP传文件、多端编程。

image.png

这里的主机名就是大家领取服务器时候的主机,然后端口号就是默认的22就可以。image.png

vim使用

在服务器上进行debug,肯定离不开vim工具。

vim工具的使用网上很多资料,我比较常用的是:

  • 进入到功能操作前一定要先ESC退出文本编辑模式
  • :是命令开始的标记,可以接具体命令,比如:wq是保存退出,:q是退出,:q!是强制退出
  • 同时还有一些基本的操作,比如gg是回到开头,dd是删除整行,v是逐字选中,V是逐行选中,然后结合home 和 end,y复制,p粘贴,就能在服务器上实现基本的文本编辑功能。

debug tips

在ECS上debug其实略有困难,一般来说使用python的pdb:

python -m pdb *.py

然后通过pdb的一堆指令来调试,或者直接在代码里:

importpdbpdb.set_trace()

但是这样太麻烦,所以我一般使用print()来打印内存。

此外,当项目一大,代码一多,设置tab来保证缩进一直,用vim还比较麻烦。所以我选择通过频繁的git pull git push来实现本地机器上编辑文档,然后在服务器上运行。

后台运行文件

这个也算是linux的最基本操作,一般格式是:

nohup [the command you run] > [the log name] &

就可以后台运行文件,这样即使关掉了tabby页面也能继续运行。

而查看自己的文件状态,只需要通过下面命令即可:

tail -f [the log name]

debug心得

在使用服务器时,的确经历了不少bug。

  • apt-get安装某个工具失败:apt-get update或者apt-get upgrade解决
  • pip 失败:更换镜像源解决。
  • ssh链接不上服务器:检查用户名和密码,检查端口,检查防火墙
  • wget失败:检查是不是因为ssl规则拒绝,取消https为http
  • wget断点续存:wget -c,wget -b
  • ……

总结

目前我还是在实习阶段,为来不管是继续读博还是直接工作,只要还在互联网行业,不管是现在的算法岗还是未来的其他各种互联网岗位,都肯定离不开服务器的使用,离不开linux系统的使用。目前使用ECS的10天里,感觉到了服务器带来的各种方便。等以后经济条件和时间条件更加富裕,我会考虑更大的服务器,重新部署个人云盘、博客、搭建更有趣的联网服务:比如公开自己的NLP的API,写线上测试界面,比如装载一些小游戏等。如果有可能,我还想拥有一台自己的深度学习服务器。现在用公司的服务器真的太爽了,但我肯定不好用它部署自己的服务,等以后有了自己的,就没人和我抢gpu等计算资源和存储资源了!

经过这么多天的学习,每次使用ECS遇到不懂的问题和bug都会查询很多资料,现在已经能够熟练在ECS各种操作了,这为我的学习和科研都有了很多帮助。希望之后有机会实现自己的展望!

个人作品

我基于ECS搭建了一个qq群聊天机器人。

启动:

image.png

展示菜单:

image.png

NLP功能

我将自己在学校期间微调的NLP模型在学校服务器上联网并发布了api,然后对接到了自己的ECS服务器上。这个模型是基于GPT-J (6B参量)微调的巨大模型,由于我在微调阶段基于千种prompt让模型学会了包括但不限于翻译、对话、续写等多方面NLU任务,目前的机器人已经能够借助服务器顺利地回复群友发言。


image.png

image.png

外卖推荐功能和食谱查询功能

同时,还借助菜谱接口和基于爬虫的外卖获取方式实现了吃相关的推荐功能。

image.png

image.png

基于html和playwright的天气查询功能

我通过天气接口实现了天气查询,并根据html模板传值生成html文件,通过playwright部署到模拟浏览器中并获取图片文件。

image.png

基于jx3api的各种图文查询功能

同时,由于我玩剑网3,我也为其搭建了各种游戏必须的功能:

查询物价、金价、开服、攻略等。

image.png

image.png

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
24天前
|
负载均衡 应用服务中间件 持续交付
微服务架构下的Web服务器部署
【8月更文第28天】随着互联网应用的不断发展,传统的单体应用架构逐渐显露出其局限性,特别是在可扩展性和维护性方面。为了解决这些问题,微服务架构应运而生。微服务架构通过将应用程序分解成一系列小型、独立的服务来提高系统的灵活性和可维护性。本文将探讨如何在微服务架构中有效部署和管理Web服务器实例,并提供一些实际的代码示例。
56 0
|
18天前
|
网络协议 网络安全
基于bind软件部署DNS服务器
关于如何使用bind软件部署DNS服务器的教程,包括DNS服务器的类型、基于bind软件的部署步骤、验证DNS服务器可用性的指导,以及如何进行DNS正向解析的实现。
18 2
基于bind软件部署DNS服务器
|
1天前
|
监控 JavaScript Java
部署应用程序到服务器
部署应用程序到服务器
9 3
|
18天前
|
存储 关系型数据库 MySQL
使用Docker快速部署Mysql服务器
本文介绍了如何使用Docker快速部署MySQL服务器,包括下载官方MySQL镜像、启动容器、设置密码、连接MySQL服务器以及注意事项。
105 18
|
1天前
|
Ubuntu 开发工具 git
在Ubuntu上部署BOA服务器的步骤
部署BOA服务器是一个涉及多个步骤的过程,包括系统更新、安装依赖、下载和编译源代码、配置服务器以及启动和验证。遵循上述步骤,可以在Ubuntu系统上成功部署BOA服务器,为开发和测试提供一个轻量级的Web服务器环境。
9 0
|
25天前
|
JavaScript NoSQL 中间件
《Node.js后端修炼手册》——揭秘服务器搭建与部署上线的生死时速,让你一战成名!
【8月更文挑战第27天】本文详细介绍如何从零开始利用Node.js构建后端服务器并部署至生产环境。首先,通过简易步骤搭建基础服务器,包括环境安装与配置。接着,引入Express框架优化路由与中间件管理,提升开发效率。随后,利用Mongoose实现MongoDB数据库连接,增强数据交互能力。为保证系统稳定性,文中还讲解了错误处理机制。最后,通过PM2等工具部署应用至生产环境,确保高效运行。本教程辅以示例代码,帮助读者快速掌握Node.js后端开发全流程。
55 2
|
27天前
|
前端开发 应用服务中间件 nginx
前端服务器部署方式
【8月更文挑战第25天】前端服务器部署方式
34 1
|
20天前
|
UED
JSF文件下载:解锁终极文件传输秘籍,让你的Web应用瞬间高大上!
【8月更文挑战第31天】掌握JSF文件下载功能对构建全面的Web应用至关重要。本文通过具体代码示例,详细介绍如何在JSF中实现文件下载。关键在于后端Bean中的文件读取与响应设置。示例展示了从创建实体类到使用`<h:commandLink>`触发下载的全过程,并通过正确设置响应头和处理文件流,确保文件能被顺利下载。这将显著提升Web应用的实用性与用户体验。
36 0
|
20天前
|
Java 数据库 API
JSF与JPA的史诗级联盟:如何编织数据持久化的华丽织锦,重塑Web应用的荣耀
【8月更文挑战第31天】JavaServer Faces (JSF) 和 Java Persistence API (JPA) 分别是构建Java Web应用的用户界面组件框架和持久化标准。结合使用JSF与JPA,能够打造强大的数据驱动Web应用。首先,通过定义实体类(如`User`)和配置`persistence.xml`来设置JPA环境。然后,在JSF中利用Managed Bean(如`UserBean`)管理业务逻辑,通过`EntityManager`执行数据持久化操作。
32 0
|
21天前
|
JavaScript 搜索推荐 前端开发
从零搭建到部署:Angular与Angular Universal手把手教你实现服务器端渲染(SSR),全面解析及实战指南助你提升Web应用性能与SEO优化效果
【8月更文挑战第31天】服务器端渲染(SSR)是现代Web开发的关键技术,能显著提升SEO效果及首屏加载速度,改善用户体验。Angular Universal作为官方SSR解决方案,允许在服务器端生成静态HTML文件。本文通过具体示例详细介绍如何使用Angular Universal实现SSR,并分享最佳实践。首先需安装Node.js和npm。
20 0

热门文章

最新文章