• docker 安装gitlab,配置邮件,备份全流程


    前言

    今天折腾了下docker安装和配置gitlab,并实现2台服务器之间的免密登录和备份。全流程如下:

    docker安装gitlab

    • 创建存储目录,日志目录、配置目录
      mkdir -p /home/gitlab/{data,log,etc}
    • 拉取镜像
      docker pull twang2218/gitlab-ce-zh:11.1
    • 启动容器
      docker run -d --publish 8090:8090 --publish 2222:22 --name gitlab --privileged=true --restart=always -e TZ=Asia/Shanghai -v /home/gitlab/etc:/etc/gitlab -v /home/gitlab/log:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab twang2218/gitlab-ce-zh:11.1

    借鉴链接:https://juejin.cn/post/7084758138414923813

    配置gitlab.rb

    • 进入容器
      docker exec -it gitlab /bin/bash

      vi /etc/gitlab/gitlab.rb

    • http使用的端口以及在项目工程显示的 http 下载路径中使用
      external_url 'http://公网IP[或域名]:8090'
      比如公网ip为: 10.14.114.08

    • 项目工程显示的 ssh 地址和端口
      gitlab_rails['gitlab_ssh_host'] = '10.14.114.08'
      gitlab_rails['gitlab_shell_ssh_port'] = 2222

    • 时区
      gitlab_rails['time_zone'] = 'Asia/Shanghai'

    • 保存备份 30 天
      gitlab_rails['backup_keep_time'] = 2592000

    配置邮件

    gitlab_rails['smtp_enable'] = true
    gitlab_rails['smtp_address'] = "smtp.qq.com"
    gitlab_rails['smtp_port'] = 465
    gitlab_rails['smtp_user_name'] = "690328661@qq.com"
    gitlab_rails['smtp_password'] = "您的qq邮箱授权码"
    gitlab_rails['smtp_domain'] = "smtp.qq.com"
    gitlab_rails['smtp_authentication'] = "login"
    gitlab_rails['smtp_enable_starttls_auto'] = true
    gitlab_rails['smtp_tls'] = true
    gitlab_rails['gitlab_email_from'] = '690328661@qq.com'
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    `
    将这个也配置在gitlab.ra中。

    执行重载配置文件

    gitlab-ctl reconfigure

    防火墙和阿里云配置规则端口放开

    此处略。但是很重要,也很简单,不写了。

    启动和创建用户和常用设置

    • 首先为 root 用户设置密码,root 用户将作为 GitLab 的管理员
      在这里插入图片描述
    • 修改登录页面提示
      在这里插入图片描述
      在这里插入图片描述
    • 取消头像显示
      不取消会显示异常
      在这里插入图片描述
    • 取消注册功能
      在公司内网使用,无需注册功能,账号通过管理员添加
      在这里插入图片描述
    • 增加新用户
      在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    用户根据邮件进入gitlab

    上面填完之后,用户邮箱会自动收到一份邮件.
    在这里插入图片描述
    点击会进入设置密码的节目,设置下,重新登录即可。

    2台服务器的免密登录设置

    设置这个的目的是: 有2台服务器,部署这台gitlab服务器的定时生成备份数据,通过scp命令传递到另一台服务器上。如果这台gitlab挂了,可以重启用备份的数据还原之前的数据。

    参考: https://blog.csdn.net/weixin_40363423/article/details/115216886

    操作如下:
    在gitlab台服务器上分别执行
    cd /root/.ssh
    cd authorized_keys
    ssh-keygen -t rsa 然后一路enter即可。
    scop id_rsa.pub 备份服务器IP:/rsa (前提 在根目录下创建rsa目录,创建其他文件夹也可以)
    在备份数据服务器上分别执行
    cd /root/.ssh
    cd authorized_keys
    ssh-keygen -t rsa 然后一路enter即可。
    scop id_rsa.pub gitlab服务器IP:/rsa (前提 在根目录下创建rsa目录,创建其他文件夹也可以)
    最终,在两台服务器上看到这样就成功了:
    在这里插入图片描述

    备份脚本和备份定时任务设置

    • 创建备份文件
      docker exec gitlab gitlab-rake gitlab:backup:create
      在这里插入图片描述
      生成的备份文件为:1656474061_2022_06_29_11.1.4_gitlab_backup.tar,所在目录为:/home/gitlab/data/backups

    定时备份

    创建定时备份脚本 /home/auto_backup.sh

    • 执行备份命令
      docker exec gitlab gitlab-rake gitlab:backup:create

    • 将备份文件拷贝到备用机器的 GitLab 数据目录下
      scp -r /home/gitlab/data/backups root@192.168.0.154:/home/gitlab/data/backups

    在这里插入图片描述

    • 添加定时任务
      vim /etc/crontab
    # 每天备份两次, 12 点和 18 点各一次
    0 12,18 * * * root sh /home/auto_backup.sh CRON=1
    
    • 1
    • 2

    在这里插入图片描述

    • 重新加载定时器
      service crond reload
      service crond restart

    模拟备份还原操作

    参考链接:https://juejin.cn/post/7084758138414923813

    注意:在从机器上必须按照上面的安装和配置步骤提前安装好 GitLab,然后登录root用户没有问题后,然后执行以下步骤进行仓库恢复,以下操作均在从机器上执行:

    • 将备份文件拷贝到要恢复的机器(从机器)的 GitLab 数据目录下。
      在这里插入图片描述

    上面的定时任务如果没问题这一步就可以省略了

    • 进入 GitLab 容器,执行以下恢复命令

    • 进入容器
      docker exec -it gitlab /bin/bash

    • 停止相关数据连接服务
      gitlab-ctl stop unicorn
      gitlab-ctl stop sidekiq

    为备份文件赋予执行权限

    chmod -R 7777 /var/opt/gitlab/backups

    cd /var/opt/gitlab/backups

    • 备份文件编号备份的 tar 包数字部门,例如:1656474061_2022_06_29_11.1.4_gitlab_backup.tar,编号为:11656474061_2022_06_29_11.1.4
      gitlab-rake gitlab:backup:restore BACKUP=备份文件编号
      在这里插入图片描述

    gitlab-ctl start

    我这里只是在原来的gitlab服务器上创建了个用户,执行完备份后,也显出来了。说明备份成功!!!

    在这里插入图片描述


    开通了个微信公众号:
    搜索: 怒放de每一天
    后续可能不定时推送相关文章,期待和大家一起成长!!

    在这里插入图片描述


    大功告成!!

  • 相关阅读:
    Hive的JDBC操作
    我的react面试题笔记整理(附答案)
    枚举类的简单使用
    Python3,为了考研,我用了9.9行代码,搞出一个GUI翻译器,从此再也不用百度翻译了。
    深度学习目标检测模型综述
    pytorch 安装 2023年
    阿里低代码引擎怎么样,好不好用?
    Cuda | Cudnn安装及其配置
    基于Java+SpringBoot+Thymeleaf+Mysql医院预约挂号系统设计与实现
    点云地面滤波--渐进式加密三角网
  • 原文地址:https://blog.csdn.net/baidu_21349635/article/details/125523470