Git实践——GitLab服务器的部署与使用
Git实践——分支管理与标签管理及git个性化配置https://blog.csdn.net/xiaochenXIHUA/article/details/160662371一、GitLab简介1.1、gitlab是什么GitLab 是一个基于 Git 的完整 DevOps 平台它不仅提供代码托管类似 GitHub还集成了 CI/CD持续集成/持续部署、缺陷跟踪、代码审查和 Wiki 等功能于一体的团队开发中枢系统。对于企业和开发者来说GitLab 最具吸引力的地方在于它支持自托管我们可以将其安装在内网服务器上确保代码资产的私密与安全。1.2、gitlab有啥用gitlab的核心作用说明代码托管与版本控制基于 Git 管理代码版本支持创建公有 / 私有仓库完整记录代码修改历史。精细的分支管理与保护策略支持并行开发防止代码误改。通过Merge Request (MR)进行代码审查确保合并质量。一站式项目管理Issue (任务) 跟踪管理需求、Bug、任务分配与进度。看板、里程碑 (Milestone)支持敏捷开发Scrum/Kanban。Wiki 文档内置项目知识库方便团队共享资料。原生 CI/CD无需第三方工具通过.gitlab-ci.yml配置自动构建、测试、部署。代码提交后自动触发流水线快速验证质量、自动发布大幅提升效率。企业级安全与权限精细化权限控制精确管理谁能看、改、合并特定代码。内置安全扫描SAST/DAST/SCA/ 密钥检测在开发阶段发现漏洞。支持私有化部署数据完全自主可控。附加能力容器镜像仓库、持续监控、团队协作聊天、Web IDE 在线编码。1.3、gitlab适用哪些场景GitLab 适合从个人到企业的各类开发场景尤其强调整体流程与安全gilab适用场景说明中大型企业 / 金融 / 政务 / 军工需要私有化部署、严格安全合规、精细化权限、千人级协作核心数据不对外泄露【最核心场景】中小团队与创业公司一套平台搞定代码 协作 自动化部署不用买多套工具快速搭建 DevOps 流程。个人开发者免费私有仓库、版本管理、个人项目自动部署如个人网站、小程序。开源项目团队公开仓库接收社区贡献用 MR 审核代码Issue 管理需求Wiki 写文档。DevOps 与自动化交付从提交→构建→测试→部署全链路可视化、自动化实现持续交付 / 部署。1.4、GitLab与GitHub区别GitHub全球最大开源社区侧重开源协作、社交化开发云托管为主。GitLab更偏企业私有、全流程 DevOps、私有化部署、原生 CI/CD、内置安全。一句话总结GitHub 适合开源社区GitLab 更适合企业内部研发与全流程管控。1.5、GitLab CE与GitLab EE如何选GitLab CE社区版是完全开源免费的基础版本适合中小团队GitLab EE企业版是商业付费版本在 CE 基础上增加了企业级安全、合规、高级权限与专属支持面向中大型组织。GitLab版本核心定位与许可说明GitLab CE (Community Edition)开源免费采用MIT 许可可自由使用、修改、分发包含完整的代码托管、基础 CI/CD、项目管理功能仅社区支持无官方 SLA 保障GitLab EE (Enterprise Edition)专有许可需订阅付费Premium/Ultimate 两档完全包含 CE 所有功能额外解锁企业级特性提供官方技术支持、SLA、安全补丁与优先 Bug 修复功能模块GitLab CEGitLab EE (Premium/Ultimate)代码托管 / 基础 CI/CD✅ 完整✅ 完整含高级 CI/CD 优化权限控制基础角色✅ 细粒度、自定义角色、审批流安全合规基础扫描✅ 完整 SAST/DAST、容器扫描、漏洞管理、合规报表审计与追溯❌✅ 审计日志、操作追踪、合规报告企业协作基础群组✅ 多层级组管理、高级看板、Epic/Roadmap高可用 / 扩展基础✅ 多站点、Geo 异地复制、大规模集群支持技术支持社区论坛✅ 7×24 支持、专属客户经理、SLA价格永久免费Premium约 ¥2,199 / 人 / 年Ultimate更高含全部安全能力GitLab版本适用场景说明GitLab CE是中小团队、创业公司、个人 / 开源项目只需要基础代码托管 CI/CD无强合规要求预算有限、优先开源、可自行运维对权限、安全、审计要求不高GitLab EE是中大型企业、金融 / 政企等强合规行业需要细粒度权限、多级审批、完整安全扫描要求审计日志、合规报告、数据防泄漏需要异地多活、大规模集群、Geo 加速重视官方 SLA 支持、紧急补丁、专业服务1.6、安装建议官方目前推荐即便不付费也优先安装EE 版因为它在不购买许可证License时会自动降级为 CE 的功能但未来如果想升级到企业版无需重新安装直接导入 License 即可。安装建议说明先装 EE再决定是否付费未激活许可的 EE默认等于 CE免费使用基础功能后续升级 Premium/Ultimate无需重装 / 迁移直接激活即可版本互转CE → EE官方支持平滑升级备份 → 装 EE 包 → 恢复EE → CE不官方支持需导出数据后重建二、安装部署GitLab EE2.1、安装前的准备gitlab软件的安装部署详细要求硬件要求说明架构标准(每秒20次请求约1000位用户)CPU最少4核起8核内存最少4GB起16GB存储gitlab安装包约2.5gbPostgreSQL 服务器旗舰版约12gb预留的项目代码存储空间端口开放80 (HTTP)、443 (HTTPS)、22 (SSH)端口、8080(gitlab核心puma)2.2、直接在Linux系统中安装GitLab#直接在Linux系统(almalinux9)中安装GitLab #1-更新Linux系统 dnf update -y #2-安装依赖gitlab所需的依赖库 dnf install -y curl openssh-server openssh-clients postfix cronie policycoreutils perl systemctl enable --now sshd systemctl enable --now postfix #3-防火墙配置 #3.1-关闭selinux getenforce setenforce 0 grubby --update-kernel ALL --args selinux0 vi /etc/selinux/config #【etc/selinux/config】文件中的【SELINUXenforcing】修改为【SELINUXdisabled】后保存退出 SELINUXdisabled SELINUXdisabled #3.2-防火墙若是开启状态则放开【推荐】 firewall-cmd --permanent --add-servicessh firewall-cmd --permanent --add-servicehttp firewall-cmd --permanent --add-servicehttps firewall-cmd --reload #3.2-若不想使用防火墙则可以直接禁用【不推荐】 systemctl stop firewalld systemctl disable firewalld #4-配置gitlab的软件源镜像实现在线安装 curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | bash #4.1-也可以手动下载gitlab的安装包自行安装 wget https://packages.gitlab.com/gitlab/gitlab-ee/el/9/x86_64/Packages/g/gitlab-ee-18.9.6-ee.0.el9.x86_64.rpm #5-安装gitlab【启用gitlab的https】 #5.1-方案一安装时直接启用 HTTPS自动 Let’s Encrypt申请证书推荐【适合有公网 IP 已备案域名】 #安装完成后直接用 https://gitlab.yourdomain.com 访问 sudo EXTERNAL_URLhttps://gitlab.yourdomain.com dnf install -y gitlab-ee #5.2-方案二先安装http访问然后在手动改成HTTPS #5.2.1-先安装gitlab-ee dnf clean all dnf makecache dnf install -y gitlab-ee #5.2.2-手动配置为HTTPS方法一自动配置 Let’s Encrypt vi /etc/gitlab/gitlab.rb #【/etc/gitlab/gitlab.rb】文件的修改关键项 # 改为 https external_url https://gitlab.yourdomain.com #开启自动证书 letsencrypt[enable] true letsencrypt[contact_emails] [your-emailexample.com] nginx[redirect_http_to_https] true #重载配置让其生效 gitlab-ctl reconfigure #5.2.2-手动配置为HTTPS方法二手动配置自签名 / 自有证书内网 / 无公网 #1-生成自签名证书测试用 mkdir -p /etc/gitlab/ssl chmod 755 /etc/gitlab/ssl openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ -keyout /etc/gitlab/ssl/gitlab.key \ -out /etc/gitlab/ssl/gitlab.crt chmod 600 /etc/gitlab/ssl/* #2-编辑配置文件 vi /etc/gitlab/gitlab.rb #【/etc/gitlab/gitlab.rb】文件的主要修改内容如下 external_url https://gitlab.yourdomain.com # https://域名或内网IP nginx[redirect_http_to_https] true nginx[ssl_certificate] /etc/gitlab/ssl/gitlab.crt nginx[ssl_certificate_key] /etc/gitlab/ssl/gitlab.key #3-让修改后的gitlab主配置生效注意只要编辑过【/etc/gitlab/gitlab.rb】文件就必须执行让配置生效命令 gitlab-ctl reconfigure #6-获取初始管理员密码及其修改密码 #6.1-GitLab 安装后会自动生成一个初始的【root】账户密码存放在【/etc/gitlab/initial_root_password】文件中该文件会在 24 小时后被自动删除 cat /etc/gitlab/initial_root_password #重启gitlab gitlab-ctl restart #查看gitlab的状态 gitlab-ctl status #6.2-若忘记了管理员(root)的密码或者服务器没配置邮件服务则可以通过服务器后台强制修改。 #重置指定用户如 root的密码【执行后系统会提示你输入两次新密码注意输入时不会显示字符完成后即可生效】 gitlab-rake gitlab:password:reset[root] #7-访问与登录 #7.1-修改hosts文件配置上域名解析【gitlab服务器IP 域名】 #windows修改的文件是【C:\Windows\System32\drivers\etc】;linux修改的文件是【/etc/hosts】 192.168.1.39 gitlab.ck.com #7.2-在浏览器输入gitlab的服务器ip(如192.168.1.39)即可打开gitlab的访问页面 #8-GitLab 常用运维命令 #8.1-启动所有服务 gitlab-ctl start #8.2-停止所有服务 gitlab-ctl stop #8.3-查看服务状态 gitlab-ctl status #8.4-重启服务 gitlab-ctl restart #8.5-查看日志 gitlab-ctl tail可从官方站点下载对应版本的.rpm文件。地址为https://packages.gitlab.com/gitlab注意若访问服务器IP如上图显示“HTTP 502: Waiting for GitLab to bootIt can take up to a few minutes for GitLab to boot completely.This page will automatically reload every 5 seconds.”则是由于gitlab的主核心【puma】服务启动异常需要排查。#排查gitlab的主核心服务puma的启动日志 gitlab-ctl tail puma #根据占用端口获取到PID lsof -i :8080 #根据PID获取到进程信息 ps -ef | grep PID #排查出问题解决后重启gitlab gitlab-ctl restart排查puma的日志显示“2026-05-02_12:12:35.65681 {timestamp:2026-05-02T12:12:35.656Z,pid:477838,message:* Listening on unix:///var/opt/gitlab/gitlab-rails/sockets/gitlab.socket}2026-05-02_12:12:35.65721 bundler: failed to load command: puma (/opt/gitlab/embedded/bin/puma)2026-05-02_12:12:35.65791 /opt/gitlab/embedded/lib/ruby/gems/3.3.0/gems/puma-7.2.0/lib/puma/binder.rb:344:in initialize:Address already in use - bind(2) for 127.0.0.1 port 8080 (Errno::EADDRINUSE)2026-05-02_12:12:35.65793 from /opt/gitlab/embedded/lib/ruby/gems/3.3.0/gems/puma-7.2.0/lib/puma/binder.rb:344:in new”可以了解到是由于本机的8080端口已被占用导致无法启用需要将8080端口空闲出来。2.3、gitlab的web界面中文设置与密码修改2.3.1、配置root用户界面显示中文使用root管理员用户登录到gitlab的web界面中点击界面右上角的圆形图标--【Preferencs--Localization--Language选择Chinese,Simplified-简体中文--Save Changes】后按下【F5】键刷新网页即可显示中文如下图所示2.3.2、修改root用户密码使用root管理员用户登录到gitlab的web界面中点击界面右上角的【管理员(Admin)】--【概览】--【用户】--【Administrator右侧的“编辑”】--密码下面输入【新密码、确认密码】--【保存更改】即可如下图所示三、gitlab使用3.1、在gitlab中创建项目在浏览器输入【gitlab.ck.com】打开界面并登录然后点击左侧【项目--创建项目--创建空白项目】在配置界面根据提示输入【项目名称、项目组或人员、可见性级别】最后点击【新建项目】即可如下图所示3.2、在gitlab中添加SSH密钥在浏览器输入【gitlab.ck.com】打开界面并登录然后点击右上角圆形图标--【偏好设置】然后选择左侧的【访问--SSH密钥--添加新密钥】在该密钥添加界面根据提示将【新设备的SSH公钥复制一份到界面的“密钥”框中、输入密钥标题方便区分】如下图所示#在需要推送代码到gitlab的设备上生成SSH密钥对 #1-在新设备指定路径新生成指定名称的密钥对 ssh-keygen -t ed25519 /root/.ssh/id_ed25519_github #由于没有使用默认的文件名称因此需要配置SSH vi ~/.ssh/config #【~/.ssh/config】文件的内容 Host gitlab.ck.com HostName gitlab.ck.com User git Port 22222 IdentityFile ~/.ssh/id_ed25519_github IdentitiesOnly yes #2-查看密钥对的公钥信息 cat ~/.ssh/id_ed25519_github.pub3.3、克隆gitlab项目#克隆gitlab项目 #1-获取到gitlab中指定项目的SSH地址 gitgitlab.ck.com:root/gitlabdemo.git #2-在已经在gitlab中配置了SSH密钥的设备上克隆gitlab项目 #2.1-在gitlab中配置了SSH密钥的设备上配置gitlab的域名解析 vi /etc/hosts #【/etc/hosts】文件末尾新增gitlab的域名解析 192.168.1.39 gitlab.ck.com #2.2-在gitlab中配置了SSH密钥的设备上克隆gitlab mkdir -p /data/gitlab cd /data/gitlab git clone gitgitlab.ck.com:root/gitlabdemo.git获取到gitlab中指定项目的SSH地址方法在gitlab的web界面中【点击左上角的gitlab图标】--【项目】--【点击需要使用的项目(如Administrator / gitlabdemo)】--【代码】--【使用SSH克隆】如下图所示注意1若在使用【git clone】命令克隆gitlab项目到客户端时报错“正克隆到 gitlabdemo...ssh: Could not resolve hostname gitlab.ck.com: Name or service not knownfatal: Could not read from remote repository.Please make sure you have the correct access rights”是因为客户端并没有配置上gitlab的域名解析只需要配置上即可只需要在hosts文件末尾添加gitlab的域名解析如【192.168.1.39 gitlab.ck.com】解决方法如下图所示注意2若在使用【git clone】命令在客户端克隆gitlab的项目时报错“正克隆到 gitlabdemo...ssh: connect to host gitlab.ck.com port 22: Connection refusedfatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.”则需要进入gitlab所在服务器将【gitlab应用】与【gitlab应用所在服务器的SSH端口】配置一致后重试即可详细操作如下#解决客户端使用git clone命令克隆gitlab项目报错问题 #1-查看gitlab所在服务器使用的ssh端口如22222 grep -i Port /etc/ssh/sshd_config #2-编辑gitlab的主配置文件【/etc/gitlab/gitlab.rb】端口与gitlab所在服务器的ssh端口一致 vi /etc/gitlab/gitlab.rb #【/etc/gitlab/gitlab.rb】文件修改内容 gitlab_rails[gitlab_shell_ssh_port] 22222 #3-重载gitlab的主配置文件让其生效 gitlab-ctl reconfigure3.4、推送项目到gitlab中#将本地的项目推送到gitlab中 #1-进入从gitlab克隆下来的项目中并查看当前的分支 cd /data/gitlab/gitlabdemo/ git branch #2-在项目中开发复制一些文件模拟开发功能 cp /etc/hosts . cp -r /etc/yum.repos.d . #3-将开发的内容添加到仓库暂存区后统一将暂存区内容提交到仓库中 git add . git commit -m新增hosts与yum.repos.d目录 git status #4-查看远程仓库地址、仓库当前的分支、并推送到gitlab中 git remote -v git branch git push origin main #5-到gitlab中查看从本地推送的内容是否存在3.5、gitlab的数据存储路径在 AlmaLinux 9 上通过Omnibus 包安装的 GitLab EE所有核心项目数据默认都集中在/var/opt/gitlab/目录下。/var/opt/gitlab/ ├── git-data/repositories/ # ✅ Git 代码仓库核心 ├── postgresql/data/ # ✅ 数据库用户/项目元数据 ├── gitlab-rails/uploads/ # ✅ 附件/上传文件 ├── gitlab-rails/shared/ # LFS 对象、CI/CD 缓存、归档 ├── backups/ # 备份文件 ├── logs/ # 日志/var/log/gitlab/ 也有 └── gitaly/ # Gitaly 服务Git 仓库访问层《1》代码仓库Git 仓库数据/var/opt/gitlab/git-data/repositories/采用哈希存储 (Hashed Storage)路径格式hashed/[hash前2位]/[hash中间2位]/[完整hash].git对应项目的源代码、提交历史、分支、标签。《2》数据库用户 / 项目 / 配置元数据PostgreSQL 数据/var/opt/gitlab/postgresql/data/存储用户账号、项目信息、权限、Issue、MR、设置等。《3》上传附件Issues/MR/Wiki 中的文件/var/opt/gitlab/gitlab-rails/uploads/存储图片、文档、压缩包等用户上传文件。《4》备份文件/var/opt/gitlab/backups/gitlab-backup create生成的备份包默认存这里。《5》配置文件/etc/gitlab/gitlab.rb # 主配置修改路径/端口/存储/etc/gitlab/gitlab-secrets.json # 密钥迁移必备。如何根据项目 ID 找到仓库路径:在 GitLab 项目主页 →Settings → General查看Project ID如123计算 SHA256 哈希echo -n 123 | sha256sum # 输出示例a665a45920422f9d417e...对应路径/var/opt/gitlab/git-data/repositories/hashed/a6/65/a665a45920422f9d417e....git
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2580794.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!