gitlab
gitlab程序:
文件目录:
- /etc/gitlab 配置文件目录
- /run/gitlab 运行 pid 目录
- /opt/gitlab 安装目录
- /var/opt/gitlab 数据目录
- /var/log/gitlab 日志目录
命令行工具
gitlab-rails:
用于于启动控制台进行特殊操作,比如修改管理员密码、打开数据库控制台等
gitlab-rails 命令
generate,g 生成新代码
console,c 启动Rails控制台
server,s 启动Rails服务
test,t
test:system
dbconsole,db 启动数据库控制台,配置文件在:config/database.yml
new
gitlab-psql:
数据库命令行
gitlab-psql
\copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
gitlab-rake
数据备份恢复等数据操作
create #备份git、sql,等同执行gitlab-rake gitlab:backup:create
gitlab-ctl:
客户端命令行操作行
gitlab-ctl 命令
stop #停止 gitlab
puma
sidekiq
start #启动 gitlab
restar #重启 gitlab
status #查看组件运行状态
tail nginx #查看某个组件的日志
reconfigure #重载配置
backup-etc #备份配置文件
--backup-path 路径
gitlab数据备份恢复:
需要先禁止向gitlab服务器写入数据的进程
配置项可选修改:
gitlab_rails['backup_path'] = '/mnt/backups' #备份路径
1)停服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
2)备份
gitlab-rake gitlab:backup:create
gitlab-rake backup-etc --backup-path /data/gitlab-etc
cd /var/opt/gitlab/backups/ #备份文件自动存在此目录
3)启动服务
gitlab-ctl start unicorn
gitlab-ctl start sidekiq
4)恢复数据
在web界面删除文件,模拟故障
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
#BACKUP=备份文名(只需要数字,无需字符串)
gitlab-rake gitlab:backup:restore BACKUP=1640009303_2021_12_20_12.8.5
5)启动服务
gitlab-ctl start unicorn
gitlab-ctl start sidekiq
gitlab优化
由于现在gitlab的体量非常大,默认安装时,将所有功能都开启了,按官方文档推荐的最小配置绝对卡成翔,会频繁oom,所以可根据配置自行调整,只保留作为代码仓库核心作用
配置相关
gitlab_rails['time_zone'] = 'Asia/Shanghai'
# 关闭容器仓库功能
gitlab_rails['gitlab_default_projects_features_container_registry'] = false
gitlab_rails['registry_enabled'] = false
registry['enable'] = false
gitlab_rails['registry_enabled'] = false
registry_nginx['enable'] = false
# 包仓库、依赖管理,可用harbor、nexus替代
gitlab_rails['packages_enabled'] = false
gitlab_rails['dependency_proxy_enabled'] = false
# 文档、demo演示功能,可用Hugo、MdBook替代
gitlab_pages['enable'] = false
pages_nginx['enable'] = false
# 监控
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
grafana['enable'] = false
sidekiq['metrics_enabled'] = false
#性能分析
gitlab_rails['usage_ping_enabled'] = false
gitlab_rails['sentry_enabled'] = false
grafana['reporting_enabled'] = false
#关闭cd功能和k8s云功能
gitlab_kas['enable'] = false
gitlab_rails['gitlab_kas_enabled'] = false
gitlab_rails['terraform_state_enabled'] = false
#Kerberos、Sentinel 关闭
gitlab_rails['kerberos_enabled'] = false
sentinel['enable'] = false
# Mattermost聊天关闭
mattermost['enable'] = false
mattermost_nginx['enable'] = false
#puma提供web服务,小于4G环境,官方推荐禁用 PUMA 集群模式,关闭后就只有1个进程,减少大约100-400MB
puma['worker_processes'] = 0
puma['min_threads'] = 1
puma['max_threads'] = 2
puma['per_worker_max_memory_mb'] = 1024 #默认1024M
#sidekiq提供管理调度功能,可降低后台守护进程并发数
sidekiq['max_concurrency'] = 5
#关闭电子邮件相关功能
gitlab_rails['smtp_enable'] = false
gitlab_rails['gitlab_email_enabled'] = false
gitlab_rails['incoming_email_enabled'] = false
#ci功能关闭,Drone可替代
gitlab_ci['gitlab_ci_all_broken_builds'] = false
gitlab_ci['gitlab_ci_add_pusher'] = false
#数据备份
gitlab_rails['backup_keep_time'] = 604800 #备份保留时间,默认604800s等于7d,0为永久保留
gitlab_rails['backup_path'] = '/mnt/backups'
git_data_dirs({ "default" => { "path" => "/mnt/nas/git-data" } }) #git数据目录
#指定标头,防止主机头攻击
gitlab_rails['allowed_hosts'] = ['gitlab.example.com','127.0.0.1', 'localhost']
gitaly['concurrency'] = [
{
'rpc' => "/gitaly.SmartHTTPService/PostReceivePack",
'max_per_repo' => 3
}, {
'rpc' => "/gitaly.SSHService/SSHUploadPack",
'max_per_repo' => 3
}
]
#pgsql配置
postgresql['shared_buffers'] = "256MB" #共享缓冲
postgresql['autovacuum_max_workers'] = "2" #自动清理进程数
postgresql['shmmax'] = 17179869184
postgresql['shmall'] = 4194304
postgresql['max_worker_processes'] = 4
#redis配置
redis['maxmemory'] = "0"
redis['io_threads'] = 4
隐藏不需要的菜单栏功能
在web界面中,"Security and Operations"选项卡,占用资源太多,也不需要使用时可以关闭,但官方并未给出解决方案,但可改代码实现关闭
cp /opt/gitlab/embedded/service/gitlab-rails/lib/sidebars/projects/menus menus
#只需要修改此目录下,想要关闭的菜单栏代码即可,文件中其他部分不变,只用清空函数内容,并返回false,gitlab就不会初始化此部分
vim menus/monitor_menu.rb
...
def configure_menu_items
false
end

浙公网安备 33010602011771号