16 gitlab

16 gitlab

16.1 安装

安装 GitLab 需要依赖

policycoreutils-python 包

复制代码
yum install policycoreutils-python

GitLab 还可能需要其他基础依赖,一并安装:

复制代码
yum install -y curl policycoreutils openssh-server openssh-clients postfix

下载gitlab

从官网下载适配 el7 的 GitLab 版本(与 centOS 7.6兼容):https://packages.gitlab.com/app/gitlab/gitlab-ce/search?dist=el%2F8

注:如果云服务器是其他版本,安装步骤见https://blog.csdn.net/weixin_43268590/article/details/125009013?fromshare=blogdetail&sharetype=blogdetail&sharerId=125009013&sharerefer=PC&sharesource=LSL666_&sharefrom=from_link

下载后的rpm包拖到/usr/local/src目录下

安装gitlab

复制代码
rpm -ivh gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm

安装成功后会出现下面界面

编辑 GitLab 配置文件

配置gitlab的访问地址。

复制代码
vim /etc/gitlab/gitlab.rb

//后面的ip是自己云服务器的ip(这个如果不写端口号,默认就是80端口)

重新加载配置

复制代码
gitlab-ctl reconfigure

访问gitlab

在浏览器输入 http://你的ip,会出现以下界面,密码自己设置。

用户是root,默认的,每个人都有一个默认的root,密码就是刚刚自己设置的密码。

登录后的页面和github类似

16.2 使用

新建项目

登录后创建空白项目

选择项目路径,输入项目名称,项目描述,选择项目等级(私人的,内部的,公开的)

创建后会出现这个页面

关联远程仓库

GitLab 可以通过 HTTP 连接和 SSH 连接。
gitlab上有这个提示 是因为SH 连接在代码拉取(pull)和推送(push)时具有一些优势,比如不需要每次都输入用户名和密码(配置好 SSH 密钥后可实现无密码认证)、传输效率和安全性也较高。GitLab 提示你添加 SSH 密钥到个人资料,是为了让你可以选择使用更便捷的 SSH 方式进行代码的拉取和推送操作;如果你暂时不想配置,也可以继续使用 HTTP 方式,只是可能需要频繁输入认证信息。

http连接

ssh连接

生成公钥

GitLab 的 SSH 密钥权限是 "按设备 / 终端区分"的:

  • 服务器和本地电脑是两台不同的设备,各自的操作环境独立,所以需要分别生成密钥并配置到 GitLab 中,才能让它们各自拥有访问权限。
  • 简单说:"谁要连接 GitLab 仓库,谁就需要配置自己的 SSH 密钥"
    比如你通过 SSH 登录到一台远程服务器,想在这台服务器上拉取、推送 GitLab 仓库的代码,那么就需要在这台服务器上生成 SSH 密钥(ssh-keygen),然后把生成的公钥(id_rsa.pub)添加到 GitLab 中。
    如果你想在自己的本地电脑上开发,直接拉取、推送代码到远程 GitLab 仓库,那么就需要在本地电脑(Windows)上生成 SSH 密钥(ssh-keygen),然后把本地的公钥(id_rsa.pub)添加到 GitLab 中。
    生成公钥的方法和Gitee、github的方法一样。
在云服务器上生成公钥

在mobaxterm上执行命令

复制代码
ssh-keygen


注:ssh-keygen 命令本身支持所有参数(包括 -t 指定算法、-C 指定注释),无论在服务器(Linux)还是本地(Windows)生成,都可以加这些参数。无论是服务器还是本地,不指定参数时,ssh-keygen 会用默认值:

  • 算法默认是 RSA(旧系统)或更优算法(新系统,如 ED25519);
  • 注释默认是:云服务器为 当前用户名@设备名、本地为 你的Windows用户名@电脑名)。云服务器的当前用户名@设备名就是打开mobaxterm输入命令时前面[] 里的值,比如root@iZ2zecrpxkiu7zm08qc5ugZ。本地的同理,在git bash里输入命令时前面[] 里的值,比如LSL66@LSL
    查看公钥,将上面的公钥文件复制到gitlab中

    在gitlab上点击

    粘贴复制过来的公钥

在本地电脑上生成公钥

因为前面已经在本地生成过公钥,并且同一个 SSH 公钥可以同时配置到 Gitee、GitHub、GitLab 等多个代码托管平台,不会冲突。所以这里就用以前的公钥。
查看以前的公钥

配置到gitlab

此时回到git bash测试连接,如果显示要输入密码,说明公钥可能没有配置成功或者是gitlab无法正确读取到私钥(虽然是一样的步骤,在Gitee上能成功可能是因为Gitee每次试私钥时的次数更多,但是gitlab可能试1-2次就会返回,或者是其他原因)。

复制代码
ssh -T git@你的ip

此时,手动指定私钥,看公钥是否配置成功

复制代码
ssh -i ~/.ssh/id_rsa -T git@你的ip

手动指定后可以成功登录,但是不指定就是显示要输入密码。

此时在本地~/.ssh/,目录下新建config文件。config 文件的作用是 "主动指定密钥",即告诉 SSH 客户端:"连接到 xxx 服务器时,就用 yyy 这个私钥"。

复制代码
# GitLab 配置(云服务器)
Host gitlab-cloud
    HostName 你的GitLab服务器IP  # 替换为实际的云服务器IP(如xxxxx)
    User git                     # GitLab 的SSH连接默认用户是git,固定不变
    IdentityFile ~/.ssh/id_ed25519  # 你的GitLab私钥路径(确保和实际文件名一致)

# 无需添加Gitee配置,保持现状即可(不影响现有功能)

注:IdentityFile需要和前面配置到gitlab的保持一致,这里和上面的没有保持一致是因为后面我重新换过配置到gitlab的公钥,这个公钥的文件名是id_ed25519.pub

此时可以成功连接

连接远程仓库

这个有两个方法,一个是直接克隆远程仓库,一个是本仓库关联远程仓库。以克隆为例:

点进去远程仓库往下翻就是教程,在ssh的位置可以选择要显示ssh的教程还是http的教程。

直接复制即可

gitlab更多使用步骤见GitLab使用教程(详细)-CSDN博客

16.3 GitLab终端常用命令

查看gitlab 版本,有两个命令。任选其一即可。

复制代码
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

复制代码
rpm -qa gitlab-ce

查看安装目录

复制代码
ls /opt/gitlab/

复制代码
ll /opt/gitlab/

查看数据目录

复制代码
ll /var/opt/gitlab

启动所有 gitlab 组件

复制代码
gitlab-ctl start

检查服务状态:

复制代码
gitlab-ctl status  # 确保nginx、postgresql、unicorn等核心服务为run状态

如果出现下面这种情况,Sidekiq 服务处于 down 状态,会导致访问出现502错误。

停止所有 gitlab 组件

复制代码
gitlab-ctl stop

重启所有 gitlab 组件

复制代码
gitlab-ctl restart 

重新加载 GitLab 的配置

gitlab-ctl reconfigure

修改默认的配置文件

vim /etc/gitlab/gitlab.rb

查看日志

gitlab-ctl tail

相关推荐
自己的九又四分之三站台1 小时前
GitLab vs Gitea 全面对比:企业级 DevOps 还是轻量级私有仓库?
ci/cd·gitlab·devops·gitea
地球没有花1 小时前
gitlab cicd 部署阿里云k8s
阿里云·ci/cd·kubernetes·gitlab
java_logo1 小时前
GITLAB Docker 容器化部署指南
linux·运维·数据库·docker·容器·eureka·gitlab
成为你的宁宁1 小时前
【Jenkins+GitLab 自动化构建部署实战教程:环境介绍、服务部署、密钥配置、项目推送与自动编译打包全流程详解】
自动化·gitlab·jenkins
HIT_Weston2 小时前
50、【Ubuntu】【Gitlab】拉出内网 Web 服务:http.server 单/多线程分析(二)
前端·ubuntu·gitlab
水星灭绝2 小时前
win11下desktop-docker安装gitlab-ce
docker·容器·gitlab
大海星辰7981 天前
idea项目切换报错add gitlab account
gitlab
一念一花一世界1 天前
CI/CD工具选型:Jenkins、GitLab CI与Arbess的全面对比指南
ci/cd·gitlab·jenkins
HIT_Weston2 天前
47、【Ubuntu】【Gitlab】拉出内网 Web 服务:Nginx 事件驱动分析(一)
前端·ubuntu·gitlab