私有化代码仓库Gitlab的落地与应用(一)

作者&投稿:鄣侄 (若有异议请与网页底部的电邮联系)
~ 前段时间,我接到任务:尝试搭建一个私有化的代码仓库给前端团队使用。之前我用Docker搭建过一个Gitlab,但使用过程中遇到了很多问题,维护起来也比较复杂,所以我决定按照传统方法重新搭建。到目前为止,服务已经平稳运行了数月。本文主要记录《私有化代码仓库Gitlab的落地与应用》系列(一):Gitlab传统搭建方式及后台维护,内容主要分为以下几个部分:

一、Gitlab简介
GitLab是一个由GitLabInc.开发的开源应用程序,使用Ruby on Rail开发,主要用于实现一个自托管的Git项目仓库。用户可以通过web界面访问公开或私人项目。它使用Git作为代码管理工具,并在此基础上搭建web服务。GitLab的功能与GitHub类似,包括浏览源代码、管理缺陷和注释,以及管理团队对仓库的访问。GitLab专门为Unix操作系统开发,不能在Windows操作系统上运行,因此需要在Linux虚拟机或Docker上安装。GitLab分为社区版(Community Edition)和企业版(Enterprise Edition)。

二、Gitlab搭建步骤
1. 安装依赖
2. 下载镜像文件并上传至服务器
国内镜像地址:mirrors.tuna.tsinghua.edu.cn...
3. 安装Gitlab
4. 配置Gitlab
编辑配置文件:
主要涉及两处改动:
5. 启动Gitlab
6. 访问Gitlab
192.168.1.122:8090

三、常见问题及解决
1. 前端页面访问出现502
出现502可能有以下原因:
通过后台运行日志,排查如果是因为端口被占用引起的,可以按照上述修改配置文件方法,将配置文件中的端口号修改即可,修改后需要按照第4步重新加载配置文件、重启服务。更多配置信息,可以在 /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml 中进行查看。

四、Gitlab配置信息及常用操作命令
1. 常见配置
默认安装的gitlab,主要有四个目录:
◆ /opt/gitlab/ # 主目录
◆ /etc/gitlab/ # 放置配置文件
◆ /var/opt/gitlab/ # 各个组件
◆ /var/log/gitlab/ # 放置日志文件
2. 常用命令
◆ gitlab-ctl start # 启动所有 gitlab 组件;
◆ gitlab-ctl stop # 停止所有 gitlab 组件;
◆ gitlab-ctl restart # 重启所有 gitlab 组件;
◆ gitlab-ctl status # 查看服务状态;
◆ vim /etc/gitlab/gitlab.rb # 修改gitlab配置文件;
◆ gitlab-ctl reconfigure # 重新编译gitlab配置;
◆ gitlab-ctl tail # 查看日志;
◆ gitlab-ctl help # 查看相关的帮助

五、代码仓库数据迁移
1. 旧服务器数据手动备份
先停掉gitlab,然后执行备份命令
生成的备份文件会存在/var/opt/backups/目录下,生成的文件名如1633777959_2021_10_09_14.0.6_gitlab_backup.tar,其中14.0.6是当前gitlab的版本号,恢复时使用的gitlab必须是同样的版本号,否则没法进行恢复。该文件里面包含了所有user、group、git repository数据。

2. 新服务器上恢复数据
将备份文件复制到新服务器的/var/opt/backups/目录下,停掉gitlab的puma、sidekiq两个服务,然后执行恢复操作
特别注意:

六、代码仓库自动备份方式一:使用gitlab配置文件设置自动备份
1. 编辑 /etc/gitlab/gitlab.rb文件,找到以下内容并按照如下配置:

2. 更新配置

方式二:使用Linux系统crondtab服务自动备份
1. 配置定时任务:crontab -e
查看定时任务:crontab -l
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create 表示每天凌晨两点执行备份命令
设置cron服务开机自启:systemctl enable crond.service
修改后重启cron服务:systemctl restart crond

【tips】:

2. 自动上传gitlab的备份文件到另一台服务器
1)设置两台服务器免密登录
2)编写自动上传备份文件shell脚本:gitlab-upload.sh,内容如下:

编写完成后要对文件赋予执行权限:chmod +x gitlab-upload.sh

3)设置crondtab定时任务
执行crondtab -e命令,设置为每天凌晨三点执行远程传输备份文件任务,内容如下,

保存后要重载crond服务:systemctl reload crond.service

七、小结
总的来说,Gitlab的搭建过程比一般软件的搭建要繁琐,另外像数据自动备份、数据迁移所用到的Linux技能也较多,可以按需配置和操作。最后,总结一下本次用到的Linux技能:


Github新手通关:一篇让你轻松驾驭代码仓库的入门指南
4. 代码的旅程 - 提交与推送:git add、git commit、git push,记录和分享你的代码变化。分支与合并:git branch与git merge,平行开发环境的灵活运用。5. 团队协作的艺术 - Fork功能让你对公开项目进行个性化开发,Pull Request和Issue是沟通与协作的桥梁。- GitHub Actions自动化工作流程,提升效率;...

Git实用教程(三) | Git本地库操作(仓库初始化、提交修改)
提交更新是至关重要的步骤。确保设置好用户名和邮箱后,使用`git commit -m "提交信息"`将暂存区内容记录到仓库。复杂信息可以用默认编辑器vim编辑,简单的话一行即可完成。有时,我们可以跳过暂存区直接提交,对未追踪的文件要谨慎操作。忽略不必要的文件也很常见,创建`.gitignore`文件列出模式即可。

​Git版本控制工具使用教程
同样需注意冲突和验证。回滚(Rollback):撤销代码变更,需谨慎操作以避免影响其他开发工作。Git工作流程包括初始化仓库、添加文件、提交更改、推送至远程、拉取更新以及分支管理和版本回退。例如,创建本地仓库,将文件添加到暂存区,提交并推送到远程,以及通过git pull和git rollback进行日常协作管理。

什么?作为程序员你都工作了还不会用Git
工作中常用的 Git 指令如下:1. 使用 git clone 获取项目代码。2. 新建分支以开发新功能。3. 使用 git add 和 git commit 提交代码更改。4. 使用 git push 将代码提交到远程仓库。5. 通过 git pull 拉取远程仓库的最新代码。6. 在代码冲突时,使用 git log 查看提交历史,然后使用 git reset ...

vstudio2202+Git构建本地仓库进行代码版本管理
在进行合并操作时,如果遇到错误提示,首先请确认您的代码更改已正确推送到Git仓库。点击接受合并前,请仔细审查合并的变更,确保它们不会引入错误或冲突。如果合并操作失败,请根据错误信息进行调整或回滚更改,直到问题得到解决。通过上述步骤,您将能够利用vs2022和Git的集成功能,高效地管理代码版本,确保...

Github如何上传本地项目代码
在 Github 上上传本地项目的代码,需要以下步骤:创建一个新的 repository:在 Github 页面右上角点击加号,选择 New Repository,填写相关信息并创建一个新的 repository。在本地计算机上创建一个文件夹:这个文件夹将会作为本地代码仓库,在该文件夹中创建你的代码项目。初始化 git:在该文件夹中右键...

git github gitlib gitlab分别是什么,有什么区别
git 是一种版本控制系统,是一个命令,是一种工具 gitlib 是用于实现git功能的开发库 github 是一个基于git实现的在线代码仓库,包含一个网站界面,向互联网开放 gitlab 是一个基于git实现的在线代码仓库软件,你可以用gitlab自己搭建一个类似于github一样的系统,一般用于在企业、学校等内部网络搭建git...

Git新手?这篇文章带你飞!基础操作一网打尽!
版本控制:查看历史记录、版本回退、撤销修改。远程仓库操作:在GitHub或Gitee上创建、克隆、推送分支。协作开发:创建、合并分支,处理团队协作中的代码冲突。IDE(如IntelliJ IDEA)连接Git流程也十分便捷,通过下载和应用Git插件即可实现与Gitee或GitHub的连接,提供集成化的版本控制体验。

git命令思维导图
set-url”添加或更改远程仓库的URL,以实现在多个环境中同步代码。通过“git push”将本地更改推送到远程仓库,或使用“git pull”从远程仓库获取最新更改。此图和相关资源旨在帮助快速理解Git的工作流程和常见操作,对于初学者或希望提高Git使用效率的用户尤为有用。欢迎使用并根据自身需求进行调整。

如何建立git仓库?
仓库创建成功 二:安装Git 点击https:\/\/git-scm.com\/downloads下载Git 选择需要下载的平台版本,现在我们只讲解Windows平台的。下载完成以后,直接一步步Next下去安装完成就可以了,这里就不再详细讲解了 三:本地仓库上传到githubcang仓库 在E盘下GitHubTest仓库中有一个mytest.txt文件,现在要讲mytest....

西工区15070356750: Apex英雄呼叫补给仓方法系统和呼叫补给仓哪个好
用急杰奇: Apex英雄呼叫补给仓有什么方法?游戏中补给仓现在分为系统补给仓与呼叫补给仓,... 实战中如何区分:可以通过从出现补给仓尾焰声音时,到落地前进行反冲减速时的声...

西工区15070356750: 编写程序 -
用急杰奇: h=100'初始高度 h1=h For i=1 To 10 h1=1/2*h1'得到新高度 s=s+2*h1 'Response.write s &"<br>" print s Next

西工区15070356750: 斜面体上开有凹槽,槽内紧挨放置六个半径均为r的相同刚性小球,各球编号如图.斜面与水平轨道OA平滑连接,OA长度为6r.现将六个小球由静止同时释放,... -
用急杰奇:[选项] A. 球1的机械能守恒 B. 球6在OA段机械能增大 C. 球6的水平射程最大 D. 有三个球落地点位置相同

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网