Gitlab部署及使用

news2025/2/27 7:11:51

1. 简介

GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的Web服务。
Gitlab是目前被广泛使用的基于 git 的开源代码管理平台,基于Ruby on Rails构建,主要针对软件开发过程中产生的代码和文档进行管理。
Gitlab主要针对 group 和 project 两个维度进行代码和文档管理,其中 group 是群组,project 是工程项目,一个 group 可以管理多个project,可以理解为一个群组中有多项软件开发任务,而一个 project 中可能包含多个 branch,意为每个项目中有多个分支,分支间相互独立,不同分支可以进行归并。

2. 安装方法

  • Linux 安装包
  • 云原生 Helm chart
  • Docker

3. Linux安装包部署

linux安装包的部署有两种方式,一种是 apt 直接进行安装,一种是使用 dpkg 指令进行安装。
服务器配置最好是:2核4G起步,低于这个配置安装和启动 GitLab 会非常吃力,内存和CPU消耗几乎占满。

官方文档:
https://docs.gitlab.cn/jh/administration/

3.1 apt 安装

3.1.1 安装并配置必要的依赖项

sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates

3.1.2 安装邮箱服务(可跳过)

sudo apt-get install -y postfix

3.1.3 添加 Gitlab 软件包到存储库并安装

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt-get install gitlab-ce
GitLab安装包大约有1G,安装需要耐心等待几分钟(视服务器配置而定);
001.jpg
安装成功
002.jpg

3.1.4 修改配置文件

vim /etc/gitlab/gitlab.rb

#修改内容
external_url 'http://10.66.55.132:6001/'

部署 gitlab 后发现机器的cpu和内存占用非常大,而且 gitlab 启动了非常多的bundle。我们需要对他的相关配置进行优化,关闭不必要的进程,尽量减少cpu及内存的占用,编辑配置文件gitlab.rb。如果没有找到以下字段也可以跳过此步。

#修改以下内容:

puma['worker_timeout'] = 30   #设置最大请求持续时间
gitlab_rails['time_zone'] = 'Asia/Shanghai'
puma['worker_processes'] = 2
sidekiq['max_concurrency'] = 8   #减少sidekiq并发数
postgresql['shared_buffers'] = "128MB"   #减少数据库缓存(默认为256MB 改为128MB)
postgresql['max_worker_processes'] = 3   #减少数据库并发数
puma['per_worker_max_memory_mb'] = 600   #更改内存限制设置
prometheus_monitoring['enable'] = false   #普罗米修斯监控关闭启用
sidekiq['min_concurrency'] = 8

参考文档:
https://docs.gitlab.cn/jh/administration/operations/puma.html#%E6%9B%B4%E6%94%B9%E5%86%85%E5%AD%98%E9%99%90%E5%88%B6%E8%AE%BE%E7%BD%AE
https://blog.csdn.net/m0_46542378/article/details/125344764

3.1.5 开放端口

iptables -I INPUT -p tcp --dport 6001 -j ACCEPT;开放指定的6001端口
iptables-save;生效,保存规则
apt-get install iptables-persistent;安装工具
sudo netfilter-persistent save;端口持续化规则,确保重启后有效
sudo netfilter-persistent reload

3.1.6 重新载入配置文件

sudo gitlab-ctl reconfigure;需要等待几分钟时间
1664261963092.jpg
sudo gitlab-ctl restart;重启GitLab

3.1.7 查看 Gitlab 状态

sudo gitlab-ctl status
image.png

3.1.8 访问 GitLab

浏览器访问 http://10.66.55.132:6001
image.png

3.1.9 更改密码并登录

Gitlab root的默认密码在 /etc/gitlab/initial_root_password 文件中,此文件在第一次更新配置后24小时内会删除。
1664265120281.jpg
可以使用默认密码登录,然后在web界面更改密码。
也可以在部署界面直接更改。
修改root默认密码
gitlab-rails console -e production;需要等一会

user = User.where(username:"root").first   #查询用户
user.password = "pwd_gitlab"   #修改密码
user.save!   #保存
exit   #退出

1664262463029.jpg
账号:root 密码:pwd_gitlab
1664262519329.png

3.2 dpkg 指令安装

3.2.1 安装依赖包

sudo apt update
sudo apt install ca-certificates curl openssh-server postfix

3.2.2 下载并安装gitlab

wget -P /Downloads [https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/focal/main/g/gitlab-ce/gitlab-ce_15.3.3-ce.0_amd64.deb](https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/focal/main/g/gitlab-ce/gitlab-ce_15.3.3-ce.0_amd64.deb)
下载安装包

dpkg参数说明:
dpkg -L 查看软件的状态,如:dpkg -L gitlab-ce
dpkg -P 卸载软件(软件名,而不是安装包名)
dpkg --remove 删除安装包,不删除配置
dpkg --purge 删除安装包和配置文件

sudo dpkg -i gitlab-ce_15.3.3-ce.0_amd64.deb;安装
gitlab1.png

3.2.3 修改配置文件

以下步骤与3.1.4~3.1.9相同

参考文档:
https://www.jianshu.com/p/e3da4a3b578a
https://blog.csdn.net/nanerxue/article/details/119825292

4. docker-compose部署

提前安装好 docker 及 docker-compose

4.1 创建挂载目录

mkdir /opt/gitlab/{config,data,logs} -p
添加权限:
chmod 777 config
chmod 777 data
chmod 777 logs

4.2 创建 docker-compose.yml文件

在 /opt/gitlab/ 目录下
vim docker-compose.yml;

 version: '2'
 services:
    gitlab:
      image: 'twang2218/gitlab-ce-zh:11.1.4'
      restart: always
      container_name: "gitlab"
      #privileged: true  #特权模式
      hostname: 'gitlab'
      environment:
        TZ: 'Asia/Shanghai'
        GITLAB_OMNIBUS_CONFIG: |
          external_url 'http://47.97.177.130'   #更改为部署gitlab的机器ip或域名
          gitlab_rails['time_zone'] = 'Asia/Shanghai'
          gitlab_rails['gitlab_shell_ssh_port'] = 80
          gitlab_rails['smtp_enable'] = true
          gitlab_rails['smtp_address'] = "smtp.163.com"
          gitlab_rails['smtp_port'] = 465
          gitlab_rails['smtp_user_name'] = "15665229950@163.com"  #用自己的邮箱地址
          gitlab_rails['smtp_password'] = "123456"  #自己的邮箱密码
          gitlab_rails['smtp_domain'] = "163.com"
          gitlab_rails['smtp_authentication'] = "login"
          gitlab_rails['smtp_enable_starttls_auto'] = true
          gitlab_rails['smtp_tls'] = true
          gitlab_rails['gitlab_email_from'] = '15665229950@163.com'
      ports:
        - '80:80'
        - '443:443'
        - '2222:22'
      volumes:
        - /opt/gitlab/config:/etc/gitlab
        - /opt/gitlab/data:/var/opt/gitlab
        - /opt/gitlab/logs:/var/log/gitlab

4.3 拉取gitlab中文版镜像

docker pull twang2218/gitlab-ce-zh:11.1.4

4.4 启动容器

docker-compose up -d
1664345188754.jpg
docker ps发现启动成功

4.5 浏览器查看

登录浏览器查看 http://47.97.177.130:80
1664335741339.jpg
第一次登录需要设置密码。

5. 卸载gitlab

停止gitlab
gitlab-ctl stop
查看gitlab进程,并杀掉第一个进程
ps aux | grep gitlab
kill -9 17313
23bc2113243bda0f9896d1c434cb8a73.png
删除所有包含gitlab文件
find / -name *gitlab*|xargs rm -rf # find / -name gitlab | xargs rm -rf
删除gitlab-ctl uninstall时自动在root下备份的配置文件
ls /root/gitlab*
这样就可以彻底卸载了gitlab。

6. 启动/重启/停止 命令

  • 查看 gitlab 相关命令:gitlab-ctl --help
  • 启动:gitlab-ctl start
  • 重启:gitlab-ctl restart 每次修改配置文件后需要重启服务,从而使得配置生效。
  • 停止:gitlab-ctl stop

7. gitlab基础使用

1664347990765.jpg

1664349152707.jpg

gitlab在部署时可以选择中文版本,对国内比较友好
中文版.jpg

7.1 创建项目

7.1.1 点击 New project

创建项目1.jpg

7.1.2 点击 Create blank project 创建一个新项目

创建项目2.jpg

7.1.3 输入项目名

下面的选项可以根据需求配置,也可以默认。
配置完成,点击 Create project 即可创建成功。
创建项目3.jpg

可以看到项目的信息。
创建项目4.jpg

7.2 创建用户

7.2.1 在 Admin Area 下,点击 New user

创建用户1.jpg

7.2.2 填写姓名、邮箱等信息

密码先不设置。
创建用户2.jpg

7.2.3 点击 Create user,创建用户

创建用户3.jpg

7.2.4 点击Edit,设置新用户的密码

创建用户4.jpg

7.2.5 设置密码

创建用户5.jpg

7.2.6 点击 Save changes,保存

创建用户6.jpg

7.2.7 在新界面用邮箱和密码登录

第一次登录需要重置密码。
创建用户7.jpg

7.2.8 登录成功

创建用户8.jpg

7.3 创建团队,添加成员

7.3.1 找到 Groups,点击 New group

创建群1.jpg

7.3.2 点击 Create group

创建群2.jpg

7.3.3 填写团队名等信息

填写完成点击下方的 Create group
创建群3.jpg

7.3.4 添加成员

找到 Group information,点击 Members。
创建群4.jpg

7.3.5 点击 Invite members

创建群5.jpg

7.3.6 将成员添加到团队中,赋予权限

创建群6.jpg

7.3.7 添加成功

可以看到已经成功将成员加入到团队中。
创建群7.jpg

7.4 项目中添加成员或团队

7.4.1 找到对应的项目,点击 Members

1664417792785.jpg

7.4.2 添加成员或团队

1664417792810.jpg

7.4.3 添加成功

1664417792828.jpg

7.4.4 团队中的所有成员都可以看到并管理项目了

1664417792850.jpg

7.5 上传代码文件

7.5.1 在 gitlab 中创建项目

在 Clone 选项下可以看到 Http 的克隆地址。
1.jpg

7.5.2 创建目录

在本地创建一个目录 /data/git_code 并 cd 进去
初始化 git init
此时的目录就不在是一个普通的本地目录了,而是一个git可以管理的本地仓库。

扩展:本地仓库中的三个区

工作区:
本地工作目录和gitlab关联后,就成为工作区。
暂存区:
暂存区又称缓存区,所有需要提交的文件都需要先加入到暂存区,用git add 指令把待提交的文件加入暂存区。
本地仓库:
通过git commit将暂存区里的代码提交到地方称为本地仓库(此时还没有push到远程仓库,所以gitlab中还没有本地上传的文件)。

7.5.3 克隆项目

第一次需要进行全局设置。
git config --global user.name "XX"
git config --global user.email "XXX@163.com"
将远程仓库的项目克隆到本地,在本地生成同名目录,并且目录中会有所有的项目文件。
git clone http://10.66.55.132:6001/zhangsan/hello.gitgit clone + http克隆地址
输入用户名密码后即可。
2.jpg

7.5.4 添加提交

添加文件到暂存区,并提交到本地仓库。
将代码文件 cp 到目录中 cp -r ../file-master/ .
添加所以文件到暂存区 git add .
提交到本地仓库 git commit -m "v1.0"
查看暂存区和工作区的状态 git status

# 添加指定文件到暂存区
git add 文件名

# 添加目录中所有文件到暂存区
git add .

# 将暂存区的文件提交到本地仓库,并添加描述,-m 表示只会提交暂存区的文件
git commit -m "提交描述信息"

# 查看暂存区和工作区的状态
git status

7.5.5 提交

将文件同步到 gitLab 服务器上 git push
由于没有设置 ssh 密钥,需要再次输入用户名和密码。
5.jpg

# 向gitLab远程仓库推送代码
git push -u origin master

# 将本地Git仓库和远程仓库关联起来,并设置远程仓库名称
git remote add http地址
例:git remote add origin http://10.66.55.132:6001/gitlab-instance-4ff98bbd/test.git

# 拉取服务器上最新资源
git pull origin master

7.5.6 在 gitlab 查看

image.png

7.5.7 在 gitlab 中修改代码并保存

1670396399657.jpg
1670396581865.jpg
1670396664027.jpg

7.6 gitlab删除仓库

点击进入到要删除的项目仓库
gitlab删除仓库1.jpg

找到 settings 下的 General,点击 Advanced 旁边的 Expand
gitlab删除仓库2.jpg

下拉到最后,找到 Delete project
gitlab删除仓库3.jpg

复制粘贴上面的内容,点击 Yes,Delete project
gitlab删除仓库4.jpg

7.7 其他常用操作

7.7.1 工作台

查看汇总信息
1664418068209.jpg

7.7.2 查看监控

1664418068234.jpg

参考文档:
https://help.aliyun.com/document_detail/52857.html#section-6r1-7kt-txz
https://blog.csdn.net/weixin_43367756/article/details/126048316
https://blog.csdn.net/weixin_39903846/article/details/111216340

8. FAQ

8.1 502报错

**问题:**使用 apt 部署安装,正常启动之后登录浏览器查看发现报错
Whoops, GitLab is taking too much time to respond
出现502报错,通常是由于后端无法正常回复浏览器的请求响应
排查过程及解决:
由于部署的gitlab是nginx代理的,在nginx已经正常启动的情况下,首先查看下nginx的日志
cd /var/opt/gitlab/nginx/logs
cat /var/opt/gitlab/nginx/logs/gitlab_access.log
发现大多数日志都是空的
–> 查看配置
cat /var/opt/gitlab/nginx/conf/gitlab-http.conf
–> 在配置中找到 nginx 反向代理的路径 http://gitlab-workhorse
cd /var/opt/gitlab/gitlab-workhorse/sockets
–> unix:/var/opt/gitlab/gitlab-workhorse/sockets/socket
由于对这一块不太熟悉,直接复制粘贴到百度查询
–> 参考文档,查看端口 8080 是否被占用
netstat -tpln
–> 发现 8080 端口被 jenkins 占用了,将此进程杀掉
kill -9 进程号
–> 重启 gitlab
gitlab-ctl restart
解决
原因:
由于 jenkins 占用了 8080 端口,导致 gitlab-puma-worker 组件没有启动成功,所以出现了502报错。
1669341625641.png

参考文档:
http://t.zoukankan.com/caicaizi-p-14001332.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1528548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音视频批量提取软件|无水印视频下载

抖音视频批量提取软件,让您高效下载精彩内容! 您是否经常需要下载抖音视频,但传统的下载方式繁琐且低效?别担心,我们为您提供了一款强大而智能的抖音视频批量提取软件,让您轻松实现下载无水印的精彩内容&am…

怎么制作电子版报纸

​随着科技的飞速发展,电子版报纸已成为信息传播的重要渠道。它不仅方便快捷,而且环保节能,深受读者喜爱。如何制作电子版报纸,让您轻松掌握这一技能呢? 1.打开FLBOOK电子杂志制作网站 2.点击模板,FLBOOK有…

塑料工厂5G智能制造数字孪生可视化平台,推进塑料行业数字化转型

塑料工厂5G智能制造数字孪生可视化平台,推进塑料行业数字化转型。塑料制造行业作为重要的工业领域,亟需借助这一平台实现产业升级与转型,以适应市场的变化和提高生产效率。传统的塑料制造过程往往存在生产效率低下、资源浪费、环境污染等问题…

为什么技术人员副业赚钱那么难?

公众号:小北技术圈。 34岁老程序员,长期探索副业项目,写过IDEA插件,搞过工具导航,做过出海网站,运营过自媒体。欢迎提前探索35岁程序员的第二赛道。 每周分享干货内容。寻找100个技术人员,聚在…

掌握关键技巧!音频转换精灵如何使用?

在数字媒体时代,音频格式的转换已成为日常工作中不可或缺的一部分。为了满足这一需求,市场上涌现出众多音频转换工具。其中,音频转换精灵以其强大的功能和简便的操作赢得了广泛好评。本文将为你详细介绍如何使用该软件,让你轻松完…

推动新质生产力的创新引擎——AI Agent 结合的数字员工

今年全国两会,“新质生产力”成为“C位”热词。政府工作报告提出,大力推进现代化产业体系建设,加快发展新质生产力。 何为新质生产力?概括地说,新质生产力是创新起主导作用,摆脱传统经济增长方式、生产力发…

深入探索Java并发编程:ConcurrentSkipListSet的高效使用与实现原理

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在Java的并发编程中,ConcurrentSkipListSet是一个提供高并发访问能力的有序集合实现。它基于Skip List(跳…

爬虫技术实战案例解析

目录 前言 案例背景 案例实现 案例总结 结语 前言 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊爬虫技术实战案例解析,希望大家能觉得实用! 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!&#x1…

HCIP的学习(2)

TCP----传输控制协议 是一种面向连接的可靠传输协议。 注:与我之前博客HCIA的学习(2)结合一起看 面向连接:数据传输前收发双方建立一条逻辑通路 特点: TCP是一种面向连接的传输协议每一条TCP连接有且只能存在两个端…

(德迅零域)微隔离安全平台是什么,有什么作用?

网络隔离并不是新的概念,而微隔离技术(Micro-Segmentation)是VMware在应对虚拟化隔离技术时提出来的,但真正让微隔离备受大家关注是从2016年起连续3年微隔离技术都进入Gartner年度安全技术榜单开始。在2016年的Gartner安全与风险管…

动态规划(算法竞赛、蓝桥杯)--单调队列优化修建草坪

1、B站视频链接&#xff1a;E44 单调队列优化DP 修剪草坪_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; typedef long long LL; const int N1e510; int n,k,q[N]; LL w[N],f[N],sum;int main(){cin>>n>>k; k; //for(int i1;i<n;i){ci…

用python模拟天体运动(二体运动与天体轨道稳定问题)

目录 1. 模拟天体运动的代码 2. 运行效果 3. 非平方反比(轨道稳定性问题) 1. 模拟天体运动的代码 接下来我们将用python模拟实现天体运动 以下是我们所需要的库&#xff1a; import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy …

如何视频转文字?试试这三款工具!

随着信息化时代的来临&#xff0c;视频内容愈发丰富多样&#xff0c;但如何从海量的视频中快速提取出关键信息呢&#xff1f;视频转文字工具应运而生&#xff0c;它们能够帮助我们高效地将视频内容转化为可编辑的文字形式。那么&#xff0c;在众多的视频转文字工具中&#xff0…

科学计算免费课程集锦

《计算材料学》&#xff08;2023秋&#xff09;点击学习 计算材料学是一门新兴的、发展迅速的综合性基础科学。特别是原子层面上的微观模拟&#xff0c;已经构成了相当丰富的理论体系&#xff0c;为解决复杂材料体系规律、性质的研究提供了重要手段。在这样的学科发展背景下&a…

【Vue3】走进Pinia,学习Pinia,使用Pinia

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

基于GEC6818的QT开发之——通过不同按键控制DHT11模块的数据采集与动态显示

基于GEC6818的QT开发之——通过不同按键控制DHT11模块的数据采集与动态显示 使用环境: ubantu16 QT5.7 开发板GEC6818 实现要求&#xff1a; 利用A53按键1、按键2与温湿度传感器完成QT界面动态显示温湿度记录&#xff0c;并指定温湿度记录超过指定范围&#xff0c;进行报警&…

十四届蓝桥杯 BC A.日期统计

思路&#xff1a; 循环2023的每一天&#xff0c;一共八位数&#xff1b;年份是确定的&#xff0c;只需要循环月份和天数&#xff0c;注意这里已知2023的2月份天数为28天。用b数组 int b[8]{2,0,2,3,month/10,month%10,d/10,d%10};//枚举2023的每一天来和已知数据的八位数字比较…

ESP32蓝牙系列二:协议和规范

本文以ESP32的API接口对GAP GATT ATT再做分析 一、GAP ESP32 BLE 通⽤用访问规范 (GAP) 接口 API 的实现和使⽤用流程&#xff0c; GAP 协议层定义了了 BLE 设备的发现流程&#xff0c;设备管理理和设备连接的建立。 BLE GAP 协议层采⽤用 API 调⽤和事件 (Event) 返回的设计…

从零开始学习在VUE3中使用canvas(四):globalAlpha(全局透明度)

一、简介 在canvas中&#xff0c;我们可以使用下面的方式设置全局透明度&#xff1a; const ctx canvas.getContext("2d");ctx.globalAlpha 0.5; 当然&#xff0c;在设置透明度的时候也可以直接填充带透明度的颜色 ctx.fillStyle "rgba(175, 20, 184, 0.5…

白酒:新型酶制剂在酿造过程中的作用与应用

随着生物技术的不断发展&#xff0c;新型酶制剂在许多领域都得到了广泛的应用。在豪迈白酒的酿造过程中&#xff0c;新型酶制剂也发挥了重要作用。云仓酒庄紧跟科技前沿&#xff0c;积极探索新型酶制剂在酿造过程中的应用&#xff0c;以提高产品质量和生产效率。 首先&#xff…