如何搭建gitlab和使用教程
- 一、Gitlab介绍
- 二、搭建gitlab并实现ssl
-
- 1、配置yum源或下载gitlab包
- 2、安装依赖软件及获取GPG密钥
- 3、安装gitlab-ce
- 4、创建私有密钥
- 5、创建私有证书
- 6、创建CRT签名证书
- [7、利用openssl签署pem 证书](#7、利用openssl签署pem 证书)
- 8、配置证书到gitlab
- 9、初始化gitlab
- 10、nginx配置重写到https
- 11、windows配置hosts
- [12、windows访问测试(https://gitlab.wang.com 登录测试)](#12、windows访问测试(https://gitlab.wang.com 登录测试))
- [13、 登录并修改root初始密码](#13、 登录并修改root初始密码)
- 14、更改语言为中文(可选)
- [15、 关闭账户自动注册](#15、 关闭账户自动注册)
- 16、管理员创建账户和组
- 17、管理员创建项目
- 18、配置登录免密认证
- 19、项目成员权限分配
- 20、gitlab项目介绍
- 21、gitlab常用命令
- 三、总结
-
- 1、开源与免费选项
- [2、一体化 DevOps 平台](#2、一体化 DevOps 平台)
- 3、分布式特性
- 4、高度集成与可配置性
- 5、社区活跃与支持
- 6、企业级功能
- 7、易用性与用户体验
一、Gitlab介绍
1、什么是Gitlab
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。
安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab是目前被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对group和project两个维度进行代码和文档管理, 其中group是群组, project是工程项目, 一个group可以管理多个project, 可以理解为一个群组中有多项软件开发任务, 而一个project中可能包含多个branch, 意为每个项目中有多个分支, 分支间相互独立, 不同分支可以进行归并。
二、搭建gitlab并实现ssl
1、配置yum源或下载gitlab包
方法1:创建一个新的yum源文件,文件内容如下
vim /etc/yum.repos.d/gitlab.repo
[gitlab-ce]
name=Gitlab-CE
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
#此变量$releasever表示本服务器的当前系统版本号
gpgcheck=0
enabled=1
方法2:或者直接wget下载gitlab的rpm安装包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.2.2-ce.0.el7.x86_64.rpm
2、安装依赖软件及获取GPG密钥
hostnamectl set-hostname gitlab.wang.com
#修改主机名
bash
#刷新shell
echo 192.168.174.12 gitlab.wang.com >>/etc/hosts
#将本机对应域名添加到本机hosts文件中
yum install -y curl policycoreutils openssh-server openssh-clients postfix
#安装gitlab依赖软件
curl:用于上传或者下载,可以进行数据传输
openssh-server:ssh协议远程登录服务端
openssh-clients:ssh协议远程登录客户端
postfix:邮件传输协议,用于发送邮件
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#获取GPG密钥,保证下载的gitlab包是由gitlab官方发布的不是被篡改的软件包
GPG密钥:GPG密钥可以保证软件下载的完整性和安全性。通过使用该公钥,你可以验证下载的软件包是否来自GitLab官方,从而确保GitLab安装的安全。
systemctl enable postfix --now
#开机自启postfix并现在立即启动
3、安装gitlab-ce
方法1:上面配置过gitlab的yum源了直接yum安装即可
yum install gitlab-ce -y
方法2:
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
#curl -s:静默模式常用于脚本下载。-S若出错不止是输出错误代码,要输出错误详细信息。下载gitlab官网的rpm.sh脚本传给bash执行。不用手动编辑配置yum源
yum install gitlab-ce -y
#然后再yum安装gitlab
4、创建私有密钥
mkdir -p /etc/gitlab/ssl
#创建存放密钥的目录
openssl genrsa -out "/etc/gitlab/ssl/gitlab.wang.com.key" 2048
#利用openssl创建密钥-out指定密钥输入位置
Generating RSA private key, 2048 bit long modulus
........................................................................................+++
............+++
e is 65537 (0x10001)
#创建成功输出内容
cd /etc/gitlab/ssl
ls
gitlab.wang.com.key
#进入存放密钥的目录查看有创建的私钥
5、创建私有证书
openssl req -new -key "/etc/gitlab/ssl/gitlab.wang.com.key" -out "/etc/gitlab/ssl/gitlab.wang.com.csr"
#创建私有证书签名
req表示使用openssl工具生成证书签名请求。
-new:表示创建一个新的证书签名请求。
-key:表示指定使用的私钥文件
-out:表示将csr文件保存到此路径下
#填写生成证书的信息,如下:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN #国家,CN表示中国
State or Province Name (full name) []:JS #省份江苏
Locality Name (eg, city) [Default City]:NJ #城市南京
Organization Name (eg, company) [Default Company Ltd]:test #组织单位test
Organizational Unit Name (eg, section) []:test #单位名称test
Common Name (eg, your name or your server's hostname) []:gitlab.wang.com #主机名称
Email Address []:test123@qq.com #邮箱地址
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456 #设置证书密码123456
An optional company name []:test #公司名称test
6、创建CRT签名证书
openssl x509 -req -days 365 -in "/etc/gitlab/ssl/gitlab.wang.com.csr" -signkey "/etc/gitlab/ssl/gitlab.wang.com.key" -out "/etc/gitlab/ssl/gitlab.wang.com.crt"
#利用生成的私钥和私有证书签名CRT证书
-days:证书有效期为365天
-in:指定私有证书
-signkey指定私钥,生成的签名证书为gitlab.wang.com.crt
cd /etc/gitlab/ssl/
ls
#现在应该有以下三个文件
gitlab.wang.com.crt gitlab.lhj.com.csr gitlab.wang.com.key
7、利用openssl签署pem 证书
openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048
#dhparam:表示使用 OpenSSL 工具生成 DH 参数。
#-out /etc/gitlab/ssl/dhparams.pem:表示将生成的 DH 参数保存在指定的文件 /etc/gitlab/ssl/dhparams.pem 中。
cd /etc/gitlab/ssl/
chmod 600 *
ll
#修改ssl下所有证书权限为600
8、配置证书到gitlab
vim /etc/gitlab/gitlab.rb
external_url 'https://gitlab.wang.com'
#改为https协议和自己服务器的域名
nginx['redirect_http_to_https'] = true
#取消#号更改注释并为true,将http重定向到https
# nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.wang.com.crt"
#更改crt证书路径
# nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.wang.com.key"
#更改路径私钥路径
# nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"
#更改pem证书路径 后面的注释不用管# Path to dhparams.pem, eg. /etc/gitlab/ssl/dhparams.pem
9、初始化gitlab
gitlab-ctl reconfigure
#初始化gitlab,过程时间较长耐心等待gitlab-ctl用于管理gitlab
10、nginx配置重写到https
cd /var/opt/gitlab/nginx/conf
ls
gitlab-health.conf gitlab-http.conf nginx.conf nginx-status.conf
vim gitlab-http.conf
#在server listen *:80;下一行添加
server_name gitlab.lhj.com;
#有servername就不写
rewrite ^(.*)$ https://$host$1 permanent;
#重写所有都到https,permanent永久重定向
gitlab-ctl restart
#重启gitlab
11、windows配置hosts
cobol
在Windows系统里C:\Windows\System32\drivers\etc\hosts 添加以下内容
192.168.174.12 gitlab.wang.com
#配置完毕后在cmd的窗口中ping gitlab.wang.com 查看是否能ping通
12、windows访问测试(https://gitlab.wang.com 登录测试)
13、 登录并修改root初始密码
cobol
cat /etc/gitlab/initial_root_password
#查看gitlab初始密码
14、更改语言为中文(可选)
15、 关闭账户自动注册
16、管理员创建账户和组
17、管理员创建项目
18、配置登录免密认证
Gitlab的登录免密验证,配置完成后,可以使得我们的Gitlab自动执行Git命令而无需登录,对于脚本的编写以及其他项目(如Jenkins)的运用这一步是必须的。
csharp
首先,在想要进行验证的设备上执行命令:
ssh-keygen
#四个回车生成免密登录秘钥
19、项目成员权限分配
20、gitlab项目介绍
(1)项目权限
权限名称 | 权限类型 | 权限说明 |
---|---|---|
私有 | Private | 只有属于该项目成员才有权限查看和操作项目 |
内部 | Internal | 具有GitLab账号的人员登陆后都可以克隆项目 |
公开 | Public | 任何人都可以克隆 |
(2)分支角色管理
角色名称 | 角色类型 | 角色说明 |
---|---|---|
匿名用户 | Guest | 访客【只能创建问题和留言评论】 |
报告人 | Reporter | 可以理解为测试员、产品经理等,一般负责提交问题等 |
开发人员 | Developer | 负责项目开发 |
管理者 | Master | 一般是组长,负责对Master分支进行维护 |
所有者 | Owner | 一般是项目经理【拥有所有权限】 |
21、gitlab常用命令
命令 | 说明 |
---|---|
git add | 添加文件到暂存区 |
git status | 查看仓库当前的状态,显示有变更的文件 |
git diff | 比较文件的不同,即暂存区和工作区的差异 |
git commit | 提交暂存区到本地仓库 |
git reset | 回退版本 |
git rm | 删除工作区文件 |
git mv | 移动或重命名工作区文件 |
三、总结
1、开源与免费选项
GitLab 是一款开源软件,遵循 MIT 许可协议,这意味用户可以免费下载并自行安装在自己的服务器上运行,同时也有免费的公共托管服务 GitLab.com 可供选择。
2、一体化 DevOps 平台
集成了版本控制系统(类似 GitHub)、项目管理工具、代码审核(Pull Request)、问题跟踪、Wiki 文档、CI/CD 流水线、容器镜像仓库(GitLab Container Registry)以及安全扫描等功能于一体,简化了整个软件开发流程。
3、分布式特性
基于 Git 分布式版本控制系统,每个开发者的本地都拥有完整的代码仓库副本,提高了协同工作的灵活性和效率。
4、高度集成与可配置性
支持深度集成各种 CI/CD 工具,比如 Jenkins、Kubernetes 等,允许用户根据项目需求灵活配置自动化构建、测试、部署流程。
5、社区活跃与支持
GitLab 拥有一个活跃且不断增长的开发者社区,这意味着更多的贡献者、插件、教程和快速的技术支持。
6、企业级功能
对于企业用户,GitLab 提供了额外的安全控制、权限管理、审计日志、性能优化以及高级 CI/CD 功能,满足大型团队和复杂项目的需求。
7、易用性与用户体验
用户友好的 web 界面,方便非技术或初级开发者进行日常操作,同时也为高级用户提供丰富的 API 和 CLI 工具,实现高效工作流定制。