当前位置: 首页 > news >正文

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

三、选择建议

  1. 个人/小团队:

    • 轻量自托管:Gitea。
    • 云端免费:GitHub(私有库免费)、Codeberg。
  2. 企业级需求:

    • 自托管:GitLab CE/EE。
    • 云端服务:GitHub Enterprise、Azure DevOps。
  3. 生态集成:

    • 微软生态: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)和管理员账户。

常见问题解决

  1. 端口冲突

    • 修改GitLab/Gitea的默认端口(如8080)并更新防火墙规则。
  2. 数据库配置错误

    • 确保PostgreSQL/MySQL服务已启动,并正确配置用户名和权限。
  3. SELinux限制

    • 临时禁用:sudo setenforce 0
    • 永久禁用:修改 /etc/selinux/configSELINUX=disabled
  4. 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学习笔记(三十五):搭建代码托管服务器

以下是主流的代码托管软件分类及推荐&#xff0c;涵盖自托管和云端方案&#xff0c;您可根据团队规模、功能需求及资源情况选择&#xff1a; 一、自托管代码托管平台&#xff08;可私有部署&#xff09; 1. GitLab 简介: 功能全面的 DevOps 平台&#xff0c;支持代码托管、C…...

Python的pdf2image库将PDF文件转换为PNG图片

您可以使用Python的pdf2image库将PDF文件转换为PNG图片。以下是一个完整的示例&#xff0c;包含安装步骤、代码示例和注意事项。 安装依赖库 首先&#xff0c;您需要安装pdf2image库&#xff1a; pip install pdf2imagepdf2image依赖于poppler库来解析PDF文件。 Windows系统…...

算法-二叉树篇26-将有序数组转换为二叉搜索树

将有序数组转换为二叉搜索树 力扣题目链接 题目描述 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 解题思路 很简单的遇到递归题目&#xff0c;对数组取半&#xff0c;然后构建中间节点作为该数组对应的…...

使用Python SciPy库来计算矩阵的RCS特征值并生成极坐标图

在Python中&#xff0c;计算矩阵的RCS&#xff08;Rayleigh商迭代法&#xff09;特征值通常涉及使用数值线性代数库&#xff0c;如NumPy或SciPy。RCS&#xff08;Rayleigh商迭代法&#xff09;是一种用于计算矩阵特征值和特征向量的迭代方法。 以下是一个简单的示例&#xff0…...

车载以太网-基于linux的ICMP协议

对于车载以太网-ICMP的技术要求: /** ICMP报文格式解析* -----------------* ICMP协议用于网络诊断和错误报告,常见应用包括Ping测试。* ICMP报文结构包括:IP头部、ICMP头部和ICMP数据部分。* 下面详细介绍每个部分的结构、字段的作用以及如何解析它们。* * ICMP头部结构:*…...

WP 高级摘要插件:助力 WordPress 文章摘要精准自定义显示

wordpress插件介绍 “WP高级摘要插件”功能丰富&#xff0c;它允许用户在WordPress后台自定义文章摘要。 可设置摘要长度&#xff0c;灵活调整展示字数&#xff1b;设定摘要最后的显示字符&#xff0c; 如常用的省略号等以提示内容未完整展示&#xff1b;指定允许在摘要中显示…...

【嵌入式】MCU开发基础知识速通

一、MCU开发常用编程语言及语法要求 MCU&#xff08;微控制器单元&#xff09;开发常用的编程语言包括C语言、C、汇编语言和Python&#xff0c;每种语言都有其适用场景和优势。 C语言&#xff1a;C语言因其接近硬件特性和高效执行效率而广泛应用于MCU开发。它具有丰富的内置函…...

Yocto + 树莓派摄像头驱动完整指南

—— 从驱动配置、Yocto 构建&#xff0c;到 OpenCV 实战 在树莓派上运行摄像头&#xff0c;在官方的 Raspberry Pi OS 可能很简单&#xff0c;但在 Yocto 项目中&#xff0c;需要手动配置驱动、设备树、软件依赖 才能确保摄像头正常工作。本篇文章从 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 中进行&#xff0c;无需一行 Java/Scala 代码&#xff0c;也无需安装 IDE。 这篇教程将展示如何基于 Flink CDC YAML 快速构建 MySQL 到 Kafka 的 Streaming ELT 作业&#xff0c;包含整库同步、表结构变更同步演示和关键参数介绍。 准备阶段…...

Hue UI展示中文

个人博客地址&#xff1a;Hue UI展示中文 | 一张假钞的真实世界 如果使用开发分支代码如master分支&#xff09;编译安装&#xff0c;需要自己编译语言文件。例如Hue安装目录为“/opt/hue”&#xff0c;则安装后执行以下命令&#xff1a; $ cd /opt/hue $ make locales 如果…...

(十 一)趣学设计模式 之 组合模式!

目录 一、 啥是组合模式&#xff1f;二、 为什么要用组合模式&#xff1f;三、 组合模式的实现方式四、 组合模式的优缺点五、 组合模式的应用场景六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方式&#xff0c;可以多多支…...

安全模块设计: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是一个可视化的模块&#xff0c;该模块功能强大&#xff0c;可用于深度学习网络模型训练查看模型结构和训练效果&#xff08;…...

Redis安装及其AnotherRedisDesktopManagera安装使用

一、Redis安装 1. 下载Redis安装包 通过网盘分享的文件&#xff1a;Redis 链接: https://pan.baidu.com/s/1elAT8mk3EIoYQQ3WoVVoNg?pwd7yrz 提取码: 7yrz 2. 解压Redis安装包 下载完成后&#xff0c;将Redis安装包解压到一个指定的目录&#xff0c;例如&#xff1a;C:\Re…...

C# dll文件的反编译获取源码

目录 前言操作流程结论 前言 上一篇文章介绍了将C# cs类文件加密为dll文件&#xff0c;在此给大家写一篇关于反编译dll文件的文章。 操作流程 首先&#xff0c;我们需要准备一个C#反编译工具&#xff0c;我这里用的是免费的软件JetBrains dotPeek&#xff0c;类似的有很多&am…...

大语言模型学习--LangChain

LangChain基本概念 ReAct学习资料 https://zhuanlan.zhihu.com/p/660951271 LangChain官网地址 Introduction | &#x1f99c;️&#x1f517; LangChain LangChain是一个基于语言模型开发应用程序的框架。它可以实现以下应用程序&#xff1a; 数据感知&#xff1a;将语言模型…...

Spark内存迭代计算

一、宽窄依赖 窄依赖&#xff1a;父RDD的一个分区数据全部发往子RDD的一个分区 宽依赖&#xff1a;父RDD的一个分区数据发往子RDD的多个分区&#xff0c;也称为shuffle 二、Spark是如何进行内存计算的&#xff1f;DAG的作用&#xff1f;Stage阶段划分的作用&#xff1f; &a…...

Python之参数星号(*)使用笔记

背景 在学习python时发现方法调用和方法定义会经常发现有带星号的标记&#xff0c;为了弄明白是怎么使用的。特此做个笔记。 一、参数符号对比速查表 符号类使用场景作用描述示例无符号函数定义/调用普通位置参数或关键字参数.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 的高…...

企业级离线OCR深度解析:5大策略实现高性能文字识别

企业级离线OCR深度解析&#xff1a;5大策略实现高性能文字识别 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片&#xff0c;PDF文档识别&#xff0c;排除水印/页眉页脚&#xff0c;扫描/生成二维码。内置多国语言库…...

嵌入式AI开发实战:从MCU到模型部署全流程

1. 嵌入式AI开发实战&#xff1a;从入门到项目落地作为一名在嵌入式领域摸爬滚打多年的工程师&#xff0c;我深知AI技术给这个传统行业带来的变革。记得2018年第一次接触基于MCU的简单图像识别时&#xff0c;那种"原来嵌入式设备也能做AI"的震撼感至今难忘。如今&…...

深入解析Camera-IMU联合标定:从理论到实践

1. 为什么需要Camera-IMU联合标定&#xff1f; 在机器人定位和三维重建领域&#xff0c;相机和IMU&#xff08;惯性测量单元&#xff09;是最常用的传感器组合。相机能提供丰富的环境特征信息&#xff0c;但在快速运动或弱光环境下容易失效&#xff1b;IMU可以稳定输出运动数据…...

PWM技术原理与工程实践全解析

1. PWM技术基础解析脉冲宽度调制&#xff08;PWM&#xff09;作为现代电子电力控制的核心技术&#xff0c;其本质是通过调节脉冲信号的导通时间比例来实现对功率的有效控制。我第一次接触这个概念是在调试直流电机调速项目时&#xff0c;当时被其精妙的设计思想所震撼。1.1 关键…...

AG-UI协议实战:构建智能体驱动的动态前端交互系统

1. AG-UI协议&#xff1a;智能体与前端交互的新范式 第一次听说AG-UI协议时&#xff0c;我正在为一个电商项目头疼——后台AI生成的商品推荐总需要手动同步到前端&#xff0c;代码里到处是setState和事件监听。直到发现这个协议&#xff0c;才明白原来智能体和前端可以像两个老…...

seo sem公司如何制定营销策略

SEO SEM公司如何制定有效的营销策略 在当今数字化时代&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;和SEM&#xff08;搜索引擎营销&#xff09;已经成为企业推广和品牌建立的关键组成部分。无论是中小企业还是大型跨国公司&#xff0c;它们都需要高效、精准的营销策略…...

微信好友检测神器:一键识别谁删了你,轻松管理社交圈

微信好友检测神器&#xff1a;一键识别谁删了你&#xff0c;轻松管理社交圈 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFr…...

如何突破Cursor AI使用限制?解锁永久免费Pro功能的终极指南

如何突破Cursor AI使用限制&#xff1f;解锁永久免费Pro功能的终极指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached you…...

浅谈MIKEURBAN计算进度条停止的解决方法

01 问题昨天晚上&#xff0c;一个同事拿着笔记本对着我说&#xff0c;为什么我的MIKE URBAN计算进度条一直停滞在5%&#xff0c;停止了。我说是不是兼容问题&#xff0c;要不重新安装下软件吧。最终还是很感谢某同事找到了解决方法。02 解决方法MIKE URBAN低版本的通常分为了32…...

GLM-OCR完整教程:部署、使用、API、案例,一篇搞定所有

GLM-OCR完整教程&#xff1a;部署、使用、API、案例&#xff0c;一篇搞定所有 1. GLM-OCR简介与核心优势 GLM-OCR是一款基于先进多模态架构的OCR识别工具&#xff0c;专为解决复杂文档理解问题而设计。与市面上大多数OCR工具不同&#xff0c;它不仅能识别文字&#xff0c;还能…...