4.gitlab详解

1.什么是gitlab

gitlab是一个开源分布式的版本控制系统,ruby语言开发完成

2.gitlab的作用

1).对项目的源代码进行集中管理,方便查看
2).可以对源代码进行源码控制
3).权限管理,能控制用户的增删改查代码的权限
4).不依赖互联网环境

3.为什么用gitlab

1).开源免费,维护简单。适合中小型企业
2).能定期的对数据进行备份,防止数据的丢失。

4.gitlab安装配置优化

4.1 gitlab安装
setenforce 0  #管理selinux
systemctl stop firewalld && systemctl disable firewalld    #关闭防火墙
yum install -y curl openssh-server postfix wget            #安装组件
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.0.0-ce.0.el7.x86_64.rpm   #下载rpm包
yum localinstall -y gitlab-ce-15.0.0-ce.0.el7.x86_64.rpm        #安装gitlab的rpm包

4.2 配置gitlab

配置gitlab域名

external_url 'http://gitlab.rongbiz.com'
4.3 配置gitlab邮箱
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.126.com"
gitlab_rails['smtp_port'] = 25               # 网易端口为25
gitlab_rails['smtp_user_name'] = "xcv-12345@126.com"
gitlab_rails['smtp_password'] = "RKONWQJDMRNVNMHS"           # POP3/SMTP/IMAP服务授权密码
gitlab_rails['smtp_domain'] = "126.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false

### Email Settings
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_display_name'] = 'gitlab-administortra'  # 显示名字
gitlab_rails['gitlab_email_from'] = "xcv-12345@126.com" # 发件邮箱
user["git_user_email"] = "xcv-12345@126.com"
4.4 关闭gitlab组件

由于gitlab核心功能是代码托管,有些额外的组件比较浪费资源,所以考虑关闭。

prometheus['enable'] = false
prometheus['monitor_kubernetes'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_exporter['enable'] = false
prometheus_monitoring['enable'] = false
grafana['enable'] = false
4.5 gitlab初始化组件

第一次需要初始化gitlab服务,后续如果对gitlab配置文件进行修改,也需要执行初始化进行重新配置

gitlab-ctl reconfigure
gitlab-ctl status
gitlab-ctl stop 
gitlab-ctl start
4.6 gitlab配置文件
external_url 'http://gitlab.rongbiz.com'
gitlab_rails['time_zone'] = 'Asia/Shanghai'                         #时区
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_display_name'] = 'gitlab-administortra'  # 显示名字
gitlab_rails['gitlab_email_from'] = "tec@rongbiz.com" # 发件邮箱
user["git_user_email"] = "tec@rongbiz.com"
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465              # 网易端口为25
gitlab_rails['smtp_user_name'] = "tec@rongbiz.com"
gitlab_rails['smtp_password'] = "xxxxxxxxxx"           # POP3/SMTP/IMAP服务授权密码
gitlab_rails['smtp_domain'] = "rongbiz.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
prometheus['enable'] = false
prometheus['monitor_kubernetes'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_exporter['enable'] = false
prometheus_monitoring['enable'] = false
grafana['enable'] = false
4.7 验证gitlab邮箱
gitlab-rails console

# irb(main):001:0>
# Notify.test_email(‘接收方地址’,‘邮件标题’,‘邮件内容’).deliver_now
Notify.test_email('xxxxxxxxxxx@qq.com','hello','hello').deliver_now

5.gitlab用户与用户组

user1(user)
dev(group) --> project项目
user2(user) /
ps:

  • 如果使用user创建一个仓库 那么这个仓库的owner是user
  • 如果使用group创建一个仓库 那么这个仓库的owner是group
5.1 用户组的权限
  • 主程序员: 能够对master dev 分支进行操作
  • 开发者: 仅能对分支进行操作

6.gitlab升级

升级步骤
gitlab-ce-12.3.5 --> gitlab-ce-12.10.9(当前大版本的最新版) --> gitlab-ce-13.0.0 --> gitlab-ce-13.12.9(当前大版本的最新版)

yum localinstall gitlab-ce-xxxxx

7.gitlab忘记密码

1.在 root 用户下执行

gitlab-rails console -e production

2.获得用户数据,修改用户密码

irb(main):001:0> user=User.where(id:1).first
#更改密码并确认密码
irb(main):002:0> user.password="rongbiz"
irb(main):003:0> user.password_confirmation="rongbiz"

#保存退出
irb(main):004:0> user.save!
irb(main):005:0>quit

nginx反向代理gitlab服务

 upstream git {
        server  172.16.0.122:80;
    }
    server {
        listen 80;
        server_name gitlab.xxxx.com gitlab.xxxx.net;
       
        access_log /var/log/nginx/gitlab_access.log main;
         access_log /var/log/nginx/c2p_access.log json;
        error_log  /var/log/nginx/gitlab_error.log ;
   
        #开启http1.1 长连接传输
        proxy_http_version 1.1;
        proxy_set_header Connection "";


        #开启cache
        proxy_buffering on;
        proxy_buffer_size 64k;
        proxy_buffers 4 64k;

       
        location / {
            #屏蔽外放ip访问  允许公司ip访问这个location
            if ( $remote_addr !~ "(123.235.50.95|180.76.155.107|27.223.91.246|47.105.104.152|39.65.7.8|112.255.189.136|221.215.113.150|180.76.155.107|112.255.189.136|27.223.12.118|121.196.178.117|121.41.122.24|47.105.50.218|118.178.142.13|120.55.93.127|222.173.94.214)" ) {
                 rewrite ^(.*) https://www.rongbiz.com redirect;
            }

            # 设置最大允许上传单个的文件大小
            client_max_body_size 2048m;
            proxy_redirect off;
            #以下确保 gitlab中项目的 url 是域名而不是 http://git,不可缺少
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # 反向代理到 gitlab 内置的 nginx
            proxy_pass http://git;
            index index.html index.htm;
        }
    }

posted @ 2022-11-02 15:47  老夫聊发少年狂88  阅读(392)  评论(0编辑  收藏  举报