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,稍等几分钟后,再来查看即可