官方中文教程:https://www.gitlab.com.cn/ins...
官方安装链接:https://about.gitlab.com/install
普通方式安装请见:https://segmentfault.com/a/11...
环境要求:内存至少8G,GitLab是很耗内存滴
一、安装
一般会将 GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级
services:
gitlab:
image: gitlab/gitlab-ce:17.10.1-ce.0 # 指定版本,避免自动升级风险
container_name: gitlab
hostname: gitlab.nhub.site
restart: always
environment:
TZ: Asia/Shanghai
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.nhub.site'
gitlab_rails['gitlab_ssh_host'] = 'gitlab.nhub.site'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
gitlab_rails['time_zone'] = 'Asia/Shanghai'
gitlab_rails['initial_root_password'] = "idontknow"
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_keep_time'] = 604800 # 保留7天备份
postgresql['shared_buffers'] = "256MB" # 优化数据库
nginx['worker_processes'] = 4 # 根据CPU核心数调整
nginx['client_max_body_size'] = '512m'
# 关闭电子邮件相关功能
gitlab_rails['smtp_enable'] = false
gitlab_rails['gitlab_email_enabled'] = false
gitlab_rails['incoming_email_enabled'] = false
# Usage Statistics
gitlab_rails['usage_ping_enabled'] = false
gitlab_rails['sentry_enabled'] = false
# 关闭容器仓库功能
gitlab_rails['gitlab_default_projects_features_container_registry'] = false
gitlab_rails['registry_enabled'] = false
registry['enable'] = false
registry_nginx['enable'] = false
# 包仓库
gitlab_rails['packages_enabled'] = false
gitlab_rails['dependency_proxy_enabled'] = false
# GitLab KAS
gitlab_kas['enable'] = false
gitlab_rails['gitlab_kas_enabled'] = false
gitlab_rails['terraform_state_enabled'] = false
# Mattermost 聊天关闭
mattermost['enable'] = false
mattermost_nginx['enable'] = false
# Kerberos
gitlab_rails['kerberos_enabled'] = false
sentinel['enable'] = false
# 降低后台守护进程并发数
sidekiq['max_concurrency'] = 8 # 推荐设置为核心数*2
gitlab_ci['gitlab_ci_all_broken_builds'] = false
gitlab_ci['gitlab_ci_add_pusher'] = false
# 禁用 PUMA 集群模式
puma['worker_processes'] = 4
puma['min_threads'] = 2
puma['max_threads'] = 4
puma['per_worker_max_memory_mb'] = 2048
# 关闭监控
prometheus_monitoring['enable'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
pgbouncer_exporter['enable'] = false
gitlab_exporter['enable'] = false
sidekiq['metrics_enabled'] = false
gitlab_rails['gitlab_default_projects_features_builds'] = false
ports:
- "80:80"
- "443:443"
- "2222:22" # 避免与宿主机SSH冲突
volumes:
- /opt/gitlab/config:/etc/gitlab
- /opt/gitlab/data:/var/opt/gitlab
- /opt/gitlab/logs:/var/log/gitlab
shm_size: '512m' # 避免CI/CD内存不足
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
deploy:
resources:
limits:
cpus: '4'
memory: 16G环境变量
## GitLab URL 配置http协议所使用的访问地址
external_url 'https://gitlab.nhub.site' # clone时显示的地址,gitlab 的域名
# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = 'gitlab.nhub.site'
gitlab_rails['gitlab_shell_ssh_port'] = 10022访问 http://gitlab.nhub.site,系统默认的管理员账号为 root,第一次访问 GitLab,会要求初始化管理员账号的密码。
二、备份与恢复
1 数据备份
[root@git-server ~]# vim /etc/gitlab/gitlab.rb
# gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" #备份的路径
###! Docs: https://docs.gitlab.com/ce/raketasks/backup_restore.html#backup-archive-permissions
gitlab_rails['backup_archive_permissions'] = 0644 #备份文件的默认权限
###! The duration in seconds to keep backups before they are allowed to be deleted
gitlab_rails['backup_keep_time'] = 6048000 #保留时长,秒为单位[root@git-server backups]# /opt/gitlab/bin/gitlab-rake gitlab:backup:create
1.1 创建备份计划任务
[root@jenkins-master backups]# crontab -l
0 2 * * * docker exec gitlab gitlab-rake gitlab:backup:create2 数据恢复
特别注意:
备份目录和gitlab.rb中定义的备份目录必须一致
GitLab的版本和备份文件中的版本必须一致,否则还原时会报错。
[root@jenkins-master backups]# ls
1763056867_2025_11_14_15.11.13_gitlab_backup.tar
[root@jenkins-master backups]# gitlab-rake gitlab:backup:restore BACKUP=1763056867_2025_11_14_15.11.13三、GitLab内存占用过高解决方法
首先需要确定你已经知道官方明确要求的GitLab的硬件需求了,硬件需求详见GitLab Requirements,简单来讲,官方推荐最低物理配置是2核,4G,下面就总结一下减少GitLab占用内存的一些方法
1.1 调整 Unicorn(或 Puma)配置
GitLab 使用 Unicorn(旧版)或 Puma(新版本)作为其 Web 服务器。可以通过减少并发工作进程的数量来减少内存占用。
修改配置文件/etc/gitlab/gitlab.rb中的worker_processes:
unicorn['worker_processes'] = 2
默认是被注释掉的,官方建议该值是CPU核心数加一,可以提高服务器的响应速度,如果内存只有4G,或者服务器上有其它业务,就不要改了,以免内存不足。另外,这个参数最小值是2,设为1,服务器可能会卡死。
官方推荐为核心数+1,实际请根据服务器事情情况设置大小(值越小占用越少)
1.2 调整 Sidekiq 配置
Sidekiq 是 GitLab 用于处理后台任务的组件。如果 Sidekiq 消耗过多的内存,可以减少其工作进程数。
在 gitlab.rb 配置文件中,找到并调整 sidekiq['concurrency'] 参数:
sidekiq['concurrency'] = 10 # 默认值通常是 25,可以根据需求减少
1.3 优化数据库连接数
GitLab 与 PostgreSQL 进行大量的交互,过多的数据库连接会消耗过多内存。
你可以通过调整 GitLab 配置来限制 PostgreSQL 的连接数,减少连接数可以降低内存占用。
修改 gitlab.rb 文件中的以下参数:
gitlab_rails['db_pool'] = 20
1.4 减少数据库并发数
postgresql['max_worker_processes'] = 8
1.5 减少数据库缓存
postgresql['shared_buffers'] = "256MB" # 默认为256MB,可适当改小
角色权限
Guest,Reporter,Developer,Master,Owner对应的权限。