首页 > 其他分享 >【Gitlab】私有Gitlab仓库部署

【Gitlab】私有Gitlab仓库部署

时间:2024-06-10 09:05:24浏览次数:23  
标签:gitlab 私有 Gitlab 仓库 版本 Docker 安装 docker

背景

在做个人项目开发的时候,经常会遇到多地编写互相同步版本的情况,时间久了版本会出现混乱情况。gitlab是一个基于git的代码仓库管理的开源项目,个人也能够非常简便地搭建自己的私有代码管理仓库,用于个人项目的版本管理。在国内可以使用的版本的gitlab有 社区版gitlab-ce、gitlab-ee以及极狐版gitlab-jh。gitlab-ce是向全球提供的免费社区版本;gitlab-ee是企业版,提供比社区版更多的功能和服务;gitlab-jh是国内极狐提供的版本,其是以gitlab-ce和gitlab-ee为上游,在合入上游版本的基础上做一些面向中国用户的定制化功能,jh版本有基础款和专业版,基础版是免费使用的,其基准是gitlab-ce,专业版面向企业以订阅的形式收费。
本人在搭建自己的私人仓库时,选用了gitlab-jh版本。主要原因是当前的jh版本官方提供了比较详细的中文文档支持,对于搭建上手、后续维护来说更加容易上手,且其也是基于gitlab-ce的版本,有社区及企业维护,稳定性相对可靠(个人见解),再加上版本获取相对来说比较方便,极狐官网镜像源就能够获取到版本。
在搭建gitlab仓库时,有一些经验以及安装方式的选择在这里分享下

目标

1.gitlab搭建完成,能够在局域网内访问仓库、能够用git远程仓库
2.安装方式选择:gitlab-jh共有3中安装方式:官方Linux安装包(Omnibus Gitlab)、Helm chart(在K8S上安装)、docker版,本人也对不同的安装方式做了一些对比选择,在这里分享。

过程

Linux安装包版本安装

Linux安装包版本需要安装一些依赖包,比如curl、policycoreutils-python、openssh以及perl等。如果需要邮件推送还需要安装postfix。
具体的安装过程可参考极狐官网GitLab下载安装_GitLab最新中文官网免费版下载-极狐GitLab。本人的用于安装gitlab的环境是RedHatEnterprise7版本,关键过程如下:
1.安装和配置所需的依赖
在终端输入以下命令安装相关依赖:

sudo yum install -y curl policycoreutils-python openssh-server perl
sudo systemctl enable sshd
sudo systemctl start sshd

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

安装发送电子邮件通知软件postfix,这个是一个可选项,如果不需要在一些场景收到邮件就不需要安装,个人建议还是安装下,我收到过一些关于注册成功、新位置登录等关键动作的邮件,这些信息有助于我们了解当前gitlab的关键动作,对于一些安全性问题可以及时关注。安装的具体命令如下

sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

我们也可以在安装完Gitlab后配置SMTP服务器来使用其他的发送电子邮件解决方案,如果本机上已经装有其他的电子邮件方案,可以在安装完后通过SMTP 配置 | 极狐GitLab该文档引导配置。
2.下载并安装极狐Gitlab
执行以下命令配置极狐Gitlab软件镜像源(如果想安装其他版本的gitlab可以下载对应版本的镜像源,阿里云和清华镜像源都有对应的软件包镜像)。

curl -fsSL https://get.gitlab.cn | /bin/bash

这条指令要注意的是,如果目标机和我一样是RHEL7版本的Linux系统,镜像源的list需要手动修改下,不然会报镜像源找不到的错误:

#1、修改yum配置文件
[wanchao@localhost ~]$ vim /etc/yum.repos.d/gitlab-jh.repo
#2、将全文中所有的“$releasever”字符串替换成“7”,因为我的系统centos7版本
#进入命令行模式
:%s/$releasever/7/g
#保存并退出
:wq

需要配置的原因是:RHEL7版本会将 r e l e a s e v e r 这个环境变量识别为 " 7 s e r v e r " ,而镜像源地址中实际 releasever这个环境变量识别为"7server",而镜像源地址中实际 releasever这个环境变量识别为"7server",而镜像源地址中实际releasever的值是"7",所以会导致镜像源路径无法找到,手动替换下即可可参考我的另一篇博文RedHatEnterprise7配置阿里镜像-CSDN博客
接下来就是正式的安装过程了,安装之前,如果是部署在公网IP下的那就需要配置正确的DNS域名服务器,可以通过域名直接访问我们自己配置的gitlab,如果是内网或者使用内网穿透技术来搭建的那指定URL为localhost即可。
有自己域名的安装指令:

sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-jh

内网的安装指令:

sudo EXTERNAL_URL="http://192.168.1.23" yum install -y gitlab-jh

或者,EXTERNAL_URL为目标机的IP地址。如果是内网穿透可以定义为"http://localhost:80",自动寻址目标机局域网IP。
执行以上命令后,需要等待一会时间,然后就安装完成啦:
在这里插入图片描述

3.登录极狐Gitlab
使用第二步的EXTERNAL_URL中配置的地址访问Gitlab,默认用户为root,安装中可以指定root用户的初始密码,如果未配置的话就使用系统随机生成的,随机密码一般生成在/etc/gitlab/initial_root_password文件中,可用cat命令查看密码。

用极狐官方提供的Docker镜像安装

极狐官方还提供了完整Gitlab完整环境的docker镜像,docker镜像版本的安装相比安装包版本要更为简单。
Giglab官方提供了3种安装Gitlab Docker的方法:

  • Docker Engine安装
  • Docker Compose安装
  • Docker swarm安装
    具体的安装方法可参考极狐GitLab Docker 镜像 | 极狐GitLab。我这边用Docker Engine的安装方式尝试安装了Gitlab Docker。具体步骤入下。
    1.配置环境变量
export GITLAB_HOME=/srv/gitlab

将GITLAB_HOME环境变量加入到shell的配置中,这样可以应用在之后打开的终端中。可以在~/.bash_profile中增加GITLAB_HOME环境变量。
2.使用Docker Engine安装
使用以下命令安装Gitlab Docker

sudo docker run --detach \
  --hostname gitlab.example.com \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  registry.gitlab.cn/omnibus/gitlab-jh:latest

其中,hostname像上述安装包安装中的EXTERNAL_URL一样,可配置为服务器局域网IP地址。
经过以上的命令,会自动下载并启动Gitlab容器,所有的Gitlab数据会存在GITLAB_HOME中,并且配置了系统重启自动启动Gitlab Docker。
这条命令执行后需要等待较长的时间安装和启动Gitlab,如果同构Web访问出现502报错,请稍等一段时间。可以通过安装日志查看进度:

sudo docker logs -f gitlab

root用户的初始密码查询命令如下:

sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

以上就是Docker Engine方式安装Gitlab Docker。实际步骤只有1步。

安装方式选择

本人尝试安装了Linux安装包和Docker方式的Gitlab,是裸机运行还是容器运行也进行了一番对比选择。
经过亲测,在容器中运行和在裸机中运行,从CPU占用、内存占用以及关键动作运行耗时上,相差并不明显。docker运行只是比裸机运行多了docker进程,但是内存和CPU消耗相对来说不多。
那既然性能上相差不多,我们直接安装docker版本是不是就可以,即方便安装维护,可用性还好,服务挂了重启docker就可以。但是docker版本还是存在一些问题。
比如官方就提到,docker版本的稳定性上相对裸机运行会略低,因为其运行在容器上,除了gitlab本身的稳定性,还依赖于容器的稳定性,官方在docker安装方法中也列举了一些docker容器存在的已知问题:极狐GitLab Docker 镜像 | 极狐GitLab
docker版还存在的另一个问题是不能在k8s环境中部署,否则会出现单点故障。因为Gitlab Docker包含了所有运行所需的环境,一个docker容器也是使用和管理一个git数据库,出现故障后也无法配置备份机制。当然这并不是说Gitlab本身不支持k8s环境,gitlab还可以支持Helm Chart方式部署,这种方式就是部署在k8s上的,他把gitlab的核心组件分为多个子chart,每个chart独立部署,这就保障了高可用性,每个子chart出现故障都可以独立备份重启。
那问题又来了,我为什么没有去尝试部署Helm Chart呢?因为Helm Chart吃资源。目前手上只有一台服务器,内存16G,16核CPU,用Omni方式安装就吃掉了10G的内存(当然这个可以通过配置降,实在是太吃内存了),Helm Chart的配置要求更加庞大,实在没敢去配;而且对于个人私有仓库而言,单点的Gitlab仓库足够用了,暂时不去折腾,等后续再购入更多的服务器,或者买云服务后再尝试Helm Chart方式,到时候也再贴下我的部署经验。

总结

本文主要介绍了两种私有Gitlab的部署方式已经部署方式选择,希望对大家搭建私有仓库有所帮助。

标签:gitlab,私有,Gitlab,仓库,版本,Docker,安装,docker
From: https://blog.csdn.net/silentsea323/article/details/139566922

相关文章

  • 【NAS】Docker Gitea+SakuraFrp+绿联DPX4800标 搭建私有代码托管平台
    本文主要分享Gitea的一些设置,和Https的实现。Gitea的一些设置映射网络HTTPS的实现先准备好一个域名,建议准备一个1Panel创建一个AC账户然后点击申请证书,手动解析。申请完毕后,点击详情,查看证书crt和私钥key自己创建一个txt文本,将证书crt粘贴进去,然后将名字改为xxx.crt......
  • 在本地的maven仓库中有所需要的依赖包,为何还会远程下载依赖
    在平时开发中我们经常会遇见这样的问题:明明本地有需要的依赖包,但是maven还是会从远程仓库拉取,如果远程仓库有需要的包还好,如果没有,或者无网络环境下没法访问远程仓库,那就直接报错,走不下去了。其实这很好处理的:原因:在本地仓库的每个依赖包都存在这样的文件:_remote.repositories......
  • Docker配置 之 本地仓库web访问
    介绍Docker是一种开源的应用容器引擎。Docker可以让开发者打包应用以及依赖包到一个可移植的容器中,然后发布到任何安装了Docker引擎的服务器上(包括Linux机器、Windows机器),也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app)。几乎没有性能开销,......
  • 数据仓库中的7种建模方法及示例
    数据仓库中的7种建模方法及示例原创(https://mp.weixin.qq.com/s/4Nnhih4ccLxs5hguQMZRHA)晓晓数据驱动智能2024-06-0907:19陕西图片试象一下,你是一家繁忙餐厅的分析工程师。每天,顾客都会预订、下订单并完成付款。所有这些数据都会流入餐厅的交易数据库,记录每次互动的详细信......
  • Linux搭建和共享第三方软件仓库
    实际案例下载linuxqq并建立和共享第三方软件仓库 1.实验主机配置主机1:IP:172.25.254.250主机名:server.tab.org[root@server250~]#hostnamectlhostnameserver.tab.org[root@server250~]#hostnameserver.tab.org[root@server250~]#ifconfigeth0:flags=4163<UP......
  • 使用Verdaccio创建一个本地私有库,并应用
    安装verdaccio       npminstall-gverdaccio直接verdaccio启动    可以先右上角登录 然后先使用npmcreatevite@latest然后创建属于自己的一个vue3项目  vite-project(随便起了个名)npmi一下npmrundev 跑起来看看然后创建下列文件夹......
  • 新仓库怎么传git
    1.生成SSH密钥: 在本地安装的git目录下,启动git-bash.exe启动的git的命令中输入ssh-keygen -trsa 并一直回车到最后在路径中找到 .ssh/id_rsa.pub文件里面的密钥既为SSH密钥最后再在Github仓库里SSHKeys中写入即可2.创建仓库在目标位置上打开cmd然后输入gitinit......
  • Gitlab全家桶(安装|升级|卸载|备份|恢复)
    通用命令sudogitlab-ctlstart#启动所有gitlab组件;sudogitlab-ctlstop#停止所有gitlab组件;sudogitlab-ctlrestart#重启所有gitlab组件;sudogitlab-ctlstatus#查看服务状态;sudogitlab-ctlreconfigure#启动服务;sudovim/etc/gitlab/gitlab.rb#......
  • 从0到1训练私有大模型技能与应用实现 ,企业急迫需求,抢占市场先机
    从0到1训练私有大模型:技能构建与应用实现,助力企业抢占市场先机在当今数字化浪潮中,人工智能(AI)技术已成为企业实现创新和突破的关键。特别是在大模型技术领域,其强大的数据处理能力和泛化能力为企业提供了前所未有的机遇。为了满足企业急迫的需求,抢占市场先机,本文将从0到1探讨如何训......
  • idea,webstorm切换远程仓库
    当有一个老的项目需要从新上传到一个新的git地址,或者上传到云效上面,可以参考1:首先把setting->VersionControl->directoryMappings下面的仓库删除2,如果发现菜单栏的vcs不显示,双击shift,输入Mainmenu   3:选择 CreateGitRepository,创建git本地仓库   选择......