Ubuntu24.04搭建GitLab服务器

Ubuntu24.04搭建GitLab服务器

简述

GitLab是一个功能强大的DevOps平台,涵盖了从项目规划、源代码管理到持续集成、部署和监控的整个开发生命周期。下面这个流程图梳理了GitLab的核心功能模块和学习路径:

在这里插入图片描述

安装GitLab

  1. 安装依赖包
sudoapt update sudoaptinstall -y curl openssh-server ca-certificates postfix 
  • 在安装postfix(邮件服务器)时,可能会弹出配置窗口。如果你有域名并计划用于GitLab,可以选择"Internet Site"并设置域名;如果暂时不需要邮件功能或没有域名,也可以先跳过,后续再配置。
  1. 添加GitLab软件仓库并安装
    接下来,我们通过官方仓库安装GitLab。这里提供了官方源和国内镜像源两种方式,国内镜像通常速度更快。
  • 使用官方源安装:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh |sudobashsudoaptinstall gitlab-ce 
  • 使用国内清华镜像源安装(推荐)
# 将镜像源添加到源列表sudovim /etc/apt/sources.list.d/gitlab-ce.list # 在文件中添加以下行 deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu noble main # 安装信任证书并更新软件列表curl https://packages.gitlab.com/gpg.key 2> /dev/null |sudo apt-key add - &>/dev/null sudoapt update sudoaptinstall gitlab-ce 

安装成功后打印个很有创艺的Gitlab Logo:

在这里插入图片描述

配置GitLab

  1. 配置外部访问地址(关键步骤)
    GitLab最重要的配置是设置其外部访问地址。编辑配置文件/etc/gitlab/gitlab.rb,找到external_url项。
  • 如果你有域名(例如gitlab.example.com):
external_url 'http://gitlab.example.com'
  • 如果你只有IP地址(例如192.168.0.136):
external_url 'http://192.168.0.136'

注意:一定要带’http://’ 或安全访问’https://’ 需要安装认证证书

  • 注意:如果服务器的80端口已被占用,或者你想使用其他端口,可以在IP或域名后加上端口号,例如 http://192.168.0.136:8080

可以使用如下命令查看指定端口是否被占用,没有输出为未占用:

sudo ss -tulpn |grep80# 或sudonetstat -tulpn |grep80
  1. 应用配置并启动GitLab
    执行以下命令使配置生效,这会启动所有必要的服务,这个过程可能需要几分钟,请耐心等待。
sudo gitlab-ctl reconfigure 
  1. 配置防火墙
    如果系统防火墙(UFW)是开启状态,需要放行HTTP和HTTPS流量
sudo ufw allow http sudo ufw allow https sudo ufw allow ssh# 确保SSH端口开放,以免被锁在服务器外sudo ufw reload 

访问与初始化

  1. 访问GitLab并查找初始密码
    在浏览器中输入你配置的external_url地址(如http://192.168.1.100)。
    首次访问会要求你设置管理员root的密码。初始密码存储在服务器的一个文件中,可以通过以下命令查看
sudocat /etc/gitlab/initial_root_password 

注意:此密码文件将在24小时后被自动删除,出于安全考虑,请尽快登录后修改密码。

如果提示错误可能是puma端口冲突,编辑gitlab.rb重新配置后重新启动
sudo vim /etc/gitlab/gitlab.rb

external_url 'http://192.168.0.136:8080' puma['port']=8081

重新配置,重新启动

sudo gitlab-ctl reconfigure sudo gitlab-ctl restart 
在这里插入图片描述

输入管理员账号密码登录
Username:root
Password:“初始密码”

操作到这一步输入 http://192.168.0.136:8080显示如下

在这里插入图片描述


选择:Acknowledge

在这里插入图片描述

修改默认密码

Overview=>Users=>Administrator行点击 Edit

在这里插入图片描述


输入需要修改的信息点击Save changes保存修改内容

在这里插入图片描述


使用修改后的账号密码重新登录

在这里插入图片描述

日常管理维护

  • 服务器管理常用命令
sudo gitlab-ctl restart # 重启所有GitLab服务sudo gitlab-ctl stop # 停止所有GitLab服务sudo gitlab-ctl status # 查看各服务状态sudo gitlab-rake --version # 查看gitlab-rake版本 不是GitLab的版本sudo gitlab-rake gitlab:env:info # 查看GitLab详细信息

数据备份

定期备份是一个好习惯。可以使用以下命令创建备份

# sudo gitlab-backup create # GitLab 12.2 之前版本旧命令,已弃用sudo gitlab-rake gitlab:backup:create 

备份文件默认存储在/var/opt/gitlab/backups/目录。
备份文件示例:1710123456_2025_03_10_16.8.0_gitlab_backup.tar

备份内容包含:

  • Git 仓库
  • 数据库(用户、项目、权限、Issue、CI/CD 等)
  • 上传的附件(头像、LFS 文件、Wiki 等)

手动备份配置
备份命令不包含以下关键配置文件,需单独保存:

# 主配置文件sudocp /etc/gitlab/gitlab.rb ~/gitlab.rb.backup # 加密密钥(用于解密数据库中的敏感数据,如 CI 变量、两步验证等)sudocp /etc/gitlab/gitlab-secrets.json ~/gitlab-secrets.json.backup 

数据恢复

  1. 安装原GitLab版本
# 查看原 GitLab 版本(在备份文件名中)# 如:..._16.8.0_gitlab_backup.tar → 版本为 16.8.0# 在新服务器上安装对应版本sudoaptinstall gitlab-ce=16.8.0-ce.0 
  1. 停止 Puma 和 Sidekiq 服务
sudo gitlab-ctl stop puma sudo gitlab-ctl stop sidekiq 
  1. 将备份文件复制到新服务器
scp oldserver:/var/opt/gitlab/backups/1710123456_2025_03_10_16.8.0_gitlab_backup.tar /var/opt/gitlab/backups/ sudochown git:git /var/opt/gitlab/backups/*.tar 
  1. 恢复数据
sudo gitlab-backup restore BACKUP=1710123456_2025_03_10_16.8.0 
  1. 恢复配置
sudo cp ~/gitlab.rb.backup /etc/gitlab/gitlab.rb sudo cp ~/gitlab-secrets.json.backup /etc/gitlab/gitlab-secrets.json 
  1. 重新配置并启动
sudo gitlab-ctl reconfigure sudo gitlab-ctl restart 
  1. 验证恢复结果
sudo gitlab-rake gitlab:check SANITIZE=true 

进阶配置(可选)

  • 配置HTTPS访问
    为了更高的安全性,建议配置SSL证书启用HTTPS。你可以从Let’s Encrypt获取免费证书,或者使用自己的商业证书。配置需要在/etc/gitlab/gitlab.rb中修改external_url为https://,并配置证书路径。
  • 配置外网访问
    如果你希望GitLab能从公司或家庭网络之外访问,你需要:
  1. 在云服务平台的安全组规则中,放行你配置的端口(如80、443)。
  2. 如果你在局域网内,还需要在路由器上设置端口转发,将公网IP的端口转发到内网GitLab服务器的IP和端口。

使用方法简述

在这里插入图片描述
  • 方式2:本地仓库添加remote仓库
    本地已经有项目代码
    创建stm32f103rct6_modbus空白项目,然后执行如下命令:

方式1:克隆仓库到本地
将远端服务器创建的空白git仓库克隆到本地,然后在此基础上做项目开发

在这里插入图片描述

创建项目组

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
git remote add origin http://192.168.0.136:8080/stm32f103/stm32f103rct6_modbus.git git branch -M master git push -uf origin master 

Read more

JDK 17 安装与配置指南(图文详解)

JDK 17 安装与配置指南(图文详解)

1. 开篇简介——长期支持与现代化Java开发 1.1 为什么选择JDK 17         JDK 17(Java Development Kit 17)是Oracle在2021年9月发布的长期支持版本(LTS, Long-Term Support),这意味着它将获得至少8年的官方维护与安全更新,直到2029年甚至更久。对于企业级应用和开发者来说,LTS版本意味着更高的稳定性、安全性和长期可维护性,使其成为生产环境的理想选择。         相较于非LTS版本(如JDK 18、19等),JDK 17不仅提供了关键的安全补丁和性能优化,还引入了许多现代化语言特性和API增强,帮助开发者编写更简洁、更高效的代码。         目前SpringBoot的最低支持版本是jdk17 1.2 适用人群 * Java初学者:JDK 17 提供了更直观、更现代化的语法,降低了学习门槛。 * 需要升级环境的开发者:从JDK 8/11迁移?JDK 17 是当前最稳定、最先进的LTS版本。

JDK21的下载与安装(2025.8.2)

目录 * 一、JDK21的下载 * 二、JDK21的安装与环境变量的配置 一、JDK21的下载 通过下面链接进入Oracle官方的Java网站。 Java 软件 | Oracle 中国https://www.oracle.com/cn/java/点击下载Java。 点击JDK21,然后选择Windows。 可以看到,在Prodcut/file description下有:x64 Compressed Archive、x64 Installer、x64 MSI Installer,下面介绍下它们的区别: x64 Compressed Archive:免安装版本,通常是一个压缩包,需要手动配置环境变量来完成jdk的安装。  x64 Installer:可执行的安装程序,在安装过程中一般会自动配置环境变量。  x64 MSI Installer:基于Windows Installer技术的安装包,可通过命令行进行安装、卸载和配置,

数据结构-7.Java. 对象的比较

数据结构-7.Java. 对象的比较

本篇博客给大家带来的是java对象的比较的知识点, 其中包括 用户自定义类型比较, PriorityQueue的比较方式, 三种比较方法...... 文章专栏: Java-数据结构 若有问题 评论区见 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 1. PriorityQueue中插入对象 上篇文章我们介绍了优先级队列,优先级队列在插入元素时有个要求:插入的元素不能是null或者元素之间必须要能够 进行比较,为了简单起见,我们只是插入了Integer类型,那优先级队列中能否插入自定义类型对象呢? class Card { public int rank; // 数值 public String suit; // 花色 public Card(int rank, String suit) { this.rank = rank; this.suit = suit; } } public class TestPriorityQueue

Java集成PaddlePaddle OCR:让文字识别变得如此简单

还在为Java项目中需要文字识别功能而烦恼吗?传统方案要么依赖复杂的Python环境,要么调用云端API存在延迟和安全风险。现在,通过SmartJavaAI项目,你可以轻松实现Java环境下的离线OCR识别,无需任何Python依赖! 【免费下载链接】SmartJavaAIJava免费离线AI算法工具箱,支持人脸识别(人脸检测,人脸特征提取,人脸比对,人脸库查询,人脸属性检测:年龄、性别、眼睛状态、口罩、姿态,活体检测)、目标检测(支持 YOLO,resnet50,VGG16等模型)等功能,致力于为开发者提供开箱即用的 AI 能力,无需 Python 环境,Maven 引用即可使用。目前已集成 RetinaFace、SeetaFace6、YOLOv8 等主流模型。 项目地址: https://gitcode.com/geekwenjie/SmartJavaAI 技术解密:PaddlePaddle与Java的完美融合 SmartJavaAI采用DJL(Deep