目录

本文笔记来自黑马视频 https://www.bilibili.com/video/BV1heK3znEeH,相关资料可在该视频的评论区中领取。

1.IT 运维概述

1.1.基本概念

(1)IT 运维是指通过专业技术手段,确保企业的 IT 系统和网络持续、安全、稳定运行,保障业务的连续性。运维涵盖计算机网络、应用系统、硬件环境和服务流程的综合管理。

在这里插入图片描述

(2)IT 运维主要分为:系统运维、数据库运维、自动化运维、容器运维、云计算运维、信创运维六个方向。 主要的工作内容以围绕部署、监控、告警、故障快速恢复几个板块展开,不同的方向所采用的技术栈也会有所不同。

在这里插入图片描述

1.2.软件开发流程与三大环境

(1)软件开发流程一般为产品设计 -> 项目研发 -> 项目测试 -> 项目上线 -> 运维,其中:

  • 研发: 前端(HTML + CSS + JavaScript) + 后端(Java/Python/Go)
  • 运维:产品上线、后期的运行与维护工作都属于运维工程师范畴

在这里插入图片描述

(2)环境 (Environment):指的是一组相对独立的软件与硬件资源,以及相应的配置、数据。在这个环境里,可以安装、运行和测试应用。

在这里插入图片描述

1.3.工单系统

工单系统 (Ticketing System) 是运维工程师和 IT 支持团队在日常工作中广泛使用的工具简单来说,它是一种用于记录、分配和处理工作请求、问题报告、变更申请等事项的系统。

在这里插入图片描述

在这里插入图片描述

1.4.网络通信“三要素”

(1)协议 (Protocol):协议定义了数据在网络中传输时的规则和格式。常见的协议有 TCP/IP、UDP、HTTP/s、FTP 等,它们规定了数据如何被分割、传输、接收和重组。

(2)IP(Internet Protocol):IP 地址用于唯一标识网络中的每一台设备。它充当设备的“地址”,使得数据能够在网络中准确地找到目标设备。

在这里插入图片描述

(3)端口 (Port):端口用于区分同一台设备上不同的应用程序或服务。在计算机网络中,一个 IP 地址可以对应多个服务,每个服务通过不同的端口进行通信。端口号是通信中识别应用程序的方式。

在这里插入图片描述

1.5.常见的操作系统

常见的操作系统:Windows、MacOS、Unix/Linux、Android,其中 Linux 是目前全球使用最多的服务器操作系统。

在这里插入图片描述

1.6.云服务器的基本介绍

(1)云服务器 (Cloud Server),又称云主机或弹性计算服务 (Elastic Compute Service, ECS),是基于云计算技术提供的一种虚拟化服务器。云服务器利用虚拟化技术,将物理服务器的计算资源(如 CPU、内存、存储等)封装成一个或多个独立的虚拟环境,用户可以按需通过互联网远程访问和使用这些资源。

在这里插入图片描述

(2)常见厂商:

在这里插入图片描述

2.购买 ECS 云服务器

2.1.登录阿里云官网

(1)进入阿里云官网(https://www.aliyun.com/)并点击右上角进行登录。

在这里插入图片描述

(2)在首页的产品中选择云服务器 ECS,并点击立即购买,如果是第一次使用阿里云的账户,页面的管理控制台会显示免费试用

在这里插入图片描述
在这里插入图片描述

2.2.选择云服务器配置并购买

(1)选择自定义购买,并根据实际情况选择合适的配置(注意:下面的配置仅适用于个人临时使用!):

① 选择付费类型、地域和网络及可用区:

在这里插入图片描述

② 选择实例和镜像:

在这里插入图片描述
在这里插入图片描述

③ 选择存储,如果需要数据盘和快照服务(额外付费)可选择添加:

在这里插入图片描述

④ 选择网络和安全组:

在这里插入图片描述

⑤ 管理设置:

在这里插入图片描述

⑥ 高级选项(选填):

在这里插入图片描述

(2)最终配置确认:

在这里插入图片描述

(3)付费购买(账户可用额度不得少于 100 元,未用完的额度可原路退回):

在这里插入图片描述

在这里插入图片描述

2.3.进入控制台查看实例

(1)购买成功后可进入控制台进行查看:

在这里插入图片描述

(2)服务器所产生的费用可通过如下方式进行查看:

在这里插入图片描述

3.ESC 云服务器的基本使用

3.1.停止与启动云服务器

(1)在实例的右侧操作选项中,点击停止或者重启即可:

在这里插入图片描述

在这里插入图片描述

(2)启动云服务器:

在这里插入图片描述

3.2.释放实例(谨慎操作)

(1)前面在创建实例时,在高级选项中选择了开启实例释放保护,这样在操作实例时可以避免不小心释放实例。但如果不再需要使用实例时,需要先关闭实例释放保护,然后再释放实例(谨慎操作),这样就不会再产生费用了,具体步骤如下:

① 点击实例 ID 进入实例详情页面,选择关闭实例释放保护:

在这里插入图片描述
在这里插入图片描述

② 在实例的右侧操作列中选择释放实例即可:

在这里插入图片描述

3.3.修改云服务器配置

如果在创建完实例之后,想修改实例配置,可点击实例右侧操作列的资源变配,根据实际情况进行修改即可:

在这里插入图片描述

3.4.连接云服务器

3.4.1.通过 Workbench 远程连接

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.4.2.通过远程连接工具连接

(1)通过 Xshell、MobaXterm 等远程连接工具来连接云服务器,下面以 MobaXterm 为例进行连接:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4.Linux 的目录结构与常用命令

4.1.Linux 的目录结构

(1)Linux 的目录结构是一个树型结构,没有盘符这个概念, 只有一个根目录 /, 所有文件都在它下面,而不像 Windows 可以拥有多个盘符,例如 C 盘、D 盘、E 盘。

在这里插入图片描述

(2)常见的目录结构:

在这里插入图片描述

4.2.Linux 常用命令

(1)终端说明:
在这里插入图片描述

(2)有关 Linux 的常用命令可以查看 Linux 常用命令这篇文章,此处不再赘述。

5.项目部署上线

5.1.项目介绍

(1)中州养老项目项目原型访问地址:https://codesign.qq.com/s/459277624064324,密码: FSTI。

(2)中州养老项目分为两端:

  • 管理后台:养老院员工使用,入住、退住,给老人服务记录,AI 智能体体检报告分析(百度千帆)等等;
  • 家属端:养老院的老人家属使用,查看老人信息,缴费,下订单,智能客服等等;

(3)业务主页效果:

在这里插入图片描述

在这里插入图片描述

5.2.项目部署架构及各节点规划

(1)项目部署架构如下:

在这里插入图片描述

(2)各节点规划如下:

在这里插入图片描述

5.3.各节点初始化环境

(1)在阿里云购买三台 ECS 云服务器,与上面的步骤类似,只不过在付费时,购买的实例数量设置为 3。此外,要保证这 3 台云服务器的网络在同一个可用区内。

在这里插入图片描述

(2)使用 MobaXterm 连接三个服务器,并使用如下命令修改主机名字:

# 第一个节点
hostnamectl set-hostname node1.itcast.cn
su

# 第二个节点
hostnamectl set-hostname node2.itcast.cn
su

# 第三个节点
hostnamectl set-hostname node3.itcast.cn
su

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.4.MySQL 数据库安装、配置和数据导入

5.4.1.MySQL 介绍

MySQL 是一个常用的关系型数据库软件,可以用来存储和管理数据,比如用户信息、订单记录等。它简单高效,适合小到个人网站,大到大型应用的需求。与 MySQL 相关的具体知识可以查看专栏 MySQL 数据库

5.4.2.MySQL 安装与配置

包管理器 (dnf) 安装适合大多数生产环境,提供标准化、可维护的部署方案。手动安装适合有特殊需求或需要完全控制编译选项的场景,但需要更多的维护工作。对于企业生产环境,通常推荐使用包管理器安装,除非有明确的特殊需求。

(1)安装 MySQL 官方 dnf(yum) 仓库

dnf install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm

在这里插入图片描述

查看是否启动 MySQL 8.0 仓库

dnf repolist enabled | grep mysql

在这里插入图片描述

(2)安装 MySQL 8

dnf install -y mysql-community-server --nogpgcheck

上述命令中 --nogpgcheck 指跳过 GPG 检查,即当安装链接是可信的,建议直接跳过,避免由于网络等跟其他原因导致无法安装 GPG (GNU Privacy Guard,是一种开源的加密工具,用于保障数据的安全性和真实性,主要用于加密、解密和数字签名验证。它的核心作用是通过公钥和私钥的机制提供数据完整性和防篡改验证)

在这里插入图片描述
在这里插入图片描述

(3)启动 MySQL 相关服务

systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld

在这里插入图片描述

(4)获取 MySQL 初始 root 密码

grep password /var/log/mysqld.log

在这里插入图片描述

(5)登录 MySQL,设置 MySQL 安全相关配置

mysql_secure_installation

在这里插入图片描述

注意:这里的数据库 root 密码同意设置为 Aa123456.,和项目中的配置保持一致。

(6)测试登陆

mysql -uroot -p[密码]   # 可以省略密码 直接回车,然后输入密码  

# 注意:此密码就是最新设置的 Aa123456.

在这里插入图片描述

退出 MySQL 命令行模式:quit 或 ctrl + d

(7)设置远程访问的权限信息

-- 配置远程连接访问的 root 用户密码
CREATE USER 'root'@'%' IDENTIFIED BY 'Aa123456.';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

在这里插入图片描述

(8)开放防火墙服务/端口号:云平台服务器本身就是关闭防火墙的,无需开放,如果需要对外网访问,可以在阿里云安全组配置。

# 允许 MySQL 服务
firewall-cmd --zone=public --add-service=mysql --permanent

# 或者开放 3306 端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent

# 让规则立即生效
firewall-cmd --reload

# 验证防火墙规则
firewall-cmd --list-all

5.4.3.项目基础业务数据导入

(1)将项目的 SQL 脚本上传到 node1 服务器的目录 /opt/zzyl/sql 下。

mkdir -p /opt/zzyl/sql
cd /opt/zzyl/sql

(2)将资料中的 SQL 脚本拖拽到该目录下

在这里插入图片描述

(3)执行以下 MySQL 命令,完成导入

cd /opt/zzyl/sql
mysql -uroot -pAa123456. < ry-zzyl.sql

(4)校验是否导入成功

# 查看所有数据库名
mysql -uroot -pAa123456. -e 'show databases;'
# 查看数据库 ry-zzyl 中的所有表名
mysql -uroot -pAa123456. -e 'use ry-zzyl; show tables;'

在这里插入图片描述

在这里插入图片描述

5.5.Redis 安装

5.5.1.Redis 介绍

Redis 是一个超级快的数据存储工具,它可以把数据保存在内存里,类似于一个高速缓存。它被广泛用于需要快速读写数据的场景。例如:缓存数据、实时数据分析、消息队列等。与 Redis 的具体知识可以查看 Redis 6——入门介绍这篇文章。

5.5.2.Redis 安装

(1)安装 Redis 服务

dnf install redis -y

在这里插入图片描述

(2)修改 Redis 相关配置

vim  /etc/redis/redis.conf
# 使用 set nu 命令显示行号,在第 75 行附近,修改为 * -::* 任意的服务都可以连接 Redis 服务
bind * -::*

# 在 903 行附近,打开 requirepass,设置其密码为 123456 【可选】
requirepass 123456

在这里插入图片描述
在这里插入图片描述

(3)启动 Redis 进程

systemctl start redis
systemctl enable redis
systemctl status redis

在这里插入图片描述

(4)测试 Redis 服务

redis-cli-a 密码】
# 或进入客户端, 然后输入 auth 123456
redis-cli
# 退出客户端: 
quit 或 ctrl +d

在这里插入图片描述

(5)开放防火墙: 云平台服务器本身就是关闭防火墙的, 无需开放, 如果需要对外网访问, 可以在阿里云安全组配置。

firewall-cmd --add-service=redis --permanent
# 或
firewall-cmd --add-port=6379/tcp --add-port=6379/udp --permanent
# 重新加载
firewall-cmd --reload
# 查看规则信息
firewall-cmd --list-all

5.6.阿里云 OSS

5.6.1.阿里云 OSS 介绍

(1)阿里云的 OSS (Object Storage Service) 是一个云端对象存储服务,简单来说,它就像是一个 网上的硬盘,用来存储和管理各种文件(比如图片、视频、文档等)。你可以把它理解为一个可以随时访问、随时上传文件的网盘,不过它比普通网盘更强大,专门为大规模的数据存储和管理设计。

(2)特点:

  • 像硬盘,但在云上:你把文件存到阿里云的OSS上,就像把文件放进云端的一个“网盘”中,而这个网盘可以存很多很多数据。
  • 可以随时随地访问:无论你身处哪里,只要有网络,就可以随时上传、下载、管理这些文件。
  • 适合大规模数据存储:不仅可以存普通文件,还能处理海量数据,比如网站的图片、视频,甚至是备份文件等。

5.6.2.开通阿里云 OSS

有关阿里云 OSS 的开通教程可参考功能实现——通过阿里云 OSS 实现文件管理这篇文章。

5.6.3.项目接入阿里云 OSS

在项目资料中打开生产环境配置文件,将配置文件 application-prod.yml 中的 oss 配置进行修改

在这里插入图片描述

在这里插入图片描述

5.7.百度千帆大模型

5.7.1.百度千帆大模型介绍

项目基于百度千帆大模型来分析用户的体检报告,故需要注册百度千帆大模型 API,从而对接百度千帆大模型。生产环境中,一般为公司生产环境的百度千帆账号。注册登录地址:https://qianfan.cloud.baidu.com/。有了账号之后,需要个人实名认证,不然大模型调用不了。

5.7.2.开通百度千帆大模型

(1)注册登录之后进行实名认证。

在这里插入图片描述

在这里插入图片描述

(2)实名认证成功之后,我们继续在 PC 端来访问千帆大模型,通过地址 https://cloud.baidu.com/product-s/qianfan_modelbuilder 进入到管理平台,按照下面的步骤获取 AccessKeyIDAccessKeySecret

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.7.3.项目接入百度千帆大模型

在项目资料中打开生产环境配置文件,将配置文件 application-prod.yml 中的百度千帆大模型配置进行修改:

在这里插入图片描述

5.8.后端服务部署

5.8.1.修改 MySQL 和 Redis 的连接 IP 地址

修改项目配置文件 application-prod.yml 中 MySQL 和 Redis 的 IP 地址为 node1 节点的私网 IP 地址。

在这里插入图片描述

在这里插入图片描述

5.8.2.安装 Java 程序运行环境 (JDK)

注意:以下操作均在 node2 节点上进行。

(1)创建放置 JDK11 的安装包目录

mkdir -p /export/software

(2)上传 JDK11 安装包上传到 node2 节点的 /export/software 目录下

在这里插入图片描述

(3)将 JDK11 的安装包解压到 /opt 目录下

tar -xzf openjdk-11.0.0.2_linux-x64.tar.gz -C /opt/
cd /opt
ll

在这里插入图片描述

(4)配置 JDK11 的环境变量

vim /etc/profile

# 在文件的尾部添加:
export JAVA_HOME=/opt/jdk-11.0.0.2
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH

# 保存退出后,执行加载操作
source /etc/profile

# 校验 JDK 是否安装配置成功
java -version

在这里插入图片描述

5.8.3.上传项目 jar 包并运行

(1)创建目录 /opt/zzyl/backend,并将项目 jar 包上传到该目录下

mkdir -p /opt/zzyl/backend

在这里插入图片描述

(2)运行该 jar 包

cd /opt/zzyl/backend
# 前台启动命令,当前启动后, 会占用前台控制窗口, 导致无法输入其他命令
java -jar zzyl-admin.jar

在这里插入图片描述

(3)使用以下脚本来通过 nohup 方式后台启动 jar 包,并支持动态输入 jar 包名称,以及将日志信息输入到指定文件中,方便查看

#!/bin/bash

# 提示用户输入 jar 包名称
echo "请输入要启动的 jar 包名称:"
read jar_name

# 检查输入是否为空
if [ -z "$jar_name" ]; then
    echo "错误:jar 包名称不能为空!"
    exit 1
fi

# 检查文件是否存在
if [ ! -f "$jar_name" ]; then
    echo "错误:文件 $jar_name 不存在!"
    exit 1
fi

# 提取 jar 包名称(不含扩展名)用于日志文件名
app_name=$(basename "$jar_name" .jar)

# 使用 nohup 启动 jar 包
echo "正在启动 $jar_name ..."
nohup java -jar "$jar_name" > "${app_name}.out" 2>&1 &

# 显示进程信息
echo "启动成功!"
echo "应用日志文件: ${app_name}.out"
echo "进程 ID: $!"
echo "使用 'tail -f ${app_name}.out' 查看日志"

将上述脚本保存为 startup.sh 文件,并给脚本添加执行权限

chmod +x startup.sh

运行脚本,并按照提示输入 jar 包名称即可

./startup.sh

在这里插入图片描述

(4)使用以下脚本来停止 jar 包的运行,并支持动态输入 jar 包名称

#!/bin/bash
echo "请输入要停止的应用名称(部分匹配):"
read app_name

# 使用 jps 查找进程
pids=$(jps -l | grep "$app_name" | grep -v "jps" | awk '{print $1}')

if [ -z "$pids" ]; then
    echo "未找到包含 '$app_name' 的 Java 进程"
    exit 1
fi

echo "找到以下进程:"
jps -l | grep "$app_name"

for pid in $pids; do
    echo "停止进程: $pid"
    kill $pid
done

将上述脚本保存为 stop.sh 文件,并给脚本添加执行权限

chmod +x stop.sh

运行脚本,并按照提示输入 jar 包名称即可

./stop.sh

在这里插入图片描述

(5)此外,可以通过直接 kill 命令来停止该 jar 包的运行

# 查看当前系统中 Java 进程的信息
jps
# 终止进程
kill -9 [进程号]
# 或
kill -15 [进程号]

# kill -15 是推荐的进程停止方式,它允许应用优雅地关闭,释放资源,确保数据完整性。只有在优雅停止失败时才应该使用 kill -9

在这里插入图片描述

(6)通过 tail 命令查看日志

# 实时显示 zzyl-admin.out 文件最后 20 行内容,并持续监控文件的新增内容
tail -f -n 20 zzyl-admin.out

在这里插入图片描述

在这里插入图片描述

5.9.Nginx 组件部署

5.9.1.Nginx 介绍

Nginx 是一款高性能的 Web 服务器和反向代理服务器。它最初是为了提供更高效的静态文件处理而设计的,但现在广泛应用于负载均衡、反向代理、缓存等多种用途。它基于 C 语言开发,在合适的硬件上(如多核 CPU 和足够的内存),Nginx 可以处理 50,000 到 100,000 个并发连接,甚至更多。与 Nginx 相关的具体知识可以参考 Nginx——入门介绍、安装与核心配置文件结构(一/五)这篇文章。

5.9.2.Nginx 安装

注意:以下操作均在 node3 节点上进行。

(1)安装 Nginx 服务器

dnf install nginx -y

(2)启动并启用 Nginx 服务

systemctl start nginx
systemctl enable nginx
systemctl status nginx

在这里插入图片描述

(3)开放防火墙:在阿里云控制台中的安全组中检查 80 端口是否对外开放,如果没有则需要手动新增。

在这里插入图片描述

在这里插入图片描述

(4)测试 Nginx 是否能被外网访问:在浏览器中输入 node3 节点的公网 IP 地址并回车,如果能出现如下界面,则说明访问 Nginx 成功:

在这里插入图片描述

(5)Nginx 主要目录结构介绍

  • /etc/nginx/:Nginx 的主配置目录,存放所有与 Nginx 配置相关的文件,主要包括 nginx.confconf.dmime.types
  • /var/log/nginx/:通常包含与 Nginx 程序相关的文件,通常安装时会有一个默认的 index.html 文件,用来验证 Nginx 是否成功安装;
  • /usr/share/nginx/: Nginx 会把日志文件存放在这个目录下,日志文件帮助监控 Nginx 的运行情况,排查问题;

5.10.前端服务部署

5.10.1.上传前端目录

将前端的 dist 目录上传到 /var/www/ 目录下,如果目标路径不存在,则手动创建

mkdir -p /var/www/

在这里插入图片描述

5.10.2.Nginx 配置

配置 Nginx 的配置文件(资料中已提供完整的配置):


user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;
	# 在HTTP的目录下, 添加以下三个add_header   CORS 配置
	# 这几行配置用于设置 跨域资源共享(CORS),它们在 Nginx 中用来允许其他域名访问你的资源。CORS 是一种机制,允许通过浏览器发起跨域 HTTP 请求,常用于 Web 应用与不同域名的 API 交互时,解决浏览器的同源策略限制。
	add_header Access-Control-Allow-Origin *;
	add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, PUT, DELETE";
	add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization";
	
    server {
        listen       80;
        listen       [::]:80;
		# 这些配置项与 Nginx 处理客户端请求的请求体大小、请求头缓冲区等相关,主要用于控制 Nginx 在处理上传文件、请求体内容和请求头时的行为
        client_max_body_size 60m; # 限制客户端请求体的最大大小。
		client_body_buffer_size 512k; # 设置 Nginx 用于缓冲客户端请求体的内存大小。
		client_header_buffer_size 2k; # 设置 Nginx 用于缓冲请求头的内存大小。


        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
		
		# 处理 静态页面
        location / {
                root   /var/www/dist;
                index  index.html index.htm;
                proxy_set_header   Upgrade          $http_upgrade;
                proxy_set_header   Connection       upgrade;
                try_files $uri $uri/ /index.html;
        }
        # 处理反向代理
        location /prod-api/ {
                proxy_pass http://node2 节点的 IP 地址:9000/;
                proxy_set_header   Upgrade          $http_upgrade;
                proxy_set_header   Connection       upgrade;
        }
    }
}

(3)重启 Nginx 服务

# 重启 Nginx
systemctl restart ngin

# 或重新加载 Nginx 配置(不停止服务)
nginx -s reload

5.10.3.查看项目

在浏览器中输入 node3 节点的公网 IP 地址并回车,如果能出现如下界面,并且能登录成功(账号密码默认为 admin/admin123),则说明项目部署成功:

在这里插入图片描述

在这里插入图片描述

6.智能客服私有化大模型部署

6.1.部署说明

(1)本次聊天机器人底座采用 ChatGLM-6B 模型,ChatGLM 是由清华大学与智谱 AI 联合开发的开源双语对话语言模型,基于 GLM (General Language Model) 架构,支持中英双语交互,尤其针对中文场景优化。其代表版本 ChatGLM-6B 具备 60 亿参数,融合监督微调、人类反馈强化学习等技术,适用于金融、营销、公共服务等多领域智能化应用。

(2)部署该模型服务器要求:

  • 操作系统:Linux
  • GPU: 最低 4GB,建议 8GB 以上
  • 内存:大于等于 8 GB
  • CPU:大于等于 4 核
  • 磁盘空间:建议大于 40GB

6.2.开通服务器

开通过程与上面类似,只不过需要注意的是服务器的 GPU 需满足上述要求,且系统盘的大小建议大于 40GB,本次的配置如下:

6.3.安装 GPU 驱动

6.3.1.验证服务器是否安装显卡驱动

# 查看显卡信息
lspci | grep -i nvidia
# 验证驱动是否正确加载
nvidia-smi

在这里插入图片描述

6.3.2.下载并安装驱动

(1)根据查看得显卡, 得知为 NVIDIA 显卡,下载该显卡的开发版本相关驱动:https://developer.nvidia.com/cuda-downloads

在这里插入图片描述

(2)执行如下命令:

# 下载驱动
wget https://developer.download.nvidia.com/compute/cuda/12.6.3/local_installers/cuda_12.6.3_560.35.05_linux.run
# 安装驱动
sh cuda_12.6.3_560.35.05_linux.run

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.3.3.添加环境变量

# 添加 CUDA 驱动
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
# 再次校验
nvidia-smi

在这里插入图片描述

6.4.基础环境安装与模型部署

由于本次基于 ChatGLM-6B 大模型部署(采用 Python 语言开发,使用大量的 Python 核心库),所以首先需要再服务器中安装 Python 环境。本次采用安装 Anaconda 来安装,Anaconda 是一款开源的 Python 发行版本,其包含了 conda、Python 等 180 多个科学包及其依赖项,同时 Anaconda 还提供虚拟环境,支持隔离不同的 Python 环境,从而减少互相影响。故一般部署 Python 项目主要安装以 Anaconda 版本为主。

6.4.1.下载并安装 Anaconda

(1)下载 Anaconda

wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh

在这里插入图片描述

(2)安装 Anaconda

bash Anaconda3-2024.10-1-Linux-x86_64.sh

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)注意:如果没有跳出询问初始化的界面, 该怎么办?

cd ~ # 如果你不是 root 用户,切换到自己的家目录下
vim .bashrc
# 滚到文件的最后面。输入 i 进入插入模式,添加以下内容:
# >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/root/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
	eval "$__conda_setup" 
else
	if [ -f "/root/anaconda3/etc/profile.d/conda.sh" ]; then
		. "/root/anaconda3/etc/profile.d/conda.sh" 
	else
		export PATH="/root/anaconda3/bin:$PATH"
	fi
fi
unset __conda_setup
# <<< conda initialize <<< 添加后, 保存退出即可

在这里插入图片描述

退出重新连接下服务器即可

在这里插入图片描述

6.4.2.模型部署

(1)构建 Python 虚拟环境(隔离各个环境)

# 创建虚拟环境
conda create --name chatglm python=3.10
# 进入虚拟环境
conda activate chatglm
# 如果需要离开此虚拟环境,可执行以下命令: 离开当前虚拟环境 [无需执行, 因为后续的操作都是基于这个虚拟环境]
conda deactivate

在这里插入图片描述

(2)下载 ChatGLM-6B 模型(知识库)

mkdir -p /export/data/glm
# 切换目录
cd /export/data/glm
# 安装国内模型资源平台
pip install -U huggingface_hub
# 设置模型资源地址
export HF_ENDPOINT=https://hf-mirror.com
# 下载对应模型内容(以下为一行)
huggingface-cli download --resume-download THUDM/chatglm-6b-int4 --local-dir THUDM/chatglm-6b-int4

在这里插入图片描述

在这里插入图片描述

(3)上传资料中的 ChatGLM-6B 代码

# 直接上传到此目录下
cd /export/data/glm

(4)安装依赖

cd /export/data/glm/ChatGLM-6B
pip install -r requirements.txt -i https://mirror.sjtu.edu.cn/pypi/web/simple

(5)调整配置:在项目中, 部分的依赖资源可能由于我们项目放置路径问题,导致部分资源存在加载不上的问题,一般会和开发人员沟通,确认资源放置位置,从而进行修改调整

# 修改 api.py 文件中的模型位置:
cd /export/data/glm/ChatGLM-6B
vim api.py

# 增加一行内容
model_path = "/export/data/glm/THUDM/chatglm-6b-int4" 
# 修改部分参数
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModel.from_pretrained(model_path, trust_remote_code=True).half().cuda()
model = model.eval()

(6)运行 api.py:启动后,即可打开大模型调用接口,交由开发人员通过接口调用大模型即可使用

# 安装额外依赖:
pip install fastapi uvicorn

默认部署在本地的 8000 端口,通过 POST 方法进行调用

curl -X POST "http://127.0.0.1:8000" -H 'Content-Type: application/json' -d '{"prompt": "你好", "history": []}'

得到的返回值如下:

在这里插入图片描述

7.阿里云监控组件

7.1.云监控服务介绍与购买

(1)阿里云的云监控服务 (CloudMonitor) 是一款简单易用、功能强大的监控工具,主要用来帮助用户实时监控阿里云上的各种资源(比如服务器、数据库、网络等),并在出现问题时及时发出警报,确保业务稳定运行。

(2)开通步骤如下:

  • 选择【产品】-【迁移与运维管理】-【云监控】
    在这里插入图片描述
  • 选择【立即购买】(第一次使用可选择【免费试用】)
    在这里插入图片描述
  • 选择【云监控】,点击【立即试用】
    在这里插入图片描述

7.2.开通云主机监控策略

(1)在云监控的控制台中点击主机监控

在这里插入图片描述

(2)为需要监控的主机安装 Agent

在这里插入图片描述

(3)等待片刻, 重新刷新之后,对应的 CPU 使用率、内存使用率、磁盘使用率的数据即可出现

在这里插入图片描述

(4)点击某个具体的主机名,即可查看监控详情

在这里插入图片描述

7.3.系统报警服务配置

7.3.1.介绍

云监控中的报警服务规则配置的主要目的是帮助用户实时监控阿里云资源、线下 IDC、其他云厂商产品或自定义监控数据的运行状态,并在监控指标达到预设条件时,自动触发报警通知。通过这种方式,用户可以及时获取异常信息并快速采取措施,确保业务系统的稳定性和可靠性。

(1)设置报警联系人:当触发条件后,需要通知相关人员, 这些对应的人员信息需要提前录入

在这里插入图片描述

(2)设置报警联系组:多个联系人合并为一个组, 不同的类型可以单独设置为组,告警的时候可以直接针对多个用户同时告警

在这里插入图片描述

(3)设置报警规则:帮助用户监控运行状态,并在监控指标达到预设条件时,自动触发报警通知

在这里插入图片描述

7.3.2.示例

(1)需求:监控 CPU 指标

  • 当连续 1 分钟 CPU 使用率超过 80%,进行邮件提醒;
  • 当连续 3 分钟 CPU 使用率超过 90%,进行短信+邮件提醒;
  • 当连续 5 分钟 CPU 使用率超过 95%,进行电话+短信+邮件提醒。

(2)具体设置如下:

在这里插入图片描述

在这里插入图片描述

(3)测试:资料中提供了 CPU 测试脚本,将脚本上传到服务器中,并启动运行,等待效果即可

#!/bin/bash

# 启动 2 个 `yes` 进程,使 CPU 100% 占用
yes > /dev/null &
yes > /dev/null &
yes > /dev/null &
yes > /dev/null &

# 让脚本保持运行
wait

在这里插入图片描述

在这里插入图片描述

收到的短信和邮件如下所示:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

测试结束后记得停止上述脚本。

7.3.3.一键报警

对于一些常用指标, 云监控提供了一件告警方案, 可以直接开启使用.

在这里插入图片描述

在这里插入图片描述

7.4.系统运维常见问题

7.4.1.CPU 负载过高

(1)使用 tophtop 命令查看系统的平均负载值:如果负载值持续高于 CPU 核心数的 0.5 倍,则可能存在负载过高问题。如果超过 1 则负载已经较高了, 当超过 2~3 倍意味着负载超高,需要立即解决。下图中的三个值即表示 CPU 最近 1 分钟、5 分钟和 15 分钟的平均负载情况。

在这里插入图片描述

(2)排查 CPU 负载过高的原因

在这里插入图片描述

7.4.2.内存使用率过高

(1)使用 tophtop 命令查看,或者直接云监控查看均可:如果内存使用率持续接近或达到 100%,则定义为内存爆满。当 Mem 行的 free 值几乎为0时, 表示剩余内存几乎没有了。

在这里插入图片描述

(2)排查内存过高的原因

在这里插入图片描述

7.5.ECS 服务器巡检报告介绍

ECS 服务器巡检报告一般是用于评估云服务器ECS实例及其相关资源(如磁盘、网络等)的健康状态和运行性能。该报告基于对ECS实例的全面检查,包括性能指标、安全风险、配置合规性等多个维度的分析。通过巡检报告可以提高系统的稳定性、安全性、优化资源配置和支持合规性审计工作巡检报告主要内容:

在这里插入图片描述

7.6.云服务器监控可视化大屏

(1)打开自定义大盘,创建大盘

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(2)添加可视化组件

在这里插入图片描述

在这里插入图片描述

(3)根据需求添加对应监测指标,例如添加 CPU 使用率(折线图)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(4)最后保存大盘即可。

云服务器监控可视化大屏与 Grafana 中的仪表盘类似,具体知识可查看搭建基于 Prometheus、Grafana 和 Alertmanager 的监控告警系统这篇文章。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐