1.Linux内核源码解析---cgroup实现之整体架构与初始化
2.用Docker搭建Ansible练习环境
3.无公网IP搭建PI节点的源码方法-补充持久模式修改方法
4.Metersphere 源码启动并做性能测试(一)
5.宝塔面板部署安装Wiki.js教程小白友好保姆级无须懂代码全程可视化
6.GitLab ARM64源码在信创统信UOS下的搭建
Linux内核源码解析---cgroup实现之整体架构与初始化
cgroup在年由Google工程师开发,于年被融入Linux 2.6.内核。源码它旨在管理不同进程组,源码监控一组进程的源码行为和资源分配,是源码Docker和Kubernetes的基石,同时也被高版本内核中的源码授权系统源码无后门LXC技术所使用。本文基于最早融入内核中的源码代码进行深入分析。
理解cgroup的源码核心,首先需要掌握其内部的源码常用术语,如子系统、源码层级、源码cgroupfs_root、源码cgroup、源码css_set、源码cgroup_subsys_state、源码cg_cgroup_link等。子系统负责控制不同进程的行为,例如CPU子系统可以控制一组进程在CPU上执行的时间占比。层级在内核中表示为cgroupfs_root,一个层级控制一批进程,层级内部绑定一个或多个子系统,每个进程只能在一个层级中存在,但一个进程可以被多个层级管理。cgroup以树形结构组织,每一棵树对应一个层级,层级内部可以关联一个或多个子系统。
每个层级内部包含的节点代表一个cgroup,进程结构体内部包含一个css_set,用于找到控制该进程的所有cgroup,多个进程可以共用一个css_set。cgroup_subsys_state用于保存一系列子系统,天眼指标系统源码数组中的每一个元素都是cgroup_subsys_state。cg_cgroup_link收集不同层级的cgroup和css_set,通过该结构可以找到与之关联的进程。
了解了这些概念后,可以进一步探索cgroup内部用于结构转换的函数,如task_subsys_state、find_existing_css_set等,这些函数帮助理解cgroup的内部运作。此外,cgroup_init_early和cgroup_init函数是初始化cgroup的关键步骤,它们负责初始化rootnode和子系统的数组,为cgroup的使用做准备。
最后,需要明确Linux内一切皆文件,cgroup基于VFS实现。内核启动时进行初始化,以确保系统能够正确管理进程资源。cgroup的初始化过程分为早期初始化和常规初始化,其中早期初始化用于准备cpuset和CPU子系统,确保它们在系统运行时能够正常工作。通过这些步骤,我们可以深入理解cgroup如何在Linux内核中实现资源管理和进程控制。
用Docker搭建Ansible练习环境
开始前,确保你的宿主机已经安装了Docker和Docker-compose这两款必备工具。为了进行Ansible的实践,我们需要在四台虚拟机上进行设置,分别为host1、host2、host3和ansible。 首先,全新大富源码按照以下步骤进行操作: 1. 创建一个清晰的文件结构,主要包括以下文件和文件夹:Dockerfile.node
Dockerfile
docker-compose.yml
/etc/ansible/ansible.cfg
/etc/ansible/hosts
每个文件都有特定的用途,例如,Dockerfile用于定义镜像的构建,docker-compose.yml则用于定义服务的部署配置。 接下来,利用Dockerfile和docker-compose.yml进行镜像构建和服务启动。按照文档指示,依次执行相关命令以构建你的Ansible环境。这一步涉及配置SSH密钥,以确保主机之间的安全通信。 如果你需要更直观的指导,可以查阅相关视频教程,那里会有详细的步骤演示和解释。无公网IP搭建PI节点的方法-补充持久模式修改方法
本文提供无公网IP搭建PINetwork节点的方法,包括最新镜像下载与安装步骤。
最新镜像大小为.M,镜像ID为fb1a。为了运行PINetwork节点,需要确保操作系统支持WSL2,并且已完成防火墙配置、hyper-v安装和Docker、WSL2的安装。
安装节点软件时,请从官网下载最新版本的PINetwork。
配置路由器后,开始拉取无公网IP专属容器镜像。
在命令提示符下下载镜像至Docker中,命令如下:
1. docker pull pinetwork/pi-node-docker
2. docker pull pinetwork/pinodedocker:v3.0
完成镜像下载后,使用以下命令运行容器并开启持久模式。脚本源码实例
1. 进入容器cli界面。
2. 查询容器ID,执行命令: docker ps。
3. 进入运行的pi-concensus容器,执行命令: docker exec -it 5e0fcf /bin/bash。
4. 执行命令:rm -f /opt/stellar/.docker-ephemeral。
5. 重启容器:docker resetart 5e0fcf。
注意:退出PINetwork软件,确保容器运行无冲突。确保docker命令使用全小写。
启动穿透容器时,使用以下命令:docker run -v /c/users/lenovo/appdata/roaming:/var/pi/ --privileged --name pi-node pinetwork/pinodedocker:v3.0 /usr/sbin/init。
运行成功后,请稍等3分钟左右会自动退出命令CMD。如果在服务器过载的情况下,此容器能大幅提高节点有效性。
运行两个容器pi-node和pi-consensus,手动启动stellar/ese7en/node-port-test:latest端口检测容器。同步区块时,查看Consensus container enabled: Yes确认许可已下发。同步长时间为1时,请联系Q寻求帮助。
完成上述步骤后,你已成功成为PINetwork节点,享受各种福利待遇。
Metersphere 源码启动并做性能测试(一)
最近发现了一个开源测试平台——Metersphere,其在GitHub上广受好评。平台以Java语言编写,功能丰富,包括测试管理、奥森客服源码接口测试、UI测试和性能测试。因此,我决定在本地尝试启动并进行性能测试。
Metersphere的架构主要包括前端Vue和后端SpringBoot,数据库使用MySQL,缓存则依赖Redis。为了本地启动MS项目,首先需准备环境,参考其官方文档进行操作。在启动项目时,可能会遇到找不到特定类的错误,通常这是由于依赖问题导致的。解决这类问题,最常见的方式是注释掉相关的依赖和引用。如果遇到启动时出现依赖bean的问题,这可能是因为找不到对应的bean注入或调用方法时找不到对应的类。这种问题通常需要开发人员通过排查找到问题根源并解决,百度等资源是查找解决方案的有效途径。
启动项目后,会观察到后台服务运行正常,接下来启动前端服务。执行`npm run serve`命令,如果项目已打包,这一步骤通常能成功启动前端。遇到前端加载失败的问题,可能需要重新打包项目,确保所有资源文件都能正常加载。
接下来,进行性能测试的准备。Metersphere的性能测试流程包括发起压力测试、Node-controller拉起Jmeter执行测试、数据从Kafka流中获取并计算后存入MySQL数据库。在启动性能测试过程中,首先拉取Node-controller项目,需修改Jmeter路径,并确保本地环境支持Docker,因为Node-controller依赖Docker容器进行性能测试。Data-Streaming服务则负责解析Kafka数据并进行计算,需要确保Kafka服务已启动。
启动Metersphere的backend和frontend后,配置压测资源池,添加本地Node-controller服务的地址和端口。性能测试分为通过JMX和引用接口自动化场景两种方式,可以模拟真实的网络请求。配置压力参数后,保存并执行性能测试,查看报告以了解测试结果。Metersphere的报告功能较为全面,值得深入研究。
本地启动并执行性能测试的流程大致如上所述。在遇到问题时,查阅官方文档和利用百度等资源是解决问题的关键。Metersphere的官方文档提供了详尽的信息,对新用户来说是宝贵的学习资源。若仍有问题,可以考虑加入社区群寻求帮助。
宝塔面板部署安装Wiki.js教程小白友好保姆级无须懂代码全程可视化
Wiki.js介绍 Wiki.js是一个基于NodeJS技术的开源项目,专为多人协作和知识管理而设计。它提供了一个简洁美观的界面,具有灵活的权限管理,并支持多种编辑器、验证方式、备份存储、搜索引擎等功能。这使得它特别适合小团队使用,不仅方便内容管理和阅读,还支持协同创作。 技术栈方面,Wiki.js采用了Node.js、PostgreSQL、Vue.js、Docker等现代技术,提供了一种类似WordPress的用户体验,深受用户喜爱。 Wiki.js的优势包括:跨平台安装:几乎适用于任何操作系统。
管理强大:使用直观的管理界面管理所有方面。
高性能:基于快速的Node.js引擎。
定制性:完全自定义外观,包括浅色和深色主题。
隐私保护:提供公共、私人或混合访问模式。
可扩展性:在从树莓派到高性能云服务器的任何设备上都能智能地利用资源。
项目资源:官网
Github
官方文档
部分功能亮点:自定义导航栏
文档编辑历史
网站分析
主题设置
团队人员管理
存储管理
搜索引擎管理
部署流程: 使用宝塔面板和PostgreSQL数据库安装与部署Wiki.js。 安装环境要求:系统:CentOS 8.2 位(宝塔面板)
Wiki.js版本:v2.5.
数据库版本:PostgreSQL
部署步骤包括:下载并解压源代码
安装PostgreSQL数据库
安装Node.js
配置.yml文件
运行wikijs服务
域名解析与SSL证书配置
开放服务器端口
安装Supervision管理器
安装完毕后,通过浏览器访问域名进行操作。 使用指南:设置中文语言包
下载并应用简体中文语言包
时区设置
结语: 整个部署过程尽管复杂,但对于知识管理和团队协作非常有帮助。通过这篇文章,您可以了解从安装到使用Wiki.js的全过程,同时也学会了一些基本的管理技巧。希望这篇文章对您有帮助,欢迎在评论区提问。祝您在使用Wiki.js时享受写作的乐趣。GitLab ARM源码在信创统信UOS下的搭建
GitLab是一个基于Ruby on Rails语言开发的开源应用,提供私有化的Git项目仓库,可通过Web界面进行访问和管理。GitLab官方提供了多种安装方式,包括通过操作系统软件源安装、Docker容器部署以及源代码自编译安装。然而,GitLab官方构建的软件包和镜像主要针对X架构,并未提供针对ARMv8的版本。UOS操作系统支持多种CPU架构(AMD、ARM、MIPS、SW)和六种国产CPU平台(鲲鹏、龙芯、申威、海光、兆芯、飞腾)以及Intel/AMD的主流CPU,UOSV基于Debian stable,内核为4.,支持多种架构。由于GitLab官方Omnibus安装包并未支持arm架构,因此需要通过源码编译来安装GitLab-ce .1-stable在UOSV arm架构上。
在部署GitLab-ce .1-stable之前,首先需要搭建编译环境,包括Ruby 2.7.4、redis 6.2.4、git 2..0、Go:.、Postgres: 、Node: .x、Nginx:1..1。编译过程较为平顺,但安装Ruby、Node和Go时需要注意选择国内镜像源以确保顺利编译。GitLab-ce:-1-stable版本要求Git2..x或以上版本,推荐使用Gitaly提供的git版本。UOSV 版本若选择调试工具包,则系统自带的git版本不符合要求,需要手动安装Gitaly所提供的git版本,确保版本满足GitLab要求。安装完成后,系统会显示版本为2..0,满足要求。此外,还需安装GraphicsMagick支持GitLab引入的自定义图标功能,以及安装Postfix邮件服务器和exiftool以支持GitLab Workhorse功能。Ruby的安装也非常重要,更换国内Ruby Gem源能够提高编译过程的稳定性。
在完成编译环境搭建后,需为GitLab创建一个名为git的用户。GitLab .1及以后版本仅支持PostgreSQL数据库,GitLab-ce .1-stable需要PostgreSQL 或以上版本,并且需要pg_trgm扩展和btree_gist扩展。GitLab .0及以后版本要求Redis版本4.0或以上,推荐使用6.0或以上版本。部署GitLab-ce .1-stable需要编译三个部分:gitLab核心代码、gitlab-shell和GitLab-Workhorse。编译完成后,主要目录结构会根据部署环境进行相应调整。
配置GitLab的各个组件时,需要将源码配置调整为已搭建环境的配置。主要修改数据库配置为已安装的PostgreSQL 版本。安装过程中可能会遇到一些小问题,如使用sudo执行某些命令时的超时错误。解决这类问题通常需要检查和调整环境变量,确保git账号的环境变量能够正常工作。例如,通过修改/etc/sudoers文件,确保在执行sudo命令时保留所需的环境变量,如GOPROXY。安装完成后,GitLab及其环境应已正确配置,系统架构识别为arm,GitLab版本为.1,redis版本未读取但不影响使用。至此,GitLab在UOSV arm架构上成功部署完毕。