DevOps 学习笔记(一) | DevOps 简介及环境搭建
1. 环境配置
本次实验需要三台服务器CI/CD 服务器、应用服务器和Harbor 服务器
DevOps 步骤
- 程序员将代码 push 到代码仓库
- Jenkins 根据触发条件拉取代码到CI/CD 服务器
- Jenkins 使用 Maven 将代码 build 成 jar 包
- Jenkins 使用 jar 包通过 Dockerfile 和 docker-compose.yml 文件制作自定义镜像
- Jenkins 将自定义镜像推送到Harbor 服务器上
- Jenkins 调用应用服务器拉取自定义镜像
- 应用服务器运行镜像

CI/CD服务器需要安装:
- JDK
- Jenkins
- Git
- Maven
- Docker
应用服务器需要安装:
- Docker or Kubernetes 集群
Harbor服务器需要安装
- Docker
- Harbor 镜像仓库
2. 配置 CI/CD 服务器
2.1 安装 Jenkins
Jenkins 安装官方文档
CI/CD服务器环境为 CentOS 7,使用 yum 方式进行安装
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
如果机器没有安装 Java 的话需要使用以下命令安装 Java 11
yum install -y fontconfig java-11-openjdk
之后使用命令安装 Jenkins
yum install -y jenkins
下载安装后执行下面命令启动 Jenkins
systemctl start jenkins
使用下面命令获取初始密码
cat /var/lib/jenkins/secrets/initialAdminPassword
浏览器中输入 localhost:8080 打开 Jenkins 管理界面输入初始密码,选择安装推荐的插件,创建新的用户,之后开始使用 Jenkins。
2.2 配置 Jenkins
2.2.1 配置远程服务器
在插件管理页面安装好 Publish Over SSH 插件
进入全局配置界面,配置好远程服务器的信息,Remote Directory 是把文件传送到远程服务器的位置

此时点击 Test Configuration 可能会报错
jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to change to remote directory [/usr/local/test]]
在远程服务器上创建 /usr/local/test 目录即可
2.2.2 配置 Maven
在插件管理页面安装好 Maven Integration 插件
在CI/CD服务器上下载并安装 Maven,步骤如下
-
访问 Maven 官方网站
-
复制红框里 Maven 的下载链接

-
使用命令下载解压并将其移动到对应目录下
wget https://dlcdn.apache.org/maven/maven-3/3.9.0/binaries/apache-maven-3.9.0-bin.tar.gz tar -xvf apache-maven-3.9.0-bin.tar.gz mv -f apache-maven-3.9.0 /usr/local/
安装 Maven 成功后,打开 Jenkins,进入 Global Tool Configuration 页面,按照下图进行配置并保存,没有报错则 Maven 配置成功

3. 配置应用服务器
3.1 安装 Docker
可访问 CentOS环境下使用Docker 一文进行安装 Docker 的操作
3.2 安装 Docker-compose
curl -L https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
4. 配置 Harbor 服务器
进入 Harbor releases page,下载 Harbor offline 压缩文件 harbor-offline-installer-v2.5.6.tgz 并将其传到Harbor 服务器上并解压到指定位置
tar -zxvf harbor-offline-installer-v2.5.6.tgz -C /usr/local
对 Harbor 进行配置
cd /usr/local/harbor/
cp harbor.yml.tmpl harbor.yml
vi harbor.yml
将 hostname 一行内容改为Harbor 服务器的 IP 地址,并将 https 内容全部注释掉
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: 192.168.80.128# https related config
# https:# https port for harbor, default is 443# port: 443# The path of cert and key files for nginx# certificate: /your/certificate/path# private_key: /your/private/key/path
安装 Harbor
./install.sh
如果启动时报错
[Step 5]: starting Harbor ...
[+] Running 0/1⠿ Network harbor_harbor Error 0.1s
failed to create network harbor_harbor: Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-79dd02c9a738 -j RETURN: iptables: No chain/target/match by that name.(exit status 1))
只需要重启 Docker 后再次执行安装即可
systemctl restart docker
./install.sh
访问Harbor 服务器的 80 端口,默认账号为 admin,密码为 Harbor12345
相关文章:
DevOps 学习笔记(一) | DevOps 简介及环境搭建
1. 环境配置 本次实验需要三台服务器CI/CD 服务器、应用服务器和Harbor 服务器 DevOps 步骤 程序员将代码 push 到代码仓库Jenkins 根据触发条件拉取代码到CI/CD 服务器Jenkins 使用 Maven 将代码 build 成 jar 包Jenkins 使用 jar 包通过 Dockerfile 和 docker-compose.yml…...
日志收集笔记(Filebeat 日志收集、Logstash 日志过滤)
1 FileBeat Filebeat 是使用 Golang 实现的轻量型日志采集器,也是 Elasticsearch stack 里面的一员。本质上是一个 agent ,可以安装在各个节点上,根据配置读取对应位置的日志,并上报到相应的地方去。 1.1 FileBeat 安装与使用 …...
字节二面,原来是我对自动化测试的理解太浅薄了..
如何使用Python实现自动化测试 如果你入职一家新的公司,领导让你开展自动化测试,作为一个新人,你肯定会手忙脚乱,你会如何落地自动化测试呢?资深测试架构师沉醉将告诉你如何落地自动kan化测试,本次话题主要…...
2023雅虎邮箱不能注册?别急,这份教程教你成功注册雅虎邮箱
这几年,跨境电商的迅猛发展,越来越多人加入这片蓝海,跨境人拥有一个专业的邮箱账户显得尤为重要,它是商业交流和日常工作的必备工具。因此,雅虎邮箱成为了许多人的首选,全球范围内使用雅虎邮箱的人数是非常…...
Elasticsearch 自动补全 completion type
Elasticsearch 自带一种自动补全类型 completion 这种类型不在mapping文档里面有点坑。 先直接上例子。 建立 index,把我们要自动补全的字段设置为 completion 类型 或者直接设置为子类型 PUT /blogs_completion/ {"mappings": {"tech": {"properties…...
GB28181协议实现源码Android源码
一、GB28181规范 尽管在国标GB28181中并没有对“平台”进行明确的定义,但在规范中却多次提到“系统平台”、“管理平台”等词汇,在具体项目中、网络上的交流学习中,平台概念也是无处不在。笔者认为,GB28181平台就是视频联网系统中的上级平台、中间平台或下级平台,用于实现…...
HNU工训中心: 三人表决器及八人抢答器实验报告
工训中心的牛马实验 三人表决器: 实验目的 1) 辨识数字IC功能说明。 2) 测试数字集成门电路,掌握输出故障排除、使用注意事项。 3) 掌握逻辑函数搭建三人表决器。 2.实验资源 HBE硬件基础电路实验箱、万用表 74LS00与非门、74LS10 三个3输入与非门…...
split()用法注意事项
split()用法注意事项 这个要注意有些特殊的分割符,比如.,这个表示匹配任何字符,如果在split()中调用的话,会将任何字符都分隔开,比如: String[] split "se.lll".split("."); System…...
centos7配置静态网络常见问题归纳
系列相似配置与安装软件问题整理与归纳文章目录 安装pymysql库_pymysql库安装_张小鱼༒的博客-CSDN博客 解决pip更新的代码_pip更新代码_张小鱼༒的博客-CSDN博客 python当中的第三方wxPython库的安装解答_pip install wx_张小鱼༒的博客-CSDN博客 spark里面配置jdk后的编程…...
产品经理修炼指南【01】
最近看了点产品经理的书,觉得产品经理这个位置和程序员不太一样,程序员唯一考核的标准就是能不能完成工作任务、是否能完成工作代码,但是产品经理貌似不一样,就像我给刘曼说的,产品经理上可以接领导,下可以…...
NCRE计算机等级考试Python真题(十一)
第十一套试题1、以下选项对于import保留字描述错误的是:A.import可以用于导入函数库或者库中的函数B.可以使用from jieba import lcut 引入 jieba库C.使用import jieba as jb,引入函数库jieba,取别名jbD.使用import jieba 引入jieba库正确答案…...
cglib代理解析
工作原理 使用 <dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>3.3.0</version></dependency>对类和接口分别进行代理 DemoService package com.fanqiechaodan.user.service;/*** author fa…...
GFD563A101 3BHE046836R0101
GFD563A101 3BHE046836R0101关于高端涂布机张力控制系统方案的介绍高端涂布机张力控制系统方案涂布机是将具有某种功效的胶,或者油墨类物质均匀粘连在塑料薄膜、铝箔、纺织品等表面的机械设备。本系统从放卷到收卷共采用七台变频器,其中收放卷采用闭环张…...
SAP 采购定价过程字段解析
下面我们针对每一个字段进行解释和用途分析 : 1、 步骤:代表了创建PO时,哪个条件类型放到前面,哪个放到后面,如果步骤号相同,那就以谁先选择出来谁就在前面。 2、 计数:没有任何实际意义&a…...
一篇搞懂tcp,http,socket,socket连接池之间的关系
前言 作为一名开发人员我们经常会听到HTTP协议、TCP/IP协议、UDP协议、Socket、Socket长连接、Socket连接池等字眼,然而它们之间的关系、区别及原理并不是所有人都能理解清楚,这篇文章就从网络协议基础开始到Socket连接池,一步一步解释他们之…...
【JavaSE】对象的比较
哈喽,大家好!我是保护小周ღ,本期为大家带来的是Java中自定义类型(对象)的三种比较方式,equals 方法, Comparable 泛型接口, Comparator 泛型接口 。在日常编程中,我们常常会需要比较的问题&…...
Leetcode DAY 49~50:买卖股票的最佳时机 1 2 3 4
121. 买卖股票的最佳时机 1、贪心算法 class Solution { public:int maxProfit(vector<int>& prices) {//贪心int low INT_MAX;int res 0;for(int i 0; i < prices.size(); i) {low min(low, prices[i]); //左最小价格res max(res, prices[i] - low); //当前…...
Android Handler机制(二) Handler 实现原理
一. 前言 接上一篇文章为什么设计Handler , 我们来继续讲解一下Handler的实现原理, 俗话说一个好汉三个帮, 接下来一步一步引入各个主角,并说明它们在Handler机制中扮演的角色和作用. 二. Handler实现原理 首先我们先确定一个结论: 使用 Handler 是希望它被实例化在哪个线程&a…...
Elasticsearch教程(19) 详解mapping之keyword
Elasticsearch已升级,新版Elasticsearch keyword博客参考下面这篇【Elasticsearch教程8】Mapping字段类型之keyword_elasticsearch的keyword_亚瑟弹琴的博客-CSDN博客 1 前言 本文基于ES7.6,如果是之前版本,是有区别的。 ES支持的字段类型很…...
LeetCode算法复杂度分析(时间复杂度空间复杂度)
文章目录前言时间复杂度1.概述2.大O记法3.常见类型空间复杂度1.概述2.常见类型典型算法的复杂度分析1.递归算法2.哈希表前言 我们知道,研究算法的最终目的就是如何花更少的时间,如何占用更少的内存去完成相同的需求。 时间复杂度 1.概述 我们要计算算…...
VMware macOS支持解锁创新解决方案
VMware macOS支持解锁创新解决方案 【免费下载链接】unlocker 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 在虚拟化技术广泛应用的今天,VMware作为行业领先的虚拟化平台,却默认隐藏了对macOS操作系统的支持选项。这种商业策略导致…...
AI 辅助选题与开发:通信工程毕业设计的高效实践路径
作为一名即将毕业的通信工程专业学生,我深知毕业设计是大学四年知识的一次综合检验。选题难、技术栈杂、实现周期长,几乎是每个同学都会遇到的“拦路虎”。最近,我尝试将 AI 辅助开发工具融入毕设流程,从选题到代码实现࿰…...
3步终极方案:Ruffle Flash模拟器性能优化完全指南
3步终极方案:Ruffle Flash模拟器性能优化完全指南 【免费下载链接】ruffle A Flash Player emulator written in Rust 项目地址: https://gitcode.com/GitHub_Trending/ru/ruffle Ruffle是一个基于Rust语言开发的Flash Player模拟器,专为现代浏览…...
ESP32上玩转LVGL8:手把手教你解决移植中的常见坑(含ST7735S适配)
ESP32与LVGL8深度适配实战:ST7735S显示驱动的优化与避坑指南 在嵌入式GUI开发领域,LVGL(Light and Versatile Graphics Library)因其轻量级和高度可定制性已成为开源图形库的佼佼者。当ESP32这颗物联网明星芯片遇上LVGL8ÿ…...
深入HAL库:拆解STM32的UART DMA空闲中断接收机制,如何自己实现双缓冲与数据帧管理
STM32 HAL库UART DMA双缓冲机制深度解析与实战优化 在嵌入式开发领域,高效可靠的串口通信是实现设备间数据交互的基础能力。面对实时性要求严苛的工业场景或需要处理大量不定长数据的物联网应用,传统的轮询或中断接收方式往往力不从心。本文将深入剖析ST…...
Monorepo 架构管理多个子项目实现
目录 项目结构设计 核心配置实现 1. 工作区定义 pnpm-workspace.yaml 2. 根目录 .npmrc (解决幽灵依赖) 3. 共享组件示例 packages/ui/src/Button.vue 4. 工具库入口 packages/utils/src/index.ts 跨项目引用实现 在 admin 应用中引用共享组件 apps/admin/package.json…...
vDisk课表同步指南:Windows/Linux平台配置详解
vDisk课表同步指南:Windows/Linux平台配置详解本指南旨在为使用 vDisk IDV 云桌面解决方案的学校和培训机构,提供一份详尽的 vDisk 课表同步配置指南,重点介绍 Windows 和 Linux 平台下的配置要点。通过本文,您将了解如何利用 Exc…...
SpringBoot集成EasyAnimateV5-7b-zh-InP:电商商品动态展示系统开发
SpringBoot集成EasyAnimateV5-7b-zh-InP:电商商品动态展示系统开发 1. 引言 电商平台上的商品展示一直是影响用户购买决策的关键因素。传统的静态图片虽然能够展示产品外观,但缺乏生动性和互动性。随着AI技术的发展,现在我们可以通过图生视…...
StarRocks新手入门:如何用CloudDM个人版快速验证四种数据模型的特点?
StarRocks数据模型实战指南:用可视化工具快速掌握四大核心特性 刚接触StarRocks时,最让人困惑的莫过于四种数据模型的选择。官方文档虽然详细,但缺乏直观对比。本文将带你使用CloudDM个人版,通过同一组测试数据在四种模型下的不同…...
终极指南:如何利用Everything-LLMs-And-Robotics快速掌握AI机器人核心技术
终极指南:如何利用Everything-LLMs-And-Robotics快速掌握AI机器人核心技术 【免费下载链接】Everything-LLMs-And-Robotics 项目地址: https://gitcode.com/gh_mirrors/ev/Everything-LLMs-And-Robotics 在人工智能与机器人技术融合的浪潮中,你是…...
