Table of Contents
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
发表回复