ThankNeko's Blog ThankNeko's Blog
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)

Hoshinozora

尽人事,听天命。
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)
  • 操作系统

  • 虚拟化服务

  • 数据库服务

    • MySQL笔记

    • ELK笔记

    • Redis笔记

    • MongoDB笔记

    • Git笔记

      • Git介绍与使用
      • Gitlab部署与使用
        • Gitlab介绍
          • Gitlab简介
          • Gitlab的服务构成
        • Gitlab部署
          • 1. 安准依赖
          • 2. 启动Postfix邮箱服务
          • 3. 安装Gitlab
          • 4. 配置Gitlab站点Url
          • 5. 修改puma默认端口
          • 6. 重新配置并启动Gitlab
          • 7. 访问站点
        • Gitlab管理命令
        • Gitlab配置
          • 邮箱服务器配置
          • 配置代码位置
          • 配置Gitlab备份
          • 设置Web页面中文显示
          • 关闭注册功能
        • Gitlab使用
          • 创建用户
          • 创建组
          • 群组添加成员
          • 创建项目
          • 项目添加成员
        • Gitlab推送&拉取项目
          • 1. 创建SSH密钥对
          • 2. Gitlab配置SSH公钥
          • 3. 创建SSH配置文件
          • 4. 测试密钥连接
          • 5. 克隆仓库
          • 6. 创建分支并推送到Gitlab
          • 7. 拉取仓库最新代码
  • 监控服务

  • Web服务

  • 数据处理

  • Ops
  • 数据库服务
  • Git笔记
Hoshinozora
2023-03-10
目录

Gitlab部署与使用

# Gitlab介绍

# Gitlab简介

  • Gitlab是一个基于Git实现的Web代码仓库托管软件,我们可以使用Gitlab来搭建一个类似于Github的私有代码仓库。
  • 一般使用Gitlab搭建私有代码仓库主要是用在公司的内部代码管理,它还可以实现完整的CI/CD流程。
  • Gitlab的原理其实就是git的工作原理,GitHub也是基于git实现的。

# Gitlab的服务构成

  • Nginx - 静态Web服务器
  • gitlab-shell - 用于处理Git命令和修改authorized keys列表
  • gitlab-workhorse - 轻量级的反向代理服务器
    • 它会处理一些大的HTTP请求,比如文件的上传下载,而其他的请求会反向代理给Gitlab Rails应用。
  • logrotate - 日志文件管理工具,实现日志切割
  • postgresql - 数据库
  • redis - 缓存数据库
  • sidekiq - 用于在后台执行队列的任务
  • unicorn - Gitlab Rails应用是托管在这个服务器上面的

# Gitlab部署

# 1. 安准依赖

yum install -y openssh-server policycoreutils-python3 perl
1

# 2. 启动Postfix邮箱服务

  • GitLab发送邮件时需要用到该邮箱服务器,如果不需要邮箱改密之类的功能可以忽视。
yum install -y postfix
systemctl enable postfix && systemctl start postfix
1
2

# 3. 安装Gitlab

  • 方式一
# 添加Gitlab社区版源
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
# 安装Gitlab社区版
yum install -y gitlab-ce
1
2
3
4
  • 方式二
# 下载Gitlab社区版RPM包
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
# 安装Gitlab社区版RPM包
rpm -i gitlab-ce-*.rpm --nodeps
1
2
3
4

# 4. 配置Gitlab站点Url

  • 会使用Gitlab自带的Nginx服务,开启指定端口以供访问Web页面。
  • 不指定端口则默认使用80端口,需要注意不要端口冲突。
vim /etc/gitlab/gitlab.rb

# 修改下面参数为指定域名或IP或IP:端口即可
external_url 'http://192.168.10.11:9500'
1
2
3
4

# 5. 修改puma默认端口

  • 由于默认是8080,可能会和Tomcat的默认端口冲突,所以建议修改。
vim /etc/gitlab/gitlab.rb

# 修改下面参数
puma['port'] = 8000
1
2
3
4

# 6. 重新配置并启动Gitlab

# 重载配置
gitlab-ctl reconfigure
# 检查状态
gitlab-ctl status
1
2
3
4

# 7. 访问站点

  • 站点路径:http://192.168.10.11:9500
  • 查看root用户默认密码:cat /etc/gitlab/initial_root_password

# Gitlab管理命令

  • gitlab-ctl start - 启动命令
  • gitlab-ctl stop - 关闭命令
  • gitlab-ctl restart - 重启命令
  • gitlab-ctl reconfigure - 重载配置命令
  • gitlab-ctl status - 查看组件状态命令
  • gitlab-ctl tail [组件名] - 查看组件日志命令
    • 例如:gitlab-ctl tail nginx

# Gitlab配置

# 邮箱服务器配置

  • vim /etc/gitlab/gitlab.rb

    gitlab_rails['smtp_enable'] = true
    gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
    gitlab_rails['smtp_port'] = 465
    gitlab_rails['smtp_user_name'] = "你的邮箱"
    gitlab_rails['smtp_password'] = "你的邮箱密码"
    gitlab_rails['smtp_domain'] = "exmail.qq.com"
    gitlab_rails['smtp_authentication'] = "login"
    gitlab_rails['smtp_enable_starttls_auto'] = true
    gitlab_rails['smtp_tls'] = true
    gitlab_rails['gitlab_email_from'] = '你的邮箱'
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

# 配置代码位置

  • vim /etc/gitlab/gitlab.rb

    # 找到git_data_dirs并配置地址
    
    git_data_dirs({
       "default" => {
         "path" => "/data/apps/gitlab/data"
        }
    })
    
    1
    2
    3
    4
    5
    6
    7

# 配置Gitlab备份

  • vim /etc/gitlab/gitlab.rb

    # 设置备份文件的保存位置
    gitlab_rails['backup_path'] = "/data/apps/gitlab/backup"
    
    # 设置备份文件的过期时间,单位为秒,默认7天
    gitlab_rails['backup_keep_time'] = 604800
    
    1
    2
    3
    4
    5
  • gitlab-rake gitlab:backup:create - 验证是否配置成功

    • 执行备份命令后,可以去对应的文件路径查看是否已经创建了备份文件。
    • 红色字体描述为敏感文件需要手动备份。

# 设置Web页面中文显示

  • 单击右上角用户头像 -> Preferences -> Language -> 修改为中文后保存刷新页面即可

image-20230311105843705

# 关闭注册功能

  • 使用root用户登录Gitlab后,会有管理员设置。
  • 设置 -> 通用 -> 注册限制-> 取消勾选"已启用注册功能" -> 保存更改。

image-20230310235825071

# Gitlab使用

# 创建用户

我们想要让其他人使用Gitlab,首先需要给用户创建一个普通账号。

登入root用户 -> 进入管理中心页面 -> 概览 -> 用户 -> 新用户。

image-20230311103040442

为了防止权限配置不当造成代码泄露等问题,一般会由管理员创建群组和项目,所以不需要给用户创建群组和项目的权限,并且只给普通用户权限。

  • 此处的Projects limit只会限制个人项目创建。而不会限制群组下的项目创建权限,如果需要限制群组的项目创建权限,则需要在群组设置中修改配置。
  • 但一般不需要限制群组下的项目创建权限,因为即便群组下开发者权限的用户创建了一个项目,该项目也只能由群组的维护者或所有者来进行成员管理或其他的管理操作。

image-20230311103933474

创建好之后点编辑,进行初始密码的设定。

image-20230311103434511

image-20230311104031180

自此用户就可以用设定的密码登录了,用户第一次登录会提示修改密码。

# 创建组

想要拉取或推送项目,就需要在Gitlab上创建一个项目。而Group则是用来给项目分类的,Group和Projects的关系,就好比一个业务下的一个个小的项目。

登录有创建组权限的用户 -> 群组 -> 新建群组。

image-20230311104447996

image-20230311104738582

创建群组后,群组下还可以新建子群组和项目。

image-20230311104915643

# 群组添加成员

需要注意的是群组下添加成员,成员的权限会涉及群组下的所有项目。

  1. 登录群组拥有者账号 -> 首页 -> 群组 -> 进入指定的群组。

image-20230311105143567

  1. 群组信息 -> 成员 -> 邀请成员。
  • 我们选择对应的成员、成员角色权限后进行邀请即可

    • Guest - 【访客】可以创建issue、发表评论,不能读写版本库

    • Reporter - 【报告者】 QA质量保证工程师、PM项目经理等使用,可以克隆代码,不能提交

    • Developer - 【开发者】 RD研发工程师使用,可以克隆代码、开发、提交、push

    • Master - 【主人】核心RD负责人使用,负责对Master分支进行维护,可以创建项目、添加tag、保护分支、添加项目成员、编辑项目

    • Owner - 【拥有者】 开发部门领导使用,设置项目可见度、删除项目、迁移项目、管理组成员

image-20230311105023097

image-20230311105422143

  1. 邀请完后,对应成员就能看到对应项目了。

# 创建项目

  • 需要使用有项目创建权限的账号进行创建,然后在主页或者群组页面点击新建项目。

image-20230311112142314

# 项目添加成员

项目下添加成员,成员的权限只会涉及该项目,即便是授权给群组成员外的成员,该成员也无法看到该群组下的其他没有权限的项目。另外项目中的成员角色设置,优先于群组中的成员角色设置。

  1. 项目页面 -> 项目信息 -> 成员 -> 邀请成员。
    • 我们选择对应的成员、成员角色权限后进行邀请即可。

image-20230311112957895

image-20230311113828194

  1. 添加后对应成员就能看到对应的项目了。

# Gitlab推送&拉取项目

# 1. 创建SSH密钥对

# CMD执行
ssh-keygen -o -t rsa -b 4096 -C "任意邮箱地址" -f C:\Users\%USERNAME%\.ssh\gitlab_id_rsa
1
2

# 2. Gitlab配置SSH公钥

  • 打开刚刚生成的公钥,复制其中的内容,公钥路径C:\Users\%USERNAME%\.ssh\gitlab_id_rsa_pub
  • 打开Gitlab页面 -> 右上角头像 -> 编辑个人资料 -> SSH密钥 -> 输入复制的公钥到密钥框。
    • 然后配一下到期时间之类的,单击添加密钥即可。

image-20230311141500256


# 3. 创建SSH配置文件

在连接对应主机时,会使用对应的密钥。

  • ./ssh下创建名为config的文件。

  • 配置格式内容如下:

    Host [主机别名]
        参数名 值
        ... ...
    
    1
    2
    3
    • # 参数:
    • Host - 指定主机别名,只要是合法的变量名称且不重复即可,可任意指定,ssh命令通过该名称来连接到指定服务器

    • Hostname - 服务器地址,可以是域名,也可以是ip地址

    • Port - 端口号,默认为22,只有修改了SSH连接的默认端口才需要配置此参数

    • User - SSH的登陆用户名,指定为Gitlab用户名

    • Preferredauthentications - 指定客户端身份验证方法的顺序,此选项的默认值是:"gssapi-with-mic, hostbased, publickey, keyboard-interactive, password"

    • IdentityFile - 指定连接使用的私钥文件

  • 例如:

    Host github
        Preferredauthentications publickey
        IdentityFile ~/.ssh/id_rsa
    
    Host gitlab
        Hostname 192.168.10.11
        User lisi
        Preferredauthentications publickey
        IdentityFile ~/.ssh/gitlab_id_rsa
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

# 4. 测试密钥连接

ssh -T git@gitlab
1

# 5. 克隆仓库

# 创建仓库目录
mkdir C:\Users\%USERNAME%\Desktop\git_test_dir
# 切换到仓库目录
cd C:\Users\%USERNAME%\Desktop\git_test_dir

# 配置提交时的信息
git config --global user.name "任意名称"
git config --global user.email "任意邮箱地址"

# 克隆代码仓库
git clone git@gitlab:short-message/receiver.git
# 切换到本地仓库工作区
cd receiver
1
2
3
4
5
6
7
8
9
10
11
12
13

# 6. 创建分支并推送到Gitlab

# 创建分支
git switch -c master
# 创建一个文件
echo “First File” > README.md
# 文件添加到暂存区
git add README.md
# 提交一次版本
git commit -m "add README"
# 推送到Gitlab
git push -u origin master
1
2
3
4
5
6
7
8
9
10

# 7. 拉取仓库最新代码

  • 使用git pull命令拉取当前分支最新代码即可。
#代码管理#Git#Gitlab
Git介绍与使用
Prometheus介绍

← Git介绍与使用 Prometheus介绍→

最近更新
01
二〇二五年四月十七日随笔
04-17
02
二〇二五年四月十六日随笔
04-16
03
二〇二五年四月九日随笔
04-09
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Hoshinozora | MIT License
湘ICP备2022022820号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式