1. 资源规划
| 组件 | cicd-server-1 | cicd-test-2 | cicd-prod-3 |
|---|---|---|---|
| OS | redhat-8.2 | redhat-8.2 | redhat-8.2 |
2. 安装介质
版本:gitlab-ce-12.8.6-ce.0.el8.x86_64.rpm
下载:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el8/
3. 环境准备
- 安装RedHat
安装依赖
# CentOS8没有policycoreutils-python的yum源,不用管sudo yum install -y curl openssh-server cronie postfix policycoreutils-python
4. 安装
1. yum源安装
官方推荐Omnibus Packages , yum源使用清华大学开源软件镜像站的镜像。注意:Gitlab-ce镜像仅支持x86-64架构。
配置yum源
sudo vi /etc/yum.repos.d/gitlab-ce.repo
内容如下:
[gitlab-ce]name=gitlab-cebaseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el8repo_gpgcheck=0gpgcheck=0enabled=1gpgkey=https://packages.gitlab.com/gpg.key
安装
sudo yum makecachesudo yum install gitlab-ce
2. 离线安装
确保启动ssh服务
sudo systemctl status sshdsudo systemctl enable sshdsudo systemctl start sshd
开放服务和端口**(若防火墙关闭则无需下述操作)** ```bash
查看firewall的状态
sudo firewall-cmd —state
查看防火墙状态(RedHat7之前的版本,防火墙默认采用firewall)
sudo service iptables status
查看firewall服务状态
sudo systemctl status firewalld
开放服务
sudo firewall-cmd —permanent —add-service=http sudo firewall-cmd —permanent —add-service=https
开放端口
sudo firewall-cmd —zone=public —permanent —add-port=7082/tcp
关闭端口
sudo firewall-cmd —remove-port=7082/tcp —permanent
重新加载防火墙
sudo firewall-cmd —reload
查看防火墙端口开放情况
sudo firewall-cmd —list-all
- **确保启动Postfix(邮件服务器)**```bashsudo systemctl status postfixsudo systemctl enable postfixsudo systemctl start postfixsudo chkconfig postfix on
安装GitLab
sudo rpm -ivh /share/gitlab-ce-12.8.6-ce.0.el8.x86_64.rpm
5. 配置
关键路径 | 路径 | 组件 | 描述 | | —- | —- | —- | | /etc/gitlab/gitlab.rb | GitLab | GitLab配置文件 | | /opt/gitlab | GitLab | GitLab及所有组件配置,组件二进制文件存放目录 | | /var/opt/gitlab/git-data | GitLab | GitLabRepository 存储目录 | | /var/opt/gitlab/backups | GitLab | GitLab备份目录 | | /var/log/gitlab | GitLab | GitLab各组件日志目录 | | /var/opt/gitlab/postgresql | PostgreSQL | PostgreSQL安装目录 | | /var/log/gitlab/postgresql | PostgreSQL | PostgreSQL日志目录 | | /var/log/gitlab/postgres-exporter | PostgreSQL | PostgreSQL-Exporter日志目录 | | /var/opt/gitlab/postgresql/data | PostgreSQL | PostgreSQL数据目录 | | /var/opt/gitlab/redis | Redis | Redis安装目录 | | /var/log/gitlab/redis | Redis | Redis日志目录 |
配置Unicorn服务
Unicorn是Ruby的HTTP Server,GitLab Rails应用托管在这个服务器上。默认可以通过“http://${域名}:8080”访问,Nginx作为Unicorn的反向代理。
配置gitlab.rb。
sudo vi /etc/gitlab/gitlab.rb
内容如下:
unicorn['port'] = 7077
配置unicorn.rb。
sudo vi /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
内容如下:
listen "127.0.0.1:7077", :tcp_nopush => true
配置gitlab-shell。
sudo vi /var/opt/gitlab/gitlab-shell/config.yml
内容如下:
gitlab_url: "http://127.0.0.1:7077"
配置Nginx服务
GitLab默认开启Nginx方向代理Unicorn/Puma的Http Server,也可以关闭Nginx,直接访问Http Server。
开启Nginx。
sudo vi /etc/gitlab/gitlab.rb
内容如下:
# 默认开启,一般情况下无需修改nginx['enable'] = true
配置gitlab.rb。
sudo vi /etc/gitlab/gitlab.rb
内容如下:
# 更改成部署机器的域名或者IP地址external_url 'http://192.168.56.101:7082'# Nginx监听端口nginx['listen_port'] = 7082gitlab_workhorse['auth_backend'] = "192.168.56.101:7082"
配置gitlab-http.conf。
sudo vi /var/opt/gitlab/nginx/conf/gitlab-http.conf
内容如下:
....server {listen *:7082;server_name 192.168.56.101;....
配置gitlab.yml。
sudo vi /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
内容如下:
production: &base....gitlab:host: 192.168.56.101port: 7082https: false....
配置备份
sudo mkdir -p /data/backup/gitlab# 自定义备份目录需要赋予目录git权限sudo chown -R git.git /data/backup/gitlabsudo vi /etc/gitlab/gitlab.rb
内容如下:
# 自定义备份目录路径gitlab_rails['backup_path'] = '/data/backup/gitlab'# 备份保留的时间(以秒为单位, 这个是七天默认值)gitlab_rails['backup_keep_time'] = 604800# 生成的备份文件权限(可选)gitlab_rails['backup_archive_permissions'] = 0644
配置邮箱服务(选)
sudo vi /etc/gitlab/gitlab.rb
内容如下:
gitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = "smtp.exmail.qq.com"gitlab_rails['smtp_port'] = 25gitlab_rails['smtp_user_name'] = "450733605@qq.com"gitlab_rails['smtp_password'] = "******"gitlab_rails['smtp_domain'] = "smtp.qq.com"gitlab_rails['smtp_authentication'] = 'plain'gitlab_rails['smtp_enable_starttls_auto'] = true
6. 常用操作
- 启停。
GitLab(全局控制所有组件)
# 初始化配置/重置配置(慎用:会恢复到最初配置)sudo gitlab-ctl reconfigure# 启动服务sudo gitlab-ctl start# 停止服务sudo gitlab-ctl stop# 重启服务sudo gitlab-ctl restart# 列出所有服务sudo gitlab-ctl service-list
Nginx
sudo gitlab-ctl start nginxsudo gitlab-ctl stop nginxsudo gitlab-ctl restart nginxsudo gitlab-ctl status nginx
Unicorn
sudo gitlab-ctl start unicornsudo gitlab-ctl stop unicornsudo gitlab-ctl restart unicornsudo gitlab-ctl status unicorn
Sidekiq
sudo gitlab-ctl start sidekiqsudo gitlab-ctl stop sidekiqsudo gitlab-ctl restart sidekiqsudo gitlab-ctl status sidekiq
PostgreSQL
sudo gitlab-ctl start postgresqlsudo gitlab-ctl stop postgresqlsudo gitlab-ctl restart postgresqlsudo gitlab-ctl status postgresql
Redis
sudo gitlab-ctl start redissudo gitlab-ctl stop redissudo gitlab-ctl restart redissudo gitlab-ctl status redis
查看版本。
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
查看状态。
# 查看服务状态sudo gitlab-ctl status# 检查服务状态sudo gitlab-rake gitlab:check SANITIZE=true --trace# 检查生效配置信息sudo gitlab-ctl show-config# 查看服务端口sudo netstat -ltpn |grep -i gitlab# 查看服务进程sudo ps -aux |grep -i gitlabsudo ps -ef |grep gitlab
查看日志。
sudo gitlab-ctl tailsudo gitlab-ctl tail nginx/gitlab_access.log
关闭注册功能。
管理员登陆,进入GitLab,进入“Admin Area”,点击“Settings”,在“Sign-up Restrictions”取消“sign-up enabled”,保存并退出。
7. 验证
Web UI:http://bankcomm.uat:7082 (root/12345678(密码长度需8位以上,管理员初次登陆时设置密码))
8. 备份
对GitLab进行备份将会创建一个包含所有库和附件的归档文件。对备份的恢复只能恢复到与备份时的GitLab相同的版本。将GitLab迁移到另一台服务器上的佳方法就是通过备份和还原。
备份文件将保存在配置文件中定义的${backup_path}中,文件名:${TIMESTAMP}_gitlab_backup.tar,${TIMESTAMP}为备份时的时间戳。${TIMESTAMP}的格式为:“EPOCH_YYYY_MM_DD_Gitlab-version”。默认的备份文件目录为:“/var/opt/gitlab/backups”,如果自定义备份目录需要赋予目录git权限。
1. 手动备份
sudo gitlab-rake gitlab:backup:create
2. 定时备份
sudo su -crontab -e
任务示例(每天凌晨2点进行一次自动备份):
# CRON=1的作用:如果没有任何错误发生时, 抑制备份脚本的所有进度输出。0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
3. 备份恢复
GitLab的恢复只能还原到与备份文件相同的GitLab版本的系统中,恢复时,停止连接到数据库的进程(即:停止数据写入服务),但需保持GitLab运行状态。
sudo gitlab-ctl stop unicornsudo gitlab-ctl stop sidekiq# 注意:备份文件名不要加“_gitlab_backup.tar”后缀sudo gitlab-rake gitlab:backup:restore BACKUP=****_2021_03_17_11.4.14
9. 升级
# 1. 下载新版本的RPM包,可以通过官网或者清华镜像站获取(yum源升级跳过该步骤)# 2. 关闭部分GitLab服务sudo gitlab-ctl stop unicornsudo gitlab-ctl stop sidekiqsudo gitlab-ctl stop nginx# 3. 升级到新版本${new_version}# 离线方式sudo rpm -Uvh gitlab-ce-${new_version}.x86_64.rpm# yum源方式sudo yum update gitlab-ce# 4. 重新配置GitLab(yum源方式可跳过该步骤,update会自动备份一次,并且初始化配置/重置配置)sudo gitlab-ctl reconfigure# 5. 重启GitLab服务sudo gitlab-ctl restart
注意:不要停止GitLab服务,直接更新即可。升级操作不建议进行。如果确实需要,也可以采取在一台新的服务器上安装新版本的 Gitlab,然后采用导入库的方式将旧系统的代码仓库导入到新 Gitlab 上。
10. 卸载
# 删除Gitlab(保留数据)sudo gitlab-ctl uninstall# 删除所有数据,重新开始sudo gitlab-ctl cleanse
