Centos使用Docker搭建自己的Gitlab社区版16.8.0-ce.0(设置汉化 修改密码 设置SSH秘钥 添加拉取命令端口号 备份至网盘和恢复)

news2024/12/24 9:34:11

根据我的经验 部署Gitlab(社区版) 至少需要2核4g的服务器 带宽3~4M

1. 在自己电脑上安装终端:宝塔ssl终端 或者 FinalShell,根据喜好安装即可

http://www.hostbuf.com/t/988.html
http://www.hostbuf.com/downloads/finalshell_windows_x64.exe
(1)安装好后连接SSL
在这里插入图片描述
在这里插入图片描述

2. 服务器(我的是香草云2核4G,大家可以随意):Centos7.9

(1)安装基础环境
sudo yum update -y (centos7.9更新)
(1.1)安装python3相关
sudo yum install epel-release -y
sudo yum install python3 -y
pip3 install --upgrade pip

(1.2)准备定时任务直接上传backups和密钥文件至百度网盘

执行: pip3 install bypy
a. 生成授权链接: bypy info
b. 在网页成功登录后 会得到授权码然后返回服务器输入这个授权码
c. 查看连接情况:bypy list
如果一切正常,会列出百度云账户根目录下的文件和文件夹。
在这里插入图片描述
在这里插入图片描述

(1.2)下面这一行按需安装
sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make zlib zlib-devel libffi-devel firewalld nano zip unzip -y

3. 安装Docker

(1)下载docker.sh脚本: curl -fsSL https://get.docker.com -o get-docker.sh
(2)检查docker是否下载成功 ls
在这里插入图片描述
(3)安装docker(5分钟或者更长):sh get-docker.sh
(4)启动Docker: systemctl start docker
(5)检查Docker运行状态(下图说明docker已经运行): systemctl status docker

可以同时执行 执行 1~5
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh && systemctl start docker && systemctl status docker

在这里插入图片描述
(6)设置Docker随系统启动: sudo systemctl enable docker

4. 执行GitLab Docker镜像

(1)配置Centos环境变量 export GITLAB_HOME=/srv/gitlab
(2)将以下这段代码填好指定的ip后复制到服务器终端上

或者添加永久环境变量(因为偶尔会忘): vi /etc/environment

在这里插入图片描述

社区版

sudo docker run --detach \
  --hostname 1.2.3.4 \
  --publish 8443:443 --publish 8080:80 --publish 8822:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ce:16.8.0-ce.0

其中:
1.2.3.4 要换成你的服务器IP地址
--publish 8443:443 --publish 8080:80 --publish 2222:22 \

格式为外部端口:容器内部端口 8080、2222端口可以随意替换。
8080:80表示将主机的8080端口映射到容器的80端口(GitLab的Web服务)。
2222:22表示将主机的2222端口映射到容器的22端口(GitLab的SSH服务)。
8443:443保持不变,因为它是HTTPS服务的标准端口。
记得在服务器安全组中开启 8080、80、22、2222、8443、443端口
在这里插入图片描述

(3)查看 gitlab是否正在运行(刚部署完可能需要等一会,因为gitlab比较大,需要配置各种数据,): docker ps

starting 还需要再等一会
在这里插入图片描述
如果出现下图则可以执行第6步(我花了10分钟左右)
在这里插入图片描述

(4)检查gitlab版本:docker exec -it gitlab gitlab-rake gitlab:env:info
在这里插入图片描述

(5)使用浏览器打开你的极狐Gitlab http://1.2.3.4:8080 1.2.3.4换成你的服务器ip
在这里插入图片描述
(6)查看初始管理员 root 的密码 docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
在这里插入图片描述

(7)设置汉化:
在这里插入图片描述
在这里插入图片描述
(8)记得修改root 密码
在这里插入图片描述
(9)生成SSH秘钥
(9.1)ssh-keygen -t rsa -b 4096 -C "你的邮箱" 然后可以一直回车
(9.2)确保 ssh-agent 正在运行: eval "$(ssh-agent -s)"
(9.3)将 SSH 私钥添加到 ssh-agent:ssh-add ~/.ssh/id_rsa
(9.4)复制 SSH 公钥到剪贴板:cat ~/.ssh/id_rsa.pub
在这里插入图片描述
(10)进入后会发现拉取代码的命令并不是 8080端口 而是默认的80端口 接下来要修改一下gitlab配置
在这里插入图片描述
(10.1)进入 GitLab 容器: sudo docker exec -it gitlab /bin/bash
(10.2)修改gitlab.rb:vi /etc/gitlab/gitlab.rb

在文件最上边加这三行 ip换成自己服务器的ip

external_url 'http://198.12.1.1'  
gitlab_rails['gitlab_ssh_host'] = '198.12.1.1'
gitlab_rails['gitlab_shell_ssh_port'] = 8899

(10.2)使配置生效(这时不要重启哈): gitlab-ctl reconfigure
(10.3)修改gitlab.yml配置:vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
在这里插入图片描述
(10.4)重启 GitLab: gitlab-ctl restart
(10.5)退出等待一会 看内存4g多的时候差不多gitlab准备完了…:exit
在这里插入图片描述

(11)gitlab备份和恢复

当前gitlab版本16.8.0社区版,使用docker部署,执行备份(大家参考即可)

设置定时任务:crontab -e

然后输入 如下格式的 你的sh脚本 执行时间可能会因为时区不同 加或减8小时 这个任务应该会定时执行的
我设置的是早8晚8

0 8 * * *  /root/backup_and_upload.sh
0 20 * * *  /root/backup_and_upload.sh

(11.3)查看定时任务:crontab -l
在这里插入图片描述

备份命令 backup_and_upload.sh
#!/bin/bash

#进入gitlab容器内部 docker exec -it gitlab bash

#bypy 脚本文件路径
BYPY="/usr/local/bin/bypy"
#docker 脚本文件路径
DOCKER="/usr/bin/docker"

# 获取当前日期和时间
CURRENT_TIME=$(date "+%Y_%m_%d__%H_%M_%S")

# 设置目标备份路径(存到百度网盘上的文件夹名字)
BACKUP_PATH="/gitlab_$CURRENT_TIME"


echo "$(date '+%Y-%m-%d %H:%M:%S') | 删除原有备份"
$DOCKER exec gitlab bash -c 'rm /var/opt/gitlab/backups/*'
if [ $? -ne 0 ]; then
    echo "删除原有备份失败"
    exit 1
fi

echo "$(date '+%Y-%m-%d %H:%M:%S') | 删除容器外部备份"
rm -r /srv/backups
rm /srv/gitlab.rb /srv/gitlab-secrets.json

echo "$(date '+%Y-%m-%d %H:%M:%S') | 创建新备份"
$DOCKER exec gitlab gitlab-backup create
if [ $? -ne 0 ]; then
    echo "创建新备份失败"
    exit 1
fi

echo "$(date '+%Y-%m-%d %H:%M:%S') | 将容器内部文件复制出来准备上传backups gitlab.rb gitlab-secrets.json"
$DOCKER cp gitlab:/var/opt/gitlab/backups/ /srv/
$DOCKER cp gitlab:/etc/gitlab/gitlab.rb /srv/gitlab.rb
$DOCKER cp gitlab:/etc/gitlab/gitlab-secrets.json /srv/gitlab-secrets.json

echo "$(date '+%Y-%m-%d %H:%M:%S') | 将新包、gitlab.rb、gitlab-secrets.json上传至百度网盘"
$BYPY upload /srv/backups/  $BACKUP_PATH/backups/
$BYPY upload /srv/gitlab.rb $BACKUP_PATH/gitlab.rb
$BYPY upload /srv/gitlab-secrets.json /$BACKUP_PATH/gitlab-secrets.json

在这里插入图片描述

恢复命令 down_gitlab_config.sh (手动恢复)
#!/bin/bash

# 获取用户输入的目录名
echo "请输入要从百度网盘下载的目录名:"
read DOWNLOAD_DIR

echo "$(date '+%Y-%m-%d %H:%M:%S') | 删除backups"
rm -rf /srv/backups
rm -rf /srv/gitlab.rb
rm -rf /srv/gitlab-secrets.json

echo "$(date '+%Y-%m-%d %H:%M:%S') | 从百度网盘上下载新gitlab.rb gitlab-secrets.json backups"
bypy download $DOWNLOAD_DIR/backups /srv/backups
bypy download $DOWNLOAD_DIR/gitlab.rb /srv/gitlab.rb
bypy download $DOWNLOAD_DIR/gitlab-secrets.json /srv/gitlab-secrets.json

echo "$(date '+%Y-%m-%d %H:%M:%S') | 开始恢复文件"
docker cp /srv/gitlab.rb gitlab:/etc/gitlab/
docker cp /srv/gitlab-secrets.json gitlab:/etc/gitlab/
docker cp /srv/backups/. gitlab:/var/opt/gitlab/backups/

echo "执行恢复镜像命令"
docker exec -it gitlab gitlab-ctl stop unicorn
docker exec -it gitlab gitlab-ctl stop sidekiq

echo "进入到 Docker 容器的 backups/ 目录并获取第一个 .tar 文件的名字"
BACKUP_FILE=$(docker exec -it gitlab /bin/bash -c 'ls /var/opt/gitlab/backups/*.tar | head -n 1 | awk -F/ "{gsub(/_gitlab_backup.tar$/, \"\", \$NF); print \$NF}"')

echo "执行恢复命令"
docker exec -it gitlab gitlab-backup restore BACKUP=$BACKUP_NAME

echo "使配置生效"
sudo docker exec -it gitlab /bin/bash -c 'gitlab-ctl reconfigure'

echo "进入容器内部,并修改yml配置文件"
sudo docker exec -it gitlab sed -i 's/port: 80/port: 8080/' /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

echo "重启GitLab服务"
sudo docker exec -it gitlab gitlab-ctl restart

在这里插入图片描述

恢复过程中 输入两个 yes 然后希望你yes!

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

拓展:
开启gitlab容器: sudo docker start gitlab
停止gitlab容器: sudo docker stop gitlab
删除gitlab容器:sudo docker rm gitlab

祝大家学习和工作愉快!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1407572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pytorch中Dataset和dadaloader的理解

不同的数据集在形式上千差万别,为了能够统一用于模型的训练,Pytorch框架下定义了一个dataset类和一个dataloader类。 dataset用于获取数据集中的样本,dataloader 用于抽取部分样本用于训练。比如说一个用于分割任务的图像数据集的结构如图1所…

蓝桥杯---三羊献瑞

观察下面的加法算式: 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。 请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。 答案 代码 public class _03三羊献瑞 {public static void main(String[] args) {//c 生 b 瑞 g 献 d 辉…

Flink多流转换(1)—— 分流合流

目录 分流 代码示例 使用侧输出流 合流 联合(Union) 连接(Connect) 简单划分的话,多流转换可以分为“分流”和“合流”两大类 目前分流的操作一般是通过侧输出流(side output)来实现&…

【后端技术】术有千法,道本归一

目录 1.概述 2.机器的问题 2.1.计算 2.2.存储 2.3.传输 3.人的问题 3.1.代码工程的管理 3.2.过程的把控 4.总结 1.概述 术有千法,道本归一。 之所以这样说,是因为当前出现的纷繁复杂的后端技术,其本质其实都是为了解决同一套问题。…

蓝桥杯题目解析 --矩形切割

先看题: 题目中的例子解析: 5*3 切一刀最大的,肯定是3*3,切完后只剩2*3,切一刀最大的,肯定是2*2,切完后只剩2*1,切一刀最大的,肯定是1*1,切完后只剩1*1&…

浅谈手机APP测试(流程)

前言 APP测试是一个广泛的概念,根据每个app的应用场景不一样,测试的方向也略微的不同,在测试过程中需要灵活应用自身所知的测试手段。 今天就跟大家简单聊聊手机APP测试的一些相关内容。 APP开发流程 (1) 拿到需求分…

【STM32】USB程序烧录需要重新上电 软件复位方法

文章目录 一、问题二、解决思路2.1 直接插拔USB2.2 给芯片复位 三、解决方法3.1 别人的解决方法3.2 在下载界面进行设置 一、问题 最近学习STM32的USB功能,主要是想要使用虚拟串口功能(VCP),发现每次烧录之后都需要重新上电才可以…

Parade Series - Android Studio

硬件支持 CPU i7 RAM 16Gb -------------- ------- Java 3Gb Android 33GbJava Enviroment C:\ ├─ Java │ ├─ jdk1.8.0_181 │ ├─ jre1.8.0_181 │ ├─ maven-3.8.5 │ └─ gradle-6.5 └─ Cache├─ gr…

Python实现力扣经典面试题——删除有序数组中的重复项

题目:删除有序数组中的重复项 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。考虑 nu…

在Word中插入高亮/好看代码

Md2All 一个markdown工具 Md2All 网址 代码一定要用code 高亮主题可选 atom-one-light > 复制到word > 调节字体可选Cnsolas, 间距等 效果 另一个高亮工具 效果

算法/结构/理论复习1---理论基础----更新中

算法/结构/理论 雪花算法CAP理论BASE理论分布式事务的解决方案数据结构树(Tree)二叉树二叉查找树平衡查找树红黑树(重点)BTree(重点)BTree 雪花算法 雪花算法主要是为了解决在分布式中id的生成问题 分布式id的生成规则是:全局唯一,不可以出现重复的id号,趋势递增 雪花算法指的…

ITK编译及安装

文章目录 前言CMake配置选项说明运行VS2015编译及安装VTK转ITKITK转VTK参考文献 最近想利用ITK读取整个Dicom图像到内存,再将读取到的ITK数据转换到VTK。于是乎,开始了一段ITK编译之路。以下将记录一些有用的信息,以备后用。 前言 DICOM图像…

Spring扩展点在微服务应用(待完善)

ApplicationListener扩展 nacos注册服务, 监听容器发布事件 # 容器发布事件 AbstractAutoServiceRegistration#onApplicationEvent # 接收事件吗,注册服务到nacos NacosServiceRegistry#register Lifecycle扩展 #订阅服务实例更改的事件 NamingService#…

超实用桌面助手!时间、日期、天气,一目了然!完全免费!

文章目录 📖 介绍 📖🏡 环境 🏡📒 使用方法 📒⚓️ 相关链接 ⚓️ 📖 介绍 📖 这是一款我根据自己的需求写的一个桌面小工具,自己一直在用,现在分享给需要的朋…

RabbitMQ发布确认

生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式, 所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后, broker就会发送一个确认给生产者(包含消息的唯一 ID)&…

【每日一题】最长交替子数组

文章目录 Tag题目来源解题思路方法一:双层循环方法二:单层循环 写在最后 Tag 【双层循环】【单层循环】【数组】【2024-01-23】 题目来源 2765. 最长交替子数组 解题思路 两个方法,一个是双层循环,一个是单层循环。 方法一&am…

Likeshop单商户SaaS商城源码系统-商家用过都说太香啦!

在互联网快速发展的时代,拥有一个个性化、功能丰富的在线商城是企业拓展市场、提高用户粘性的重要手段。 我是一名电商从业者,同时也是一个热衷于DIY的人,我总喜欢在自己的店铺中加入自己的一些想法和创意。然而,一般的电商平台无…

【思路合集】talking head generation+stable diffusion

1 以DiffusionVideoEditing为baseline: 改进方向 针对于自回归训练方式可能导致的漂移问题: 训练时,在前一帧上引入小量的面部扭曲,模拟在生成过程中自然发生的扭曲。促使模型查看身份帧以进行修正。在像VoxCeleb或LRS这样的具…

EasyX的安装与使用(VisualStudio C++免费绘图库)

EasyX Graphics Library 是针对 Visual C 的免费绘图库 安装教程 安装到Visual C 2010 EasyX 安装完毕。 在VC2010中建立控制台工程 工程建好后,鼠标右键点击工程名,并选择属性 安装到Visual C 2010 EasyX 安装完毕。 安装示例程序 easyxdemo.cpp 在VC…

Vulnhub-dc4

靶场下载 https://download.vulnhub.com/dc/DC-4.zip 信息收集 判断目标靶机的存活地址: # nmap -sT --min-rate 10000 -p- 192.168.1.91 -oN port.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-21 16:36 CST Stats: 0:00:03 elapsed; 0 hosts completed (1 up…