OpenEuler学习笔记(三十五):搭建代码托管服务器
以下是主流的代码托管软件分类及推荐,涵盖自托管和云端方案,您可根据团队规模、功能需求及资源情况选择:


一、自托管代码托管平台(可私有部署)
1. GitLab
- 简介: 功能全面的 DevOps 平台,支持代码托管、CI/CD、问题跟踪等。
- 特点:
- 开源(社区版 CE)和商业版(EE)可选。
- 集成自动化测试、容器仓库、Kubernetes 管理。
- 资源占用较高(建议 4GB 内存以上)。
- 官网: https://about.gitlab.com
2. Gitea
- 简介: 轻量级自托管 Git 服务,适合个人或小团队。
- 特点:
- 资源占用低(100MB 内存即可运行)。
- 安装简单,支持 SQLite/MySQL/PostgreSQL。
- 基础功能齐全,插件生态较弱。
- 官网: https://gitea.io
二、云端托管平台(无需自部署)
1. GitHub
- 简介: 全球最大的代码托管平台,微软旗下。
- 特点:
- 开源项目免费,私有仓库按人数收费。
- 集成 Actions CI/CD、Pages 静态站点。
- 官网: https://github.com
2. GitLab.com
- 简介: GitLab 的云端托管版本。
- 特点:
- 免费私有仓库,企业级功能需付费。
- 与自托管版功能同步。
- 官网: https://gitlab.com
3. Azure DevOps
- 简介: 微软推出的云端 DevOps 平台。
- 特点:
- 免费基础功能,支持 Git 和 TFVC 仓库。
- 深度集成 Azure 云服务。
- 官网: https://azure.microsoft.com/services/devops
三、选择建议
-
个人/小团队:
- 轻量自托管:Gitea。
- 云端免费:GitHub(私有库免费)、Codeberg。
-
企业级需求:
- 自托管:GitLab CE/EE。
- 云端服务:GitHub Enterprise、Azure DevOps。
-
生态集成:
- 微软生态:Azure DevOps + VS Code。
在OpenEuler上搭建代码托管服务器(如GitLab或Gitea)的步骤如下,分为两种常见方案:

方案一:使用 GitLab 搭建代码托管服务器
1. 安装依赖
# 更新系统
sudo dnf update -y# 安装必要工具
sudo dnf install -y curl policycoreutils openssh-server postfix# 启动并设置SSH和Postfix开机自启
sudo systemctl enable sshd
sudo systemctl start sshd
sudo systemctl enable postfix
sudo systemctl start postfix
2. 添加GitLab仓库并安装
# 添加GitLab CE仓库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash# 安装GitLab CE(替换为你服务器的域名或IP)
sudo EXTERNAL_URL="http://your-server-ip-or-domain" dnf install -y gitlab-ce
3. 配置GitLab
# 编辑配置文件(可选,默认已自动生成)
sudo vim /etc/gitlab/gitlab.rb
# 修改 `external_url` 为你的实际地址,例如:
# external_url 'http://your-server-ip-or-domain'# 应用配置
sudo gitlab-ctl reconfigure
4. 防火墙设置
# 开放HTTP/HTTPS端口
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
5. 访问GitLab
- 浏览器访问
http://your-server-ip-or-domain - 首次登录需设置管理员密码(默认用户
root)。
方案二:使用 Gitea(轻量级替代)
1. 安装依赖
sudo dnf install -y git mysql postgresql redis
2. 下载并安装Gitea
# 下载最新版Gitea(替换为最新版本号)
wget -O /tmp/gitea https://dl.gitea.io/gitea/1.20.0/gitea-1.20.0-linux-amd64
sudo mv /tmp/gitea /usr/local/bin/gitea
sudo chmod +x /usr/local/bin/gitea# 创建系统用户
sudo useradd -m -d /var/lib/gitea -s /bin/bash gitea
3. 配置Systemd服务
sudo vim /etc/systemd/system/gitea.service
添加以下内容:
[Unit]
Description=Gitea
After=network.target[Service]
User=gitea
Group=gitea
WorkingDirectory=/var/lib/gitea
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always[Install]
WantedBy=multi-user.target
4. 初始化配置
# 创建配置目录
sudo mkdir -p /etc/gitea
sudo chown gitea:gitea /etc/gitea# 启动服务
sudo systemctl daemon-reload
sudo systemctl enable --now gitea
5. 访问Gitea
- 浏览器访问
http://your-server-ip:3000 - 首次访问会进入安装向导,按提示配置数据库(推荐SQLite或MySQL)和管理员账户。
常见问题解决
-
端口冲突
- 修改GitLab/Gitea的默认端口(如
8080)并更新防火墙规则。
- 修改GitLab/Gitea的默认端口(如
-
数据库配置错误
- 确保PostgreSQL/MySQL服务已启动,并正确配置用户名和权限。
-
SELinux限制
- 临时禁用:
sudo setenforce 0 - 永久禁用:修改
/etc/selinux/config中SELINUX=disabled
- 临时禁用:
-
GitLab启动失败
- 查看日志:
sudo gitlab-ctl tail
- 查看日志:
备份与维护
-
GitLab备份
sudo gitlab-rake gitlab:backup:create -
Gitea备份
直接备份/var/lib/gitea目录。 -
更新版本
# GitLab sudo dnf update gitlab-ce# Gitea sudo systemctl stop gitea sudo wget -O /usr/local/bin/gitea https://dl.gitea.io/gitea/<new-version>/gitea-<version>-linux-amd64 sudo systemctl start gitea
总结
- GitLab:功能全面,适合企业级使用,但资源占用较高。
- Gitea:轻量快速,适合个人或小团队。
根据需求选择方案,并确保服务器资源(CPU、内存、存储)充足。
相关文章:
OpenEuler学习笔记(三十五):搭建代码托管服务器
以下是主流的代码托管软件分类及推荐,涵盖自托管和云端方案,您可根据团队规模、功能需求及资源情况选择: 一、自托管代码托管平台(可私有部署) 1. GitLab 简介: 功能全面的 DevOps 平台,支持代码托管、C…...
Python的pdf2image库将PDF文件转换为PNG图片
您可以使用Python的pdf2image库将PDF文件转换为PNG图片。以下是一个完整的示例,包含安装步骤、代码示例和注意事项。 安装依赖库 首先,您需要安装pdf2image库: pip install pdf2imagepdf2image依赖于poppler库来解析PDF文件。 Windows系统…...
算法-二叉树篇26-将有序数组转换为二叉搜索树
将有序数组转换为二叉搜索树 力扣题目链接 题目描述 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 解题思路 很简单的遇到递归题目,对数组取半,然后构建中间节点作为该数组对应的…...
使用Python SciPy库来计算矩阵的RCS特征值并生成极坐标图
在Python中,计算矩阵的RCS(Rayleigh商迭代法)特征值通常涉及使用数值线性代数库,如NumPy或SciPy。RCS(Rayleigh商迭代法)是一种用于计算矩阵特征值和特征向量的迭代方法。 以下是一个简单的示例࿰…...
车载以太网-基于linux的ICMP协议
对于车载以太网-ICMP的技术要求: /** ICMP报文格式解析* -----------------* ICMP协议用于网络诊断和错误报告,常见应用包括Ping测试。* ICMP报文结构包括:IP头部、ICMP头部和ICMP数据部分。* 下面详细介绍每个部分的结构、字段的作用以及如何解析它们。* * ICMP头部结构:*…...
WP 高级摘要插件:助力 WordPress 文章摘要精准自定义显示
wordpress插件介绍 “WP高级摘要插件”功能丰富,它允许用户在WordPress后台自定义文章摘要。 可设置摘要长度,灵活调整展示字数;设定摘要最后的显示字符, 如常用的省略号等以提示内容未完整展示;指定允许在摘要中显示…...
【嵌入式】MCU开发基础知识速通
一、MCU开发常用编程语言及语法要求 MCU(微控制器单元)开发常用的编程语言包括C语言、C、汇编语言和Python,每种语言都有其适用场景和优势。 C语言:C语言因其接近硬件特性和高效执行效率而广泛应用于MCU开发。它具有丰富的内置函…...
Yocto + 树莓派摄像头驱动完整指南
—— 从驱动配置、Yocto 构建,到 OpenCV 实战 在树莓派上运行摄像头,在官方的 Raspberry Pi OS 可能很简单,但在 Yocto 项目中,需要手动配置驱动、设备树、软件依赖 才能确保摄像头正常工作。本篇文章从 BSP 驱动配置、Yocto 关键…...
swift 开发效率提升工具
安装github copliot for xcode github/CopilotForXcode brew install --cask github-copilot-for-xcode安装swiftformat for xcode brew install swiftformatXcode Swift File代码格式化-SwiftFormat...
基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成
本教程的演示都将在 Flink CDC CLI 中进行,无需一行 Java/Scala 代码,也无需安装 IDE。 这篇教程将展示如何基于 Flink CDC YAML 快速构建 MySQL 到 Kafka 的 Streaming ELT 作业,包含整库同步、表结构变更同步演示和关键参数介绍。 准备阶段…...
Hue UI展示中文
个人博客地址:Hue UI展示中文 | 一张假钞的真实世界 如果使用开发分支代码如master分支)编译安装,需要自己编译语言文件。例如Hue安装目录为“/opt/hue”,则安装后执行以下命令: $ cd /opt/hue $ make locales 如果…...
(十 一)趣学设计模式 之 组合模式!
目录 一、 啥是组合模式?二、 为什么要用组合模式?三、 组合模式的实现方式四、 组合模式的优缺点五、 组合模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支…...
安全模块设计:token服务、校验注解(开启token校验、开启签名校验、允许处理API日志)、获取当前用户信息的辅助类
文章目录 引言pom.xmlI 校验注解ApiValidationII token服务TokenService获取当前用户信息的辅助类III 域登录接口响应数据登陆用户信息引言 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/PO…...
Python学习第十八天之深度学习之Tensorboard
Tensorboard 1.TensorBoard详解2.安装3.使用4.图像数据格式的一些理解 后续会陆续在词博客上更新Tensorboard相关知识 1.TensorBoard详解 TensorBoard是一个可视化的模块,该模块功能强大,可用于深度学习网络模型训练查看模型结构和训练效果(…...
Redis安装及其AnotherRedisDesktopManagera安装使用
一、Redis安装 1. 下载Redis安装包 通过网盘分享的文件:Redis 链接: https://pan.baidu.com/s/1elAT8mk3EIoYQQ3WoVVoNg?pwd7yrz 提取码: 7yrz 2. 解压Redis安装包 下载完成后,将Redis安装包解压到一个指定的目录,例如:C:\Re…...
C# dll文件的反编译获取源码
目录 前言操作流程结论 前言 上一篇文章介绍了将C# cs类文件加密为dll文件,在此给大家写一篇关于反编译dll文件的文章。 操作流程 首先,我们需要准备一个C#反编译工具,我这里用的是免费的软件JetBrains dotPeek,类似的有很多&am…...
大语言模型学习--LangChain
LangChain基本概念 ReAct学习资料 https://zhuanlan.zhihu.com/p/660951271 LangChain官网地址 Introduction | 🦜️🔗 LangChain LangChain是一个基于语言模型开发应用程序的框架。它可以实现以下应用程序: 数据感知:将语言模型…...
Spark内存迭代计算
一、宽窄依赖 窄依赖:父RDD的一个分区数据全部发往子RDD的一个分区 宽依赖:父RDD的一个分区数据发往子RDD的多个分区,也称为shuffle 二、Spark是如何进行内存计算的?DAG的作用?Stage阶段划分的作用? &a…...
Python之参数星号(*)使用笔记
背景 在学习python时发现方法调用和方法定义会经常发现有带星号的标记,为了弄明白是怎么使用的。特此做个笔记。 一、参数符号对比速查表 符号类使用场景作用描述示例无符号函数定义/调用普通位置参数或关键字参数.def func(a, b)*函数定义收集多余位置参数为元组…...
一文掌握 Scrapy 框架的详细使用,包括实战案例
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. Scrapy 简介2. Scrapy 的核心组件3. 安装 Scrapy4. 创建 Scrapy 项目4.1 创建项目4.2 创建 Spider5. 编写 Spider5.1 定义 Item5.2 编写 Spider 逻辑6. 运行 Scrapy 爬虫6.1 运行爬虫6.2 保存爬取数据7. Scrapy 的高…...
Python项目框架解析
...
吃透Agent Runtime九大核心设计,从基础跑通到工业级稳定落地
在当下人工智能飞速发展的时代,智能Agent已经成为大模型落地应用最主流的形态之一。从日常智能问答,自动化办公脚本,到复杂的项目工程自主开发,业务流程自主运维,各行各业都在尝试借助Agent解放人力成本,提…...
LeetCode 15:三数之和 | 双指针法详解与进阶应用
LeetCode 15:三数之和 | 双指针法详解与进阶应用 引言 三数之和(3Sum)是 LeetCode 中一道经典的高频面试题,编号为 15,属于 Medium 难度范畴。这道题的核心要求是在一个整数数组中找出所有不重复的三元组,使…...
双十一话务峰值8倍冲击_智能语音机器人扛峰技术方案
双十一话务峰值8倍冲击:国内主流的智能语音机器人推荐这样扛本文从技术架构视角,解析智能语音机器人在电商大促场景下应对话务峰值冲击的核心方案。一、电商大促场景下的客服联络核心挑战 每年双十一、618 等大促节点,电商零售行业的话务量都…...
chatgpt-web-midjourney-proxy的Tauri桌面应用:跨平台AI客户端构建终极指南
chatgpt-web-midjourney-proxy的Tauri桌面应用:跨平台AI客户端构建终极指南 想要在本地轻松体验ChatGPT、Midjourney和GPTs的强大功能吗?chatgpt-web-midjourney-proxy项目的Tauri桌面应用为你提供了完美的解决方案!这款跨平台AI客户端让AI助…...
APK Installer:重新定义Windows运行Android应用的突破性方案
APK Installer:重新定义Windows运行Android应用的突破性方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在Windows系统上运行Android应用的传统方案往往…...
基于 PyTorch 的 TransU-Net 模型进行不同城市建筑物的精准提取 来继续遥感图像语义分割
基于 PyTorch 的 TransU-Net 模型进行不同城市建筑物的精准提取 来继续遥感图像语义分割 遥感图像语义分割,遥感建筑物数据集,基于Pytorch框架,针对不同城市建筑物精准提取。 遥感图像中包含丰富的地理空间信息,从遥感图像中了…...
别再为多设备同步发愁了!手把手教你用NI-DAQmx的‘通道扩展’功能搞定多机箱数据采集
多设备数据采集同步实战:NI-DAQmx通道扩展功能深度解析 在工业测试与科研数据采集领域,工程师们经常面临一个棘手问题:当单个数据采集设备的通道数无法满足需求时,如何实现多个设备的无缝协同工作?想象一下汽车ECU测试…...
一招提升引用率:如何让你的数据成为AI的“唯一信源”?
随着生成式AI全面渗透搜索场景,传统SEO的流量逻辑正在彻底重构。过去外贸网站优化核心是抢占搜索引擎关键词排名,而当下慧新AI GEO(生成式引擎优化)成为新核心——AI模型不再单纯展示网页链接,而是整合全网数据生成答案…...
【往届均已完成EI检索!】第三届遥感测绘与全球定位算法国际学术会议(RSGPA 2026)
第三届遥感测绘与全球定位算法国际学术会议(RSGPA 2026)将于2026年6月13日举办线上会议。会议主要围绕遥感测绘与定位算法等研究领域展开讨论。本次会议旨在为相关领域的研究人员提供一个权威的国际交流平台,交流全球相关领域科技学术最新发展…...
