Noname
Noname

GitLab 安装和备份

1. 安装

1.1 yum安装

# 官网安装文档:https://about.gitlab.com/install/#centos-7
# 安装依赖
yum install -y curl policycoreutils-python openssh-server perl

#  GitLab使用postfix发送邮件
yum install postfix
systemctl enable postfix
systemctl start postfix

# 国内源:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/
# 此例子选择centos7 :https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
yum install wget
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.4.4-ce.0.el7.x86_64.rpm
yum install gitlab-ce-14.4.4-ce.0.el7.x86_64.rpm

# 配置文件【/etc/gitlab/gitlab.rb】url为本地ip地址:external_url 'http://192.168.10.10:9000'
sed -i 's#^external_url.*$#external_url '\''http://192.168.10.10:9000'\''#g' /etc/gitlab/gitlab.rb

# 配置邮箱,通过邮箱进行账号注册和密码修改
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '[email protected]'
gitlab_rails['gitlab_email_display_name'] = 'admin gitlab'  # 发件人的显示名称

## smtp设置:KEQBSOWRNDSVORSF
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"   # smtp服务器
gitlab_rails['smtp_port'] = 465 # smtp端口号
gitlab_rails['smtp_user_name'] = "[email protected]"  # 用户名
gitlab_rails['smtp_password'] = "KEQBSOWRNDSVORSF"
gitlab_rails['smtp_domain'] = "163.com" # 域名
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

# 初始化gitlab配置: 每次修改/etc/gitlab/gitlab.rb ,都要执行
gitlab-ctl reconfigure

# 启动gitlab
gitlab-ctl start
gitlab-ctl restart
gitlab-ctl status
gitlab-ctl stop

1.2 脚本安装

#!/bin/bash
# 访问设置
external_url="http://192.168.10.1:9000"
# 邮箱设置
smtp_user_name="[email protected]"
smtp_password="KEQBSOWRNDSVORSF"
smtp_address="smtp.163.com"
smtp_port=465
smtp_domain="163.com"
# 发件人显示名称,字符串中间不能有空格
gitlab_email_display_name="Cory_Gitlab"
# 软件版本
software="gitlab-ce-14.4.4-ce.0.el7.x86_64.rpm"
soft_url="https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/"

# 如下自动执行
softname="gitlab-ce"
## 安装依赖
echo "安装依赖"
yum install -y curl policycoreutils-python openssh-server perl postfix wget > /dev/null 2>&1
systemctl enable postfix > /dev/null 2>&1
systemctl start postfix > /dev/null 2>&1
echo "安装依赖成功"
# 下载软件
if [ ! -f ${software} ];then
    echo "正在下载安装包:${software}"
    wget --no-check-certificate ${soft_url}${software} > /dev/null 2>&1
    [ ! -f ${software} ] && echo "${software} download failure,exit" && exit
else
    echo "安装包已存在:${software}"
fi

# 检查并安装软件
rpm -q ${softname} > /dev/null 2>&1
if [ "$?" -ge 1 ];then
    echo "${software} 正在安装中..."
    yum -y install ${software} > /dev/null 2>&1
    rpm -q ${softname} > /dev/null 2>&1
    [ $? -ge 1 ] && echo "${software} 安装失败,退出整个程序" && exit
     echo "${software} 安装成功"
else
    echo "${softname} 已经安装"
fi

# 设置配置文件
sed -i 's#^external_url.*$#external_url '\'''${external_url}''\''#g' /etc/gitlab/gitlab.rb

# 设置邮件
# gitlab_email_enabled
sed -i 's/^.*gitlab_rails\['\''gitlab_email_enabled'\''\].*$/gitlab_rails['\''gitlab_email_enabled'\''] = true/g' /etc/gitlab/gitlab.rb

# gitlab_email_from
sed -i 's/^.*gitlab_rails\['\''gitlab_email_from'\''\].*$/gitlab_rails['\''gitlab_email_from'\''] = '\'''${smtp_user_name}''\''/g' /etc/gitlab/gitlab.rb

# gitlab_email_display_name
sed -i 's/^.*gitlab_rails\['\''gitlab_email_display_name'\''\].*$/gitlab_rails['\''gitlab_email_display_name'\''] = '\'''${gitlab_email_display_name}''\''/g' /etc/gitlab/gitlab.rb

# smtp_enable
sed -i 's/^.*gitlab_rails\['\''smtp_enable'\''\].*$/gitlab_rails['\''smtp_enable'\''] = true/g' /etc/gitlab/gitlab.rb

# smtp_address
sed -i 's/^.*gitlab_rails\['\''smtp_address'\''\].*$/gitlab_rails['\''smtp_address'\''] = "'${smtp_address}'"/g' /etc/gitlab/gitlab.rb

# smtp_port
sed -i 's/^.*gitlab_rails\['\''smtp_port'\''\].*$/gitlab_rails['\''smtp_port'\''] = '${smtp_port}'/g' /etc/gitlab/gitlab.rb

# smtp_user_name
sed -i 's/^.*gitlab_rails\['\''smtp_user_name'\''\].*$/gitlab_rails['\''smtp_user_name'\''] = "'${smtp_user_name}'"/g' /etc/gitlab/gitlab.rb

# smtp_password
sed -i 's/^.*gitlab_rails\['\''smtp_password'\''\].*$/gitlab_rails['\''smtp_password'\''] = "'${smtp_password}'"/g' /etc/gitlab/gitlab.rb

# smtp_domain
sed -i 's/^.*gitlab_rails\['\''smtp_domain'\''\].*$/gitlab_rails['\''smtp_domain'\''] = "'${smtp_domain}'"/g' /etc/gitlab/gitlab.rb

# smtp_authentication
sed -i 's/^.*gitlab_rails\['\''smtp_authentication'\''\].*$/gitlab_rails['\''smtp_authentication'\''] = "login"/g' /etc/gitlab/gitlab.rb

# smtp_enable_starttls_auto
sed -i 's/^.*gitlab_rails\['\''smtp_enable_starttls_auto'\''\].*$/gitlab_rails['\''smtp_enable_starttls_auto'\''] = true/g' /etc/gitlab/gitlab.rb

# smtp_tls
sed -i 's/^.*gitlab_rails\['\''smtp_tls'\''\].*$/gitlab_rails['\''smtp_tls'\''] = true/g' /etc/gitlab/gitlab.rb

# 显示结果
echo "修改配置后的结果"
cat /etc/gitlab/gitlab.rb |grep -E "${external_url}|gitlab_email_enabled|gitlab_email_from|gitlab_email_display_name|smtp_enable|smtp_address|smtp_port|smtp_user_name|smtp_password|smtp_domain|smtp_authentication|smtp_enable_starttls_auto|smtp_tls"

# 启动gitlab
echo "配置gitlab:gitlab-ctl reconfigure"
gitlab-ctl reconfigure > /dev/null 2>&1

# 密码输出
cat /etc/gitlab/initial_root_password |grep ^Password

1.3 docker-compose 安装

# docker-compose.yml
version: '3'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    container_name: gitlab
    restart: always
    user: root
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.10.21:8929' #若有域名可以写域名
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
        gitlab_rails['time_zone'] = 'Asia/Shanghai'
        gitlab_rails['smtp_enable'] = true
        gitlab_rails['smtp_address'] = "smtp.163.com"
        gitlab_rails['smtp_domain'] = "163.com"
        gitlab_rails['smtp_port'] = 465
        gitlab_rails['smtp_user_name'] = "[email protected]"  # 邮箱
        gitlab_rails['smtp_password'] = "KEQBSOWRNDSVORSF"
        gitlab_rails['smtp_authentication'] = "login"
        gitlab_rails['smtp_enable_starttls_auto'] = true
        gitlab_rails['smtp_tls'] = true
        gitlab_rails['gitlab_email_from'] = '[email protected]'
        gitlab_rails['gitlab_email_display_name'] = 'admin gitlab'  # 发件人的显示名称
        gitlab_rails['backup_path'] = "/data/gitlab-backup"
        gitlab_rails['backup_keep_time'] = 1296000
        gitlab_rails['backup_archive_permissions'] = 0644
    ports:
      - '8929:8929'
      - '2224:22'
    volumes:
      #将相关配置映射到当前目录下的config目录
      - './config:/etc/gitlab'
      #将数据映射到当前目录下的data目录
      - './data:/var/opt/gitlab'
      # 可根据情况映射log目录,目前不做映射/var/log/gitlab
      # 备份直接映射到挂载的onedrive云盘上
      - "/gitlab/data/gitlab-backup:/data/gitlab-backup"
docker-compose up -d

# 访问:http://192.168.10.21:8929
# 密码
# 账号:root
cat config/initial_root_password |grep ^Password

2. 备份

# 手动备份
# 自动备份到:/var/opt/gitlab/backups/ :配置文件:gitlab_rails['backup_path']
# 默认保留7天:604800 :配置文件:gitlab_rails[‘backup_keep_time’]
# 如下手动备份命令
gitlab-rake gitlab:backup:create
# 输出:1639315073_2021_12_12_14.4.4_gitlab_backup.tar
# 或者查看目录:/var/opt/gitlab/backups/

# 自动备份,使用系统自带的crontab
crontab -e
0 3 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

3. 恢复

# 停止相关数据连接服务【可以不用做】
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

# 开始恢复
gitlab-rake gitlab:backup:restore BACKUP=1639315073_2021_12_12_14.4.4

发表回复

textsms
account_circle
email

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

Noname

GitLab 安装和备份
1. 安装 1.1 yum安装 # 官网安装文档:https://about.gitlab.com/install/#centos-7 # 安装依赖 yum install -y curl policycoreutils-python openssh-server perl # GitLab使用postf…
扫描二维码继续阅读
2020-08-19