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
下载后的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