DevOps自动化部署详解:从理念到实践
在软件开发日益快速迭代的今天,如何以高效、稳定且可重复的方式将代码变更从开发环境自动部署到生产环境成为企业竞争的重要因素。DevOps 正是在这一背景下应运而生,它打破开发、测试、运维之间的壁垒,通过自动化工具和流程,实现持续集成(CI)、持续交付(CD)与持续部署(CD)的全流程自动化。本文将详细介绍 DevOps 中自动化部署的各个方面,并结合实例展示如何利用相关工具实现自动化部署。
一、自动化部署的基本概念
自动化部署指的是利用脚本和工具将软件的构建、测试、打包和部署流程自动化执行,从而减少人工操作,降低出错概率,并提高交付速度和质量。其核心优势包括:
- 缩短交付周期:从代码提交到上线部署全程自动化,大大缩短发布时间。
- 降低人为错误:自动化流程减少手动操作,确保每次部署都严格遵循预定步骤。
- 增强系统一致性:通过版本控制和代码化管理配置,保证各环境(开发、测试、生产)的一致性。
- 支持快速回滚:当新版本出现问题时,可快速回退到之前的稳定版本,降低业务中断风险。
二、自动化部署流程解析
一个完整的自动化部署流程通常包括以下几个阶段:
2.1 代码提交与构建
-
代码托管:开发者将代码提交至 Git、SVN 等版本控制系统,保证代码管理的规范化。
-
自动化构建:使用工具(如 Jenkins、GitLab CI/CD)自动触发构建任务,通过编译、打包生成应用工件。例如,在 Jenkins Pipeline 中,常见的 Jenkinsfile 可能如下:
pipeline {agent anystages {stage('Checkout') {steps {checkout scm}}stage('Build') {steps {// 执行构建命令,例如 Maven 编译打包sh 'mvn clean package'}}stage('Test') {steps {// 自动化测试sh 'mvn test'}}} }
2.2 自动化部署
在构建完成之后,自动化部署环节主要包括以下步骤:
-
环境准备:通过基础设施即代码(IaC)工具(如 Terraform、Ansible)自动化配置服务器、虚拟机或容器环境。利用 IaC 可以确保不同环境之间的配置一致性。
-
部署工件:将构建出的应用工件部署到预定环境。举例来说,使用 Docker 部署应用的典型 Dockerfile 如下:
# 使用官方 Python 镜像作为基础 FROM python:3.8-slim# 设置工作目录 WORKDIR /app# 将应用代码复制到容器中 COPY . /app# 安装依赖 RUN pip install --no-cache-dir -r requirements.txt# 暴露应用端口 EXPOSE 8000# 启动应用 CMD ["python", "app.py"]
-
部署工具自动化:例如,利用 Jenkins 配合 Docker 插件,构建一个完整的流水线,实现代码提交后自动构建 Docker 镜像、推送到镜像仓库、并在 Kubernetes 集群中更新部署。
2.3 部署策略
自动化部署中常见的策略有:
-
蓝绿部署
在一套环境中保持当前稳定版本(蓝色),另外一套环境预先部署新版本(绿色)。测试通过后,将流量从蓝色切换到绿色,确保升级过程中用户体验不受影响。 -
金丝雀发布(灰度发布)
部署新版本时,先让一小部分用户体验新版本(“金丝雀”服务器),监控关键指标后逐步扩大用户比例。如果发现问题,可快速回滚至旧版本。 -
滚动更新
在集群中逐个或批量更新部分实例,新旧版本同时存在一段时间,确保系统始终有足够的健康实例提供服务。
三、常用工具与技术
在实现自动化部署的过程中,常见的工具和技术包括:
3.1 持续集成/持续部署(CI/CD)工具
- Jenkins:开源的自动化服务器,拥有丰富的插件生态系统,可以构建复杂的流水线。
- GitLab CI/CD:与 GitLab 紧密集成,通过 .gitlab-ci.yml 文件配置自动构建、测试和部署。
- Travis CI / CircleCI:基于云端的 CI/CD 服务,适合开源项目和小型团队。
3.2 基础设施即代码(IaC)工具
- Terraform:使用声明式配置管理基础设施,支持多种云平台。
- Ansible:通过 YAML Playbook 实现配置管理和应用部署,无需在目标主机安装代理。
3.3 容器化与编排工具
- Docker:将应用及其依赖打包成轻量级容器,确保环境一致性。
- Kubernetes:容器编排平台,通过自动扩展、滚动更新等功能实现高效部署与管理。
3.4 监控与日志管理工具
- Prometheus 与 Grafana:前者负责采集指标数据,后者用于数据可视化和告警配置。
- ELK Stack(Elasticsearch, Logstash, Kibana):集中管理和分析日志,帮助快速定位问题。
四、自动化部署实践案例
案例:使用 Jenkins+Docker 实现 Python 应用的自动化部署
1. 环境准备
- 在 Git 代码仓库中存储 Python 应用代码及 Dockerfile。
- 配置 Jenkins,安装 Git、Docker 插件,并创建一个流水线任务。
2. 编写 Jenkinsfile
pipeline {agent anyenvironment {IMAGE_NAME = "my-python-app"REGISTRY = "registry.example.com"}stages {stage('Checkout') {steps {checkout scm}}stage('Build') {steps {sh 'docker build -t $IMAGE_NAME:latest .'}}stage('Test') {steps {// 执行单元测试,确保代码质量sh 'pytest'}}stage('Push') {steps {sh "docker tag $IMAGE_NAME:latest $REGISTRY/$IMAGE_NAME:latest"sh "docker push $REGISTRY/$IMAGE_NAME:latest"}}stage('Deploy') {steps {// 利用 Kubernetes CLI 更新部署sh 'kubectl set image deployment/my-python-app my-python-app=$REGISTRY/$IMAGE_NAME:latest'}}}post {success {echo "自动化部署成功!"}failure {echo "部署过程中出现错误,请检查日志。"}}
}
3. 流程说明
- 代码提交:每当代码推送到 Git 仓库时,Jenkins 自动触发流水线。
- 构建与测试:流水线先构建 Docker 镜像,然后运行测试用例。
- 镜像推送:构建成功后,将镜像推送到私有或公有镜像仓库。
- 更新部署:通过
kubectl
命令更新 Kubernetes 中对应 Deployment 的镜像,实现滚动更新。
五、自动化部署中的挑战与最佳实践
5.1 常见挑战
- 环境差异:开发、测试、生产环境可能存在配置差异,使用 IaC 工具统一管理配置是关键。
- 部署中断风险:新版本上线过程中可能出现意外情况,需要部署前充分测试,并设计好回滚方案。
- 工具和流程复杂度:自动化部署工具众多,选择合适的工具及其集成方式需要根据实际需求进行权衡。
5.2 最佳实践建议
- 版本控制与代码化管理:所有部署脚本、配置文件和 IaC 模板均应存放在版本控制系统中,确保可追溯性和回滚能力。
- 分阶段部署:采用蓝绿部署或金丝雀发布策略,先在小范围内验证新版本,再逐步扩大流量,降低风险。
- 监控与日志:部署完成后,务必配置完善的监控和日志系统,实时捕捉系统状态与异常信息。
- 自动化测试:在每次部署前进行充分的单元测试、集成测试和验收测试,确保每个环节都能自动验证代码质量。
六、结语
DevOps 自动化部署不仅是一种工具和技术的堆砌,更是一种全新的思维方式和文化转变。通过自动化部署,企业能够大幅提升软件交付速度、减少人工错误并确保系统稳定运行。同时,结合持续集成、监控与日志管理,DevOps 为实现快速迭代和持续创新提供了坚实保障。
正如甘地所言:“你必须成为你希望在世界上看到的改变。”在 DevOps 的实践道路上,每一次自动化部署的实现都是对现有流程的优化和提升。希望本文能为你提供一些思路和实践经验,助力构建更高效、更可靠的软件交付流程。
以上就是本篇关于 DevOps 自动化部署的详细介绍。欢迎在评论区分享你的看法和实践经验,也可以提出问题一起探讨如何更好地实现自动化部署。
相关文章:
DevOps自动化部署详解:从理念到实践
在软件开发日益快速迭代的今天,如何以高效、稳定且可重复的方式将代码变更从开发环境自动部署到生产环境成为企业竞争的重要因素。DevOps 正是在这一背景下应运而生,它打破开发、测试、运维之间的壁垒,通过自动化工具和流程,实现持…...
systemverilog刷题小记
1、systemverilog的队列特性 1.1队列的基础操作 方法语法时间复杂度示例结果头部插入q.push_front(item)O(1)q.push_front(5)[5, ...]尾部插入q.push_back(item)O(1)q.push_back(8)[..., 8]头部删除q.pop_front()O(1)x q.pop_front()[...]尾部删除q.pop_back()O(1)x q.pop_…...
jetbrains IDEA集成大语言模型
一、CodeGPT CodeGPT是由CSDN打造的一款生成式AI产品,专为开发者量身定制。它能够提供强大的技术支持,帮助开发者在学习新技术或解决实际工作中的各种计算机和开发难题1。 idea集成 1.在线安装:直接在线安装 2.离线安装 JetBrains Mar…...
23. AI-大语言模型-DeepSeek赋能开发-Spring AI集成
文章目录 前言一、Spring AI 集成 DeepSeek1. 开发AI程序2. DeepSeek 大模型3. 集成 DeepSeek 大模型1. 接入前准备2. 引入依赖3. 工程配置4. 调用示例5. 小结 4. 集成第三方平台(已集成 DeepSeek 大模型)1. 接入前准备2. POM依赖3. 工程配置4. 调用示例…...
Ubuntu学习备忘
1. 打开Terminal快捷键 ctrl alt t 2.Ubuntu22.04的root没有默认初始密码, 为root设置密码,下面链接的step1, How to allow GUI root login on Ubuntu 22.04 Jammy Jellyfish Linux - LinuxConfig...
AI 编程助手 cursor的系统提示词 prompt
# Role 你是一名极其优秀具有10年经验的产品经理和精通java编程语言的架构师。与你交流的用户是不懂代码的初中生,不善于表达产品和代码需求。你的工作对用户来说非常重要,完成后将获得10000美元奖励。 # Goal 你的目标是帮助用户以他容易理解的…...
DAO设计模式
DAO设计模式 1.概念 DAO(Data Access Object)模式是一种用于分离业务逻辑与数据访问逻辑的设计模式,其核心思想是通过抽象接口屏蔽底层数据操作细节,提升代码的可维护性和扩展性。 2.DAO模式的定义与核心思想 DAO模式属于J…...
为什么外贸办公需要跨境专线网络?
你好,今天我们来聊聊SD-WAN技术在出海企业办公中的应用以及其带来的诸多优势。当今出海企业在与海外分支机构或合作伙伴开展高效的网络通讯和数据传输时,面临着许多挑战。此时,SD-WAN作为一种新兴的网络优化技术,正在改变这些企业…...
挪车小程序挪车二维码php+uniapp
一款基于FastAdminThinkPHP开发的匿名通知车主挪车微信小程序,采用匿名通话的方式,用户只能在有效期内拨打车主电话,过期失效,从而保护车主和用户隐私。提供微信小程序端和服务端源码,支持私有化部署。 更新日志 V1.0…...
【Pandas】pandas Series reindex
Pandas2.2 Series Computations descriptive stats 方法描述Series.align(other[, join, axis, level, …])用于将两个 Series 对齐,使其具有相同的索引Series.case_when(caselist)用于根据条件列表对 Series 中的元素进行条件判断并返回相应的值Series.drop([lab…...
HTML/CSS中并集选择器
1.作用:选中多个选择器对应的元素,又称:分组选择器 所谓并集就是或者的含义. 2.语法:选择器1,选择器2,选择器3,......选择器n 多个选择器通过,连接,此处,的含义就是:或. .rich,.beauty{color: blue;} 3.注意事项 1.并集选择器,我们一般竖着写 2.任何形式的选择器,都可以作为并…...
一台服务器将docker image打包去另一天服务器安装这个镜像
一台服务器将docker image打到去另一天服务器安装这个镜像 1. 打包2.另一台服务器执行 1. 打包 docker save -o nebula-graph-studio.tar harbor1.vm.example.lan/dockerio/vesoft/nebula-graph-studioxxx.tar 是打包好的文件 后面的是 docker image 2.另一台服务器执行 docke…...
【分布式理论14】分布式数据库存储:分表分库、主从复制与数据扩容策略
文章目录 一、分表分库1. 数据分表的必要性与方式2. 数据分库原则与优势 二、主从复制1. 读写分离架构设计2. 数据复制方式3. MySQL实现主从复制4. MySQL主从复制实践与高可用方案 三、数据扩容 随着业务的不断发展和数据量的增长,传统的单机关系型数据库已经逐渐不…...
SIM盾构建安全底座的可行性分析
一、背景 1.1安全需求现状 在数字化时代,信息安全面临着日益严峻的挑战。各类网络攻击手段层出不穷,如数据泄露、恶意软件攻击、网络诈骗等,给个人、企业和社会带来了巨大的损失。为了保障信息系统的安全性,需要构建一个可靠的安…...
ai大模型加本地知识库
cherrystudio 搭建本地知识库,并配置Ollama 本地部署的DS模型,或在线的千问模型 千问文本模型推荐:...
DeepSeek核心算法解析:如何打造比肩ChatGPT的国产大模型
注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 DeepSeek大模型技术系列一DeepSeek核心算法解析:如何…...
【插件】前端生成word 文件
文章目录 1、背景2、方式一:html-docx-js2.1 具体代码2.2 前端生成word文件的样式2.3 总结 3、方式二:pizzip docxtemplater3.1 具体代码3.2 前端生成word文件的样式3.3 总结 4、参考链接 1、背景 在实际开发中,业务需要,需要把数…...
软件测试用例设计方法之正交表
一、概念 能够使用最小的测试过程集合获得最大的测试覆盖率,从全面试验中挑选出有代表性的点进行测试。适用于配置类软件,组合比较多的情况。 正交表Ln(m^k): 特点:均匀分散、整齐可比、高效、快速、经济 n:正交表的…...
数组和对象深浅拷贝
对象浅拷贝 方法一:使用 Object.assign() Object.assign() 方法用于将一个或多个源对象的所有可枚举属性复制到目标对象。它会返回目标对象。 const originalObj {name: John,age: 30,hobbies: [reading, running] };const shallowCopy Object.assign({}, orig…...
NPM环境搭建指南
NPM(Node Package Manager)是 Node.js 的包管理工具,堪称前端开发的基石。本文将手把手教你 在Mac、Windows、Linux三大系统上快速搭建NPM环境,并验证是否成功。 一、Mac系统安装NPM 方法1:通过Homebrew安装ÿ…...
C#功能测试
List 内部元素为引用 src[0]为"11" List<Source> src new List<Source>(); src.Add(new Source() { Name "1", Age 1, Description "1" }); src.Add(new Source() { Name "2", Age 2, Description "2"…...
Mongoose 详解
为 Node.js 与 MongoDB 之间提供了一个更高级、更便捷的交互方式。 一、安装 # 使用 npm 安装npm install mongoose 二、基本使用 1. 连接数据库 const mongoose require("mongoose");// 数据库连接 URIconst uri "mongodb://localhost:27017/myDatabase…...
《95015网络安全应急响应分析报告(2024)》
2025年2月,95015服务平台发布了最新一期的《95015网络安全应急响应分析报告(2024)》。报告分别从整体形势、受害者特征、攻击者特征等方面,对2024年95015平台接报的739起网络安全应急响应事件展开分析,并给出了7个年度…...
鸿蒙开发:V2版本装饰器之@Monitor装饰器
前言 本文代码案例基于Api13。 随着官方的迭代,在新的Api中,对于新的应用开发,官方已经建议直接使用V2所属的装饰器进行开发了,所以,能上手V2的尽量上手V2吧,毕竟,V2是V1的增强版本,…...
【雅思博客04】Silence please!
A: Those people in front of us are making so much noise. It’s so inconsiderate! B: Don’t worry about it; it’s not such a big deal. A: Oh... I can’t hear a thing! Excuse me, can you keep it down? C: Sure, sorry about that! A: Someone’s phone is ri…...
【DeepSeek系列】04 DeepSeek-R1:带有冷启动的强化学习
文章目录 1、简介2、主要改进点3、两个重要观点4、四阶段后训练详细步骤4.1 冷启动4.2 推理导向的强化学习4.3 拒绝采样和有监督微调4.4 针对所有场景的强化学习 5、蒸馏与强化学习对比6、评估6.1 DeepSeek-R1 评估6.2 蒸馏模型评估 7、结论8、局限性与未来方向 1、简介 DeepS…...
深入理解 Spring Bean 生命周期的执行流程
在 Java 开发领域,Spring 框架无疑是一颗璀璨的明星,它极大地简化了企业级应用的开发过程。而 Spring Bean 的生命周期,作为 Spring 框架的核心概念之一,对于理解 Spring 框架的运行机制和进行高效开发至关重要。本文将详细剖析 S…...
毕业设计—基于Spring Boot的社区居民健康管理平台的设计与实现
🎓 毕业设计大揭秘!想要源码和文章?快来私信我吧! Hey小伙伴们~ 👋 毕业季又来啦!是不是都在为毕业设计忙得团团转呢?🤔 别担心,我这里有个小小的福利要分享给你们哦&…...
捷米特 JM - RTU - TCP 网关应用 F - net 协议转 Modbus TCP 实现电脑控制流量计
一、项目背景 在某工业生产园区的供水系统中,为了精确监测和控制各个生产环节的用水流量,需要对分布在不同区域的多个流量计进行集中管理。这些流量计原本采用 F - net 协议进行数据传输,但园区的监控系统基于 Modbus TCP 协议进行数据交互&…...
深入解析 iOS 视频录制(三):完整录制流程的实现与整合
深入解析 iOS 视频录制(一):录制管理核心MWRecordingController 类的设计与实现 深入解析iOS视频录制(二):自定义UI的实现 深入解析 iOS 视频录制(三):完…...
Python基于Flask的豆瓣Top250电影数据可视化分析与评分预测系统(附源码,技术说明)
博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇dz…...
AStar低代码平台RpcServiceBase的应用:客户端事务管理
由于AStar平台是基于RPC协议与AStar后端服务进行通讯,而又非常接近常规BS的编码方式,直接写SQL即可对数据库进行操作,那么如果有若干个访问需要在同一事务中进行的,如何处理?比如先生成临时表,再对临时表进…...
Postman如何流畅使用DeepSeek
上次写了一篇文章是用chatBox调用api的方式使用DeepSeek,但是实际只能请求少数几次就不再能给回响应。这回我干脆用最原生的方法Postman调用接口请求好了。 1. 通过下载安装Postman软件 postman下载(https://pan.quark.cn/s/c8d1c7d526f3),包含7.0和10…...
RocketMQ - 常见问题
RocketMQ常见问题 文章目录 RocketMQ常见问题一:消息幂等问题1:什么是消费幂等2:消息重复的场景分析2.1:发送时消息重复2.2:消费时消息重复2.3:Rebalance时消息重复 3:通用解决方案3.1ÿ…...
YOLOv12推理详解及部署实现
目录 前言一、YOLOv12推理(Python)1. YOLOv12预测2. YOLOv12预处理3. YOLOv12后处理4. YOLOv12推理 二、YOLOv12推理(C)1. ONNX导出2. YOLOv12预处理3. YOLOv12后处理4. YOLOv12推理 三、YOLOv12部署1. 源码下载2. 环境配置2.1 配置CMakeLists.txt2.2 配置Makefile 3. ONNX导出…...
docker 安装的open-webui链接ollama出现网络错误
# 故事背景 部署完ollama以后,使用谷歌浏览器的插件Page Assist - 本地 AI 模型的 Web UI 可以比较流畅的使用DeepSeek,但是只局限于个人使用,想分享给更多的小伙伴使用,于是打算使用open-webui 来管理用户,经官网推荐…...
【大模型】DeepSeek 的人工智能发展之路
【大模型】DeepSeek 的人工智能发展之路 初出茅庐:成立与奠基(2023 年)崭露头角:大模型的初步发布(2024 年)首个大模型 DeepSeek LLM 发布(2024 年 1 月 5 日)开源第二代 MoE 大模型…...
关于Unity的一些基础知识点汇总
1.Prefab实例化后,哪些资源是共用的?哪些资源是拷贝的? 共用资源 脚本组件:实例化后的 Prefab 共享脚本组件的代码。若脚本中无状态数据,多个实例对脚本方法的调用会有相同逻辑。比如一个控制物体移动的脚本࿰…...
Java 大视界 -- 企业数字化转型中的 Java 大数据战略与实践(93)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
Compose常用UI组件
Compose常用UI组件 概述Modifier 修饰符常用Modifier修饰符作用域限定Modifier Modifier 实现原理Modifier.Element链的构建链的解析 常用基础组件文字组件图片组件按钮组件选择器对话框进度条 常用布局组件线性布局帧布局 列表组件 概述 Compose 预置了很多基础组件ÿ…...
【EndNote】WPS 导入EndNote 21
写在前面:有没有人有激活码,跪求! EndNote,在文献管理和文献引用方面很好用。写文章的时候,使用EndNote引入需要的文献会很方便。我目前用的WPS,想把EndNote的CWYW(Cite While You Write&#…...
【Spring详解三】默认标签的解析
三、默认标签的解析 Spring的标签中有 默认标签和 自定义标签,两者的解析有着很大的不同,这次重点说默认标签的解析过程。 DefaultBeanDefinitionDocumentReader.class 默认标签的解析是在 DefaultBeanDefinitionDocumentReader.parseDefaultElement()函…...
leetcode 2585. 获得分数的方法数
题目如下 数据范围 莫要被困难的外衣骗了,本题就是有数量限制的完全背包问题。显然我们可以令 f(x,y)为当有x种题目时分数为y时的方法数 令某种题目的数量为k 那么方法数应该是 f(x,y) f(x - 1,y - k * (分值))其中(0 < k < 题目数量)通过代码 class So…...
Java Spring boot 篇:常用注解
Configuration 作用 Configuration 注解的核心作用是把一个类标记为 Spring 应用上下文里的配置类。配置类就像一个 Java 版的 XML 配置文件,能够在其中定义 Bean 定义和 Bean 之间的依赖关系。当 Spring 容器启动时,会扫描这些配置类,解析其…...
检索增强生成(RAG)技术应用方案设计
检索增强生成(RAG)技术应用方案设计 目录 引言背景分析核心技术原理应用领域与案例分析设计方案 5.1 设计目标5.2 技术路线5.3 实施步骤 风险评估与应对措施预期效果与长远展望总结 1. 引言 随着人工智能技术的飞速发展,大型语言模型&…...
【JavaEE进阶】数据库连接池
目录 🌴数据库连接池 🎋数据库连接池的使用 🌲MySQL企业开发规范 🌴数据库连接池 数据库连接池负责分配、管理和释放数据库连接,它允许应⽤程序重复使⽤⼀个现有的数据库连接,⽽不是再重新建⽴⼀个. 没…...
意图识别概述
在当今的人工智能领域,意图识别技术是自然语言处理(NLP)中的一个重要分支,它使得机器能够理解人类语言背后的目的或意图。对于鸿蒙操作系统而言,掌握意图识别技术可以极大地提升用户体验,使设备能更好地响应…...
istio实现灰度发布,A/B发布, Kiali网格可视化(二)
代码发布是软件开发生命周期中的一个重要环节,确保新功能和修复能够顺利上线。以下是几种常见的代码发布流程。在学习灰度发布之前。我们首先回忆下代码发布常用的几种方法。 A/B(蓝绿)发布: 蓝绿部署是一种通过维护两套独立的环…...
python-leetcode 36.二叉树的最大深度
题目: 给定一个二叉树root,返回其最大深度 二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数 方法一:深度优先搜索 知道了左子树和右子树的最大深度l和r,那么该二叉树的最大深度即为:max(l,r)1 而左子树和右子树的最大深…...
在 Ubuntu 22.04 中修改主机名称(hostname)
在 Ubuntu 22.04 中修改主机名称(hostname)可以通过以下两种方法实现,一种是临时修改(重启后失效),另一种是永久修改。以下是详细步骤: 方法 1:使用 hostnamectl 永久修改 查看当前主…...