• gitlab 搭建使用


    1. 硬件要求

    1. ##CPU
    2. 4 核心500用户
    3. 8 核心1000用户
    4. ##内存
    5. 4 G内存500用户
    6. 8 G内存1000用户

    2. 下载 链接

    3. 安装依赖

    yum -y install curl openssh-server postfix wget

    4. 安装gitlab组件

    yum -y localinstall gitlab-ce-15.9.3-ce.0.el7.x86_64.rpm

    5. 修改配置文件

    1. cat > /etc/gitlab/gitlab.rb <<EOF
    2. external_url 'http://gitlab.tom.com'
    3. gitlab_rails['smtp_enable'] = false
    4. gitlab_rails['registry_enabled'] = false
    5. registry['enable'] = false
    6. prometheus['enable'] = false
    7. alertmanager['enable'] = false
    8. node_exporter['enable'] = false
    9. redis_exporter['enable'] = false
    10. postgres_exporter['enable'] = false
    11. gitlab_exporter['enable'] = false
    12. prometheus_monitoring['enable'] = false
    13. EOF

    #使用gitlab.rb文件重新生成子配置文件

    gitlab-ctl reconfigure

    #重启所有gitlab相关文件.

    gitlab-ctl restart

    #查看gitlab状态

    1. ]# gitlab-ctl status
    2. run: gitaly: (pid 31042) 128s; run: log: (pid 30218) 355s
    3. run: gitlab-kas: (pid 31141) 118s; run: log: (pid 30464) 344s
    4. run: gitlab-workhorse: (pid 31147) 117s; run: log: (pid 30632) 294s
    5. run: logrotate: (pid 31157) 117s; run: log: (pid 30173) 367s
    6. run: nginx: (pid 31853) 2s; run: log: (pid 30647) 289s
    7. run: postgresql: (pid 31208) 96s; run: log: (pid 30397) 348s
    8. run: puma: (pid 31197) 97s; run: log: (pid 30575) 306s
    9. run: redis: (pid 31202) 97s; run: log: (pid 30194) 361s
    10. run: sidekiq: (pid 31219) 95s; run: log: (pid 30599) 300s

    6. 登录gitlab页面

    1. ]# cat /etc/gitlab/initial_root_password
    2. # WARNING: This value is valid only in the following conditions
    3. # 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
    4. # 2. Password hasn't been changed manually, either via UI or via command line.
    5. #
    6. # If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
    7. Password: fIElM6At23WAaLvZBiy2lzFvOd8Vz8ch96gw3Y0S+HU=
    8. # NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

    登录用户:root

    密码:/etc/gitlab/initial_root_password文件中的Password字段值

    7. 汉化

    8. 修改密码

    9. 关闭注册功能

    10. 使用案例

    步骤:

    1. 1. 创建dev开发组
    2. 2. 添加用户tom
    3. 3. 用户组添加用户
    4. 4. 创建1个项目happy_app并关联dev组

    10.1. 创建dev开发组

    10.2. 创建用户

    10.3. 关联用户到用户组

    10.4. 创建项目并关联组

    10.5. 普通用户登录gitlab

    1. ]# cat /root/.ssh/id_rsa.pub
    2. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSZ9RvDQpNBc9Hz0vJ8vzQ/bE5Nu7bH9o+krxItSGHvwCCkuducUve0vweyEk52iZRUb3OYAH9Z5GDTFZ+br5sipT/wg8z7FW8g+EhDAOc9adsHSU+hDluKykyw6qLnQ4rX9tIZh6KXrZCiLneRBtfESg+MQvxNYZ8qiAqmiyq3tuz1Wue8KJ/869GvYVoPYDNYt+HBUmSJb9aagVkndXvHvex6ECgRTDrdzoXfpd5HrIlgtvxT46+RnZX5pFiDyUd0K7k9T99VxLQU5oUFUh+YA9glpojleKlOduUa1ld6Lno+StQdAOhKsUYiz31UKwJ5IBE0XCx5OTnG372p0Ib root@jenkins

    把用户主机上/root/.ssh/id_rsa.pub 里面的公钥复制到下图1的位置,如果没有此文件,先ssh-keygen生成

    已经有远程仓库的代码,需要切换远程仓库地址

    1. #把origin重命名为old-origin
    2. git remote rename origin old-origin
    3. #添加新的origin地址
    4. git remote add origin git@gitlab.tom.com:dev/happy-app.git
    5. #推送所有分支
    6. git push -u origin --all
    7. #推送所有tag
    8. git push -u origin --tags

    上面报错是因为此用户权限是developer,无法创建分支,可以用管理员账户把tom用户权限调整为owner.

    已经可以看到代码的分支,标签,提交记录

    11. 如果gitlab管理员用户名密码忘记,重置方法

    gitlab-rake "gitlab:password:reset"

    12. gitlab备份与恢复

    12.1. gitlab服务配置文件备份

    /etc/gitlab目录备份

    12.2. 备份gitlab里面的内容

    1. gitlab_rails['manage_backup_path'] = true #是否可以指定备份目录
    2. gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" #备份目录
    3. gitlab_rails['backup_archive_permissions'] = 0600 #备份的压缩包权限
    4. gitlab_rails['backup_keep_time'] = 604800 #备份保留多久 7
    5. ]# egrep -v '^$|^#' /etc/gitlab/gitlab.rb
    6. external_url 'http://gitlab.tom.com'
    7. gitlab_rails['manage_backup_path'] = true
    8. gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
    9. gitlab_rails['backup_archive_permissions'] = 0600
    10. gitlab_rails['backup_keep_time'] = 604800
    11. gitlab_rails['smtp_enable'] = false
    12. gitlab_rails['registry_enabled'] = false
    13. registry['enable'] = false
    14. prometheus['enable'] = false
    15. alertmanager['enable'] = false
    16. node_exporter['enable'] = false
    17. redis_exporter['enable'] = false
    18. postgres_exporter['enable'] = false
    19. gitlab_exporter['enable'] = false
    20. prometheus_monitoring['enable'] = false
    21. #重新生成子配置文件
    22. ]# gitlab-ctl reconfigure
    23. ]# gitlab-ctl restart
    24. #手动执行备份命令
    25. ]# gitlab-backup create

    12.3. gitlab恢复数据

    先停止写入数据

    1. [root@gitlab ~]# gitlab-ctl stop puma
    2. ok: down: puma: 0s, normally up
    3. [root@gitlab ~]# gitlab-ctl sidekiq
    4. ok: down: sidekiq: 1s, normally up

    执行恢复命令

    注意:执行恢复命令的时候,备份文件的名字去除_gitlab_backup.tar,只要前面的部分

    1. ~]# ll /var/opt/gitlab/backups/
    2. -rw------- 1 git git 512000 Jul 12 08:40 1720744836_2024_07_12_15.9.3_gitlab_backup.tar
    3. ~]# gitlab-backup restore BACKUP=/var/opt/gitlab/backups/1720744836_2024_07_12_15.9.3

    12.4. 定时任务备份

    1. #创建备份目录
    2. mkdir -p /backup/gitlab/{code,conf}
    3. chown -R git.root /backup/gitlab/code
    4. #--------------------------------------------------------------
    5. #修改git配置文件中备份文件夹路径
    6. [root@gitlab ~]# egrep -v '^$|^#' /etc/gitlab/gitlab.rb
    7. external_url 'http://gitlab.tom.com'
    8. gitlab_rails['manage_backup_path'] = true
    9. gitlab_rails['backup_path'] = "/backup/gitlab/code/"
    10. gitlab_rails['backup_archive_permissions'] = 0600
    11. gitlab_rails['backup_keep_time'] = 604800
    12. gitlab_rails['smtp_enable'] = false
    13. gitlab_rails['registry_enabled'] = false
    14. registry['enable'] = false
    15. prometheus['enable'] = false
    16. alertmanager['enable'] = false
    17. node_exporter['enable'] = false
    18. redis_exporter['enable'] = false
    19. postgres_exporter['enable'] = false
    20. gitlab_exporter['enable'] = false
    21. prometheus_monitoring['enable'] = false
    22. #重新生成子配置文件
    23. ]# gitlab-ctl reconfigure
    24. ]# gitlab-ctl restart
    25. #--------------------------------------------------------------
    26. #自动备份脚本
    27. ]# cat /server/scripts/backup-gitlab.sh
    28. #!/bin/bash
    29. #1.备份gitlab数据
    30. gitlab-backup create    
    31. #2.备份gitlab配置和密码文件
    32. tar zcf /backup/gitlab/conf/gitlab-conf-$(date +%F).tar.gz   /etc/gitlab/
    33. #3. 传输到备份服务器
    34. #rsync xxx
    35. #增加定时任务
    36. * 03 * * * /bin/bash /server/scripts/backup-gitlab.sh &> /backup/gitlab/back.log

    13. gitlab证书配置

    1. 为了防止内网渗透,将gitlab服务的访问添加了ssl,具体步骤如下:
    2. 1.gitlab配置https(请先做个快照.)
    3. nginx['enable' ] = true
    4. nginx['client_max_body_size' ]= '250m '
    5. nginx['redirect_http_to_https' ]= true
    6. nginx['redirect_http_to_https _port' ] = 443
    7. nginx['ssl_certificate' ] = "path/ key.crt"
    8. nginx['ssl_certificate_key'] = "path/ key.key"
    9. nginx['ssl_ciphers' ] ="ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256"
    10. nginx['ssl_prefer_server_ciphers']= "on"
    11. nginx['ssl_protocols']= "TLSv1.2"
    12. nginx['ssl_session_cache' ] = "builtin:1000shared:sSL: 10m"
    13. nginx['ssl_session_timeout']= "5m"
    14. 核心:
    15. nginx['ssl_certificate' ] = 用于指定证书 .crt .pem
    16. nginx['ssl_certificate_key']  = 用于指定私钥 .key
    17. 2.gitlab重新配置子项目
    18. gitlab-ctl reconfigure
    19. 重启:
    20. gitlab-ctl restart

    14. 优化配置

    1. 优化暂时不用组件 (选作)
    2. #关闭目前不使用的组件 默认都是true 修改为 false
    3. #关闭prometheus
    4. prometheus['enable'] = false
    5. prometheus['monitor_kubernetes'] = false
    6. #关闭alertmanger
    7. alertmanager['enable'] = false
    8. #关闭exporter 如果需要prometheus监控 则可以打开。
    9. node_exporter['enable'] = false
    10. redis_exporter['enable'] = false
    11. postgres_exporter['enable'] = false
    12. gitlab_monitor['enable'] = false
    13. #gitlab_exporter
    14. prometheus_monitoring['enable'] = false
    15. grafana['enable'] = false

  • 相关阅读:
    求职简历的书写技巧
    Day47 代码随想录打卡|二叉树篇---最大二叉树
    d3力导向图
    Spring Boot进阶(93):体验式教程:手把手教你整合Spring Boot和Zipkin
    C++编程法则365天一天一条(323)main函数执行之前和之后的动作
    Redis的各种部署
    Google SGE 正在添加人工智能图像生成器,现已推出:从搜索中的生成式 AI 中获取灵感的新方法
    震惊!强大的接口自动化测试框架2.0,unittest与pytest无缝穿插对接,可以像postman一样编写代码
    隆云通空气温湿,光照三合一传感器
    Ernie-gram, 显式、完备的 n-gram 掩码语言模型,实现了显式的 n-gram 语义单元知识建模。
  • 原文地址:https://blog.csdn.net/cumtglad/article/details/140373300