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-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el8
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
安装
sudo yum makecache
sudo yum install gitlab-ce
2. 离线安装
确保启动ssh服务
sudo systemctl status sshd
sudo systemctl enable sshd
sudo 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(邮件服务器)**
```bash
sudo systemctl status postfix
sudo systemctl enable postfix
sudo systemctl start postfix
sudo 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'] = 7082
gitlab_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.101
port: 7082
https: false
....
配置备份
sudo mkdir -p /data/backup/gitlab
# 自定义备份目录需要赋予目录git权限
sudo chown -R git.git /data/backup/gitlab
sudo 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'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 25
gitlab_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 nginx
sudo gitlab-ctl stop nginx
sudo gitlab-ctl restart nginx
sudo gitlab-ctl status nginx
Unicorn
sudo gitlab-ctl start unicorn
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl restart unicorn
sudo gitlab-ctl status unicorn
Sidekiq
sudo gitlab-ctl start sidekiq
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl restart sidekiq
sudo gitlab-ctl status sidekiq
PostgreSQL
sudo gitlab-ctl start postgresql
sudo gitlab-ctl stop postgresql
sudo gitlab-ctl restart postgresql
sudo gitlab-ctl status postgresql
Redis
sudo gitlab-ctl start redis
sudo gitlab-ctl stop redis
sudo gitlab-ctl restart redis
sudo 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 gitlab
sudo ps -ef |grep gitlab
查看日志。
sudo gitlab-ctl tail
sudo 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 unicorn
sudo 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 unicorn
sudo gitlab-ctl stop sidekiq
sudo 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