gitlab-环境部署、项目创建、备份与还原

1、简介

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。对于gitlab来说,主要有两个系列
gitlab-ce:Community Edition(社区版),已经满足我们日常的功能需求了
gitlab-ee:Enterprise Edition(企业版)。相较于社区版多了一些收费功能
官方网站:https://about.gitlab.com/

2、Gitlab安装方式

2.1、方式1:yum安装

cat << 'CAT_END' >/etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
CAT_END

yum makecache
yum install gitlab-ce

2.2、方式2:Docker安装

参考资料:
 https://docs.gitlab.com/ee/install/docker.html
 两个版本:
 社区版 gitlab/gitlab-ce:latest
 企业版 gitlab/gitlab-ee:latest
部署环境
mkdir /data/gitlab/{config,logs,data} -p
docker pull gitlab/gitlab-ce
docker run -d --hostname gitlab --restart=always -p 7080:80 -p 2222:22 -p 
8443:443 \
--name gitlab -v /data/server/gitlab/config:/etc/gitlab -v 
/data/server/gitlab/logs:/var/log/gitlab -v 
/data/server/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
注意:
gitlab-ce 镜像要求主机的内存大于2G,所以我们需要提前调整虚拟机容量 由于该镜像涉及的内容比较多,我们需要等待数分钟(3min)然后再来访问gitlab首页

3、配置Gitlab

# egrep -v '^#|^$' /etc/gitlab/gitlab.rb 
external_url 'http://192.168.10.10'
gitlab_rails['gitlab_ssh_host'] = '192.168.10.10'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
# gitlab_rails['gitlab_shell_ssh_port'] = 2222

4、启动gitlab服务

4.1、启动服务

# 重新加载并且启动服务
gitlab-ctl reconfigure
gitlab-ctl start

4.2、查看登陆密码

# cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, i
t was provided before database was seeded for the first time (usually, the first reconfigure run).
# 2. Password hasn't been changed manually, either via UI or via command line. # # 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. Password: H0THbj8MHitZLbvf1rrqEKtUGkn5RDGwVTQipSZcf24= # NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

4.3、打开浏览器访问登陆

帐号:root
密码:上面方法查看

5、创建一个gitlab项目

5.1、创建组

5.1.1、创建组

5.1.2、创建web组

5.2、创建项目

5.2.1、选择组,创建项目

5.2.2、创建空白项目

5.2.3、创建my-tomcat项目

5.3、给gitlab项目增加ssh pub

5.3.1、生成公钥

ssh-keygen -t rsa -b 2048 -C "root@localhost"

5.3.2、查看公钥

# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC...root@localhost

5.3.3、id_rsa.pub增加至gitlab 

 

5.3.4、查看创建效果

 

5.4、本地仓库与远程仓库提交测试

5.4.1、克隆项目并且推送最新数据到gitlab

# 克隆项目
cd /data && git clone git@192.168.10.10:web/my-tomcat.git

# 增加文件
echo "hello gitlab" >hello.out
git add .
git commit -m "Initial hello commit"
git remote add origin git@192.168.10.10:web/my-tomcat.git
git branch -M main
git push -uf origin main

5.4.2、查看项目是否新增文件

5.5、本地仓库关联远程仓库介绍【git remote】

# 本地仓库关联远程仓库
git remote -v
git remote add origin git@192.168.10.10:web/my-tomcat.git
git remote -v
git branch -M main
git push -uf origin main

# 删除关联远程仓库
git remote rm origin

5.6、关闭DevOps自动触发功能

 

6、备份还原

6.1、基础知识

6.1.1、场景需求

自建的Gitlab服务器常常会因为使用时间的增长,其空间容量等硬件需求都需要升级,或者迁移至更高配置的服务器上。所以我们需要通过各种方法来达到我们的业务目标,这些常见的动作有:备份、还原、迁移、升级等操作

6.1.2、配置文件

# gitlab的配置文件
# ll /etc/gitlab/
-rw------- 1 root root 144987 Jun 13 00:58 gitlab.rb
-rw------- 1 root root  19404 Jun 13 01:01 gitlab-secrets.json
-rw------- 1 root root    749 Jun 13 01:01 initial_root_password
drwxr-xr-x 2 root root      6 Jun 13 01:01 trusted-certs

# web相关的配置文件
# ll /var/opt/gitlab/nginx/
drwx------ 2 gitlab-www root        6 Jun 13 01:03 client_body_temp
drwxr-x--- 2 root       gitlab-www 99 Jun 13 01:03 conf
drwx------ 2 gitlab-www root        6 Jun 13 01:03 fastcgi_temp
lrwxrwxrwx 1 root       root       21 Jun 13 01:03 logs -> /var/log/gitlab/nginx
-rw-r--r-- 1 root       root        5 Jun 13 01:03 nginx.pid
drwx------ 2 gitlab-www root        6 Jun 13 01:03 proxy_cache
drwx------ 2 gitlab-www root        6 Jun 13 01:03 proxy_temp
drwx------ 2 gitlab-www root        6 Jun 13 01:03 scgi_temp
drwx------ 2 gitlab-www root        6 Jun 13 01:03 uwsgi_temp

# 关于默认的备份配置信息
# grep -En 'backup_path|keep_time' /etc/gitlab/gitlab.rb 
605:# gitlab_rails['manage_backup_path'] = true
606:# gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
607:# gitlab_rails['backup_gitaly_backup_path'] = "/opt/gitlab/embedded/bin/gitaly-backup"
615:# gitlab_rails['backup_keep_time'] = 604800 # 默认是7天

6.2、命令解析

6.2.1、查看所有命令

# gitlab-
gitlab-backup     gitlab-ctl        gitlab-psql       gitlab-rails      gitlab-rake       gitlab-redis-cli 

6.2.2、常用的命令

gitlab-ctl gitlab服务管理命令
 gitlab-backup gitlab备份相关命令
 gitlab-rake
 gitlab-rails 控制台管控命令

6.2.3、gitlab修改(重置)root用户密码

复制代码
[root@gitlab ~]# gitlab-rails console -e production
# 查询用户
user = User.where(id: 1).first
# user = User.find_by(email: ‘admin@local.host‘)

user.password = 'aiai1234'
user.password_confirmation = 'aiai1234'
user.save!

6.3、组件解析

root@gitlab:/# gitlab-ctl status
run: alertmanager: (pid 6480) 51s; run: log: (pid 352) 3475s
run: gitaly: (pid 6487) 50s; run: log: (pid 284) 3479s           # 后台服务
run: gitlab-exporter: (pid 6489) 50s; run: log: (pid 342) 3477s  # 监控指标库
run: gitlab-workhorse: (pid 6493) 50s; run: log: (pid 281) 3479s # 反向代理服务
run: grafana: (pid 6499) 50s; run: log: (pid 378) 3472s          # 可视化监控
run: logrotate: (pid 6503) 50s; run: log: (pid 280) 3479s        # 日志相关服务
run: nginx: (pid 6506) 50s; run: log: (pid 335) 3478s            # web服务
run: postgres-exporter: (pid 6510) 50s; run: log: (pid 372) 3473s
run: postgresql: (pid 6516) 50s; run: log: (pid 279) 3479s
run: prometheus: (pid 6520) 50s; run: log: (pid 354) 3475s      # 监控服务
run: puma: (pid 6524) 50s; run: log: (pid 278) 3479s            # http服务
run: redis: (pid 6532) 50s; run: log: (pid 277) 3479s           # 任务分发服务
run: redis-exporter: (pid 6538) 50s; run: log: (pid 353) 3475s
run: sidekiq: (pid 6540) 50s; run: log: (pid 289) 3479s         # 邮件发送服务
run: sshd: (pid 6545) 50s; run: log: (pid 28) 3495s             # ssh连接服务

注意:
 Puma 是一个用于 Ruby 应用程序的简单、快速、多线程和高度并发的 HTTP 1.1 服务器。 自
GitLab 13.0 以来,它是默认的 GitLab Web 服务器,并已取代 Unicorn。 从 GitLab 14.0 开始,不再支持 Unicorn。

6.4、备份与还原

6.4.1、备份和恢复注意事项

1、默认情况下,gitlab的备份不包括gitlab软件本身的敏感数据,比如gitlab.rb、nginx.conf等
2、为了避免在备份和恢复的时候,对现有的业务有影响,所以我们需要提前断开数据相关的操作

6.4.2、备份实践

# 数据备份
gitlab-rake gitlab:backup:create

# 注意:该备份命令不包含 gitlab.rb和gitlab-secrets.json文件

]# ll /var/opt/gitlab/backups/
-rw------- 1 git git 440320 Jun 13 05:53 1686606829_2023_06_13_16.0.4_gitlab_backup.tar
# 注意:备份的文件格式:时间戳_日期_gitlab版本_gitlab_backup.tar

6.4.3、还原实践

# 先删除my-tomcat项目,还原后,看看还在不在

# 停止相关数据连接服务
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
# 注意:虽然我们用 puma 替代了 unicorn,但是老的服务名仍然可以使用

# 还原备份文件,必须指定备份文件中的 '时间戳_日期_gitlab版本' 内容
# ll /var/opt/gitlab/backups/
-rw------- 1 git git 440320 Jun 13 05:53 1686606829_2023_06_13_16.0.4_gitlab_backup.tar

gitlab-rake gitlab:backup:restore BACKUP=1686606829_2023_06_13_16.0.4

# 注意:还原的时候有两次确认步骤
 # Do you want to continue (yes/no)? yes 开始还原
 # Do you want to continue (yes/no)? yes 重写恢复时会丢失这些敏感数据

# 重载配置
gitlab-ctl reconfigure
# 注意:如果配置文件没有做任何变动的时候,可以自由的忽略了

# 重启环境
gitlab-ctl stop && gitlab-ctl start 
# 注意:如果看到gitlab页面是502,稍等几分钟后,再来查看即可

 

posted @ 2023-06-12 22:07  小粉优化大师  阅读(74)  评论(0编辑  收藏  举报