GitLab安装使用指南.md 12 KB

安装指南

Tip:建议内存至少4G(在虚拟机中用2G内存失败了几次,改为4G马上就安装上了),这也是官网的强烈建议 参考:

1. 安装并配置必要的依赖

  1. 安装sshd

    yum install -y curl policycoreutils-python openssh-server
    #设置sshd服务为开机启动
    systemctl enable sshd
    #启动sshd服务
    systemctl start sshd
    
    1. 安装防火墙

    如果已经安装了防火墙并且已经在运行状态,则可直接进行下一步

    yum install -y firewalld systemd
    #开启防火墙
    service firewalld  start
    
  2. 添加http/https服务到firewall

    #添加http/https服务到firewall
    #参数pemmanent表示永久生效,若不加--permanent系统下次启动后就会失效
    firewall-cmd --permanent --add-service=http
    firewall-cmd --permanent --add-service=https
    #重启防火墙
    systemctl reload firewalld
    
    1. 安装Postfix用来发送通知邮件
    #安装Postfix用来发送通知邮件
    yum install postfix
    #将postfix服务设置成开机自启动
    systemctl enable postfix
    #开启postfix
    systemctl start postfix
    

    在安装Postfix期间,可能会出现配置屏幕。选择“Internet Site”并按enter键。使用您的服务器的外部DNS以“mail name”并按enter。如果出现额外的屏幕,继续按enter键接受默认值。

2. 安装gitlab

在这一步中,官网指南是先下载gitlab的yum源,然后yum install gitlab_gitlab-ee,但是该yum源国内访问不了。且官网在这一步中说明又不是很详细,所以我参考下面这篇文章,下载 rpm 手动安装。

参考:

  1. 下载

    清华开源镜像站#gitlab-ce#yum#el7

    • gitlab-ce 社区版,gitlab-ee 企业版

    • EL是Red Hat E nterprise L inux(EL)的缩写。

      • EL6是Red Hat 6.x,CentOS 6.x和CloudLinux 6.x的下载。
      • EL5是Red Hat 5.x,CentOS 5.x和CloudLinux 5.x的下载。
      • EL7是Red Hat 7.x,CentOS 7.x和CloudLinux 7.x的下载。
    • 下载一个具有汉化版本的gitlab版本(gitlab版本要和汉化版本一致!!!)

    #从清华大学的开源镜像站下载rpm包
    wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm
    
    1. 安装
    rpm -i gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm
    

    如果下图,则表示安装成功

    image-20200730062728883

  2. 修改配置

    vim  /etc/gitlab/gitlab.rb
    #编辑以下内容,指定域名/ip和端口
    external_url 'http://10.0.2.15:8090'
        
    #在防火墙中开放该端口号
    firewall-cmd --permanent --zone=public --add-port=8090/tcp
    #重启防火墙
    systemctl reload firewalld
    

    external_url 域名和ip都可以,但是端口号不能占用

    1. 启动
    #重载配置文件
    gitlab-ctl reconfigure
    #重启
    gitlab-ctl restart
    

    如下图,表示成功

    image-20220817143801362

    1. 在卸载gitlab然后再次安装执行gitlab-ctl reconfigure的时候往往会出现:

      ruby_block[supervise_redis_sleep] action run 或者

      ruby_block[wait for redis service socket] action run

      一直卡无法往下进行!

      解决方法:按 ctrl+c 退出,然后执行systemctl restart gitlab-runsvdir,再继续执行gitlab-ctl reconfigure,如安装过程遇到报错信息,可重复执行gitlab-ctl reconfigure

    2. 如果遇到 “Chef Client failed. 3 resources updated in 03 seconds” 问题

      执行 yum install libsemanage-static libsemanage-devel,然后执行 gitlab-ctl reconfigure

    gitlab的常用命令:

    # 启动所有 gitlab 组件
    gitlab-ctl start
    # 停止所有 gitlab 组件
    gitlab-ctl stop
    # 重启所有 gitlab 组件
    gitlab-ctl restart  
    # 查看 gitlab 组件服务状态
    gitlab-ctl status
    # 重新加载配置文件
    gitlab-ctl reconfigure
    # 编辑配置文件
    vim /etc/gitlab/gitlab.rb
    # 检查gitlab
    gitlab-rake gitlab:check SANITIZE=true --trace
    # 查看日志
    gitlab-ctl tail
    
    1. 访问http://10.0.2.15:8090
    • 如果没有域名,直接输入服务器ip和指定端口进行访问
    • 初始账户: root 密码: 5iveL!fe
    • 第一次登录需要修改密码

    image-20200731211515954

    • 第一次访问的时候,页面显示 502,百度了好多解决方法都差不多,也都试了,没啥用。后来放着过了一段时间刷新,竟然好了,也不知道什么原因

    3. 汉化

    gitlab的汉化有一个单独的项目 https://gitlab.com/xhang/gitlab

    参考:

    1. 克隆汉化补丁
    git clone https://gitlab.com/xhang/gitlab.git
    

    克隆的时候速度很慢很慢,而且还有可能出现:

    [root@centos7 ~]# git clone https://gitlab.com/xhang/gitlab.git
     正克隆到 'gitlab'...
     remote: Enumerating objects: 40998, done.
     remote: Counting objects: 100% (40998/40998), done.
     remote: Compressing objects: 100% (15116/15116), done.
     error: RPC failed; result=18, HTTP code = 200 | 266.00 KiB/s
     fatal: The remote end hung up unexpectedly
     fatal: 过早的文件结束符(EOF)
     fatal: index-pack failed
    

    解决方法参考 Git使用指南#问题总结

    建议:先下载 gitlab 项目,然后上传到服务器

    1. 查看全部分支版本
    cd gitlab
    git branch -a
    
  3. 对比版本、生成补丁包

    !!!注意:gitlab 版本要和 汉化版本一致

    #设置变量gitlab的版本
    gitlab_version=$(cat /opt/gitlab/embedded/service/gitlab-rails/VERSION)
    #比较汉化标签和原标签,导出 patch 用的 diff 文件
    git diff v${gitlab_version} v${gitlab_version}-zh > ../${gitlab_version}-zh.diff
    
    1. 停止gitlab
    gitlab-ctl stop
    
  4. 打补丁

    patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < ${gitlab_version}-zh.diff
    
    1. 启动和重新配置
    #启动
    gitlab-ctl start
    #重新配置
    gitlab-ctl reconfigure
    
  5. 刷新页面

    如果汉化中出现问题,请重新安装 GitLab(注意备份数据)。

  6. 疑似汉化不完整

    image-20200731213553937

    解决:在 Settings -> Preferences 的 Localization 中选择“简体中文” 即可。

4. 卸载gitlab

  1. 停止 gitlab

    gitlab-ctl stop
    
    1. 卸载gitlab
    #如果是社区版,则 rpm -e gitlab-ce
    rpm -e gitlab-ee
    
  2. 杀死gitlab进程

    #查看进程
    [root@centos7 ~]# ps -ef|grep gitlab
    root      1340     1  0 21:25 ?        00:00:00 runsvdir -P /opt/gitlab/service log: ................................................................................................................................................................................................................................................................................................................................runsvdir /opt/gitlab/service: warning: time warp: resetting time stamp. ...
    root      1348  1344  0 21:25 ?        00:00:00 svlogd /var/log/gitlab/gitaly
    root      1349  1340  0 21:25 ?        00:00:00 runsv gitlab-workhorse
    root      1352  1343  0 21:25 ?        00:00:00 svlogd -tt /var/log/gitlab/redis
    root      1353  1346  0 21:25 ?        00:00:00 svlogd -tt /var/log/gitlab/puma
    root      1355  1347  0 21:25 ?        00:00:00 svlogd /var/log/gitlab/sidekiq
    root      1357  1345  0 21:25 ?        00:00:00 svlogd -tt /var/log/gitlab/postgresql
    root      1362  1351  0 21:25 ?        00:00:00 svlogd -tt /var/log/gitlab/logrotate
    root      1363  1349  0 21:25 ?        00:00:00 svlogd /var/log/gitlab/gitlab-workhorse
    root      1368  1350  0 21:25 ?        00:00:00 svlogd -tt /var/log/gitlab/nginx
    root      1370  1340  0 21:25 ?        00:00:00 runsv gitlab-exporter
    root      1375  1360  0 21:25 ?        00:00:00 svlogd -tt /var/log/gitlab/node-exporter
    root      1377  1370  0 21:25 ?        00:00:00 svlogd -tt /var/log/gitlab/gitlab-exporter
    root      1379  1373  0 21:25 ?        00:00:00 svlogd -tt /var/log/gitlab/alertmanager
    root      1380  1374  0 21:25 ?        00:00:00 svlogd -tt /var/log/gitlab/postgres-exporter
    root      1390  1371  0 21:25 ?        00:00:00 svlogd -tt /var/log/gitlab/redis-exporter
    root      1392  1372  0 21:25 ?        00:00:00 svlogd -tt /var/log/gitlab/prometheus
    root      1398  1384  0 21:25 ?        00:00:00 svlogd -tt /var/log/gitlab/grafana
    root      3896  1460  0 22:07 pts/0    00:00:00 grep --color=auto gitlab
        
    #杀死第一个守护进程
    [root@centos7 ~]# kill -9 1340
    #再次查看
    [root@centos7 ~]# ps -ef|grep gitlab
    
    1. 删除gitlab文件
    #删除所有包含gitlab的文件及目录
    find / -name gitlab|xargs rm -rf 
    #删除gitlab-ctl uninstall时自动在root下备份的配置文件
    rm -f /root/gitlab*
    

使用指南

先来熟悉几个概念:

群组:群组允许您管理、协作多个项目。群组的成员可以访问群组下的所有项目。 也可以通过创建 子群组来嵌套群组。 属于群组的项目以群组名称为前缀。现有项目可以移动到一个群组中。

用户:用户的访问等级有:普通用户、管理员。 普通用户可以访问他们的群组和项目。 管理员可以访问所有组,项目和用户,并且可以管理此安装中的所有功能

项目:项目可以用于存放文件(仓库),安排计划(议题),并发布文档(wiki), 及其他功能。 从模板或导入时为空白项目将启用所有功能,但可以在项目设置中将其禁用。 其他Pages模板的信息及安装指南可以在Pages 入门指南中找到. 提示: 您也可以通过命令行来创建新项目。 显示相关命令

主要操作:

  • 添加用户
  • 创建群组
    • 将用户添加到群组下,此时可以设置用户在群组中的角色权限:访客、报告者、开发人员、主程序员、所有者,如此一来用户同时也拥有了对该群组下所有项目的角色权限了。
    • 在群组下创建项目,这样可以使群组下所有的成员用户立马拥有对该项目的角色权限。
  • 创建项目(可以在群组下创建项目,也可单独创建)
    • 邀请成员:角色权限控制、过期时间
    • 邀请群组:最高访问级别控制、过期时间

创建分支

  1. Repository -> 分支 -> 创建分支

    提交合并请求

  2. 填写分支name,并选择从哪个分支下创建分支 Create from

    提交合并请求

  3. 在 idea 右下角 checkout 分支即可

合并请求

  1. 选择 Repository -> 分支,然后在某次提交上点击"合并请求",进入合并请求表单页面

  2. 有2个地方要自定义:Assign 由谁来审批这次合并请求;Target Branch 目标分支,将提交合并到哪个分支上

提交合并请求