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

相关推荐
明月心9521 天前
git remote add 用法
gitlab
only_Klein1 天前
jenkins流水线报错:Connection reset by peer
ci/cd·kubernetes·gitlab·jenkins·ssl
梁萌2 天前
docker部署gitlab和gitlab runner
docker·eureka·gitlab
johnnyAndCode2 天前
Idea 设置GitLab时使用账密,而不是token的配置方法
gitlab·idea
天外飞雨2 天前
Gitlab使用
gitlab
BUTCHER53 天前
GitLab SSH 密钥配置
运维·ssh·gitlab
明月心9523 天前
GitLab使用
gitlab
明月心9524 天前
gitlab pull requets
gitlab
BUTCHER54 天前
GitLab基本设置
gitlab
张小凡vip4 天前
Kubernetes---gitlab的ci/cd发布基于k8s的项目示例参考
ci/cd·kubernetes·gitlab