GITLAB
简介
- 基于GIT的源码托管解决方案
- 基于Ruby on rails开发
- 集成nginx postgreSQL redis sidekiq等组件
- 资源 https://about.gitlab.com/downloads
- 清华镜像 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
安装要求
- centos7
- 内存2G以上
- 版本gitlab-ce-12.0.3
安装依赖(https://about.gitlab.com/install/#centos-7)
- sudo yum install -y curl policycoreutils-python openssh-server perl
- sudo yum install -y postfix
开始安装
- yum localinstall -y gitlab-ce-12.0.3-ce.0.el7.x86_64.rpm
- 软件地址 https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
配置gitlab访问域名
- 修改配置文件 /etc/gitlab/gitlab.rb (external_url 'http://192.168.1.106',如果是域名请写域名)
邮箱配置
1.Email Settings
- gitlab_rails['gitlab_email_enabled'] = true
- gitlab_rails['gitlab_email_from'] = "@qq.com" # 发件邮箱
- gitlab_rails['gitlab_email_display_name'] = 'Joker-GitLab' # 发件人显示名称
2.配置邮箱的用户名和密码
- gitlab_rails['smtp_enable'] = true
- gitlab_rails['smtp_address'] = "smtp.qq.com"
- gitlab_rails['smtp_port'] = 465 # 126 是25
- gitlab_rails['smtp_user_name'] = "@qq.com" #发件人邮箱账户
- gitlab_rails['smtp_password'] = "" #发件人邮箱客户端授权码
- gitlab_rails['smtp_domain'] = "qq.com"
- gitlab_rails['smtp_authentication'] = "login"
- gitlab_rails['smtp_enable_starttls_auto'] = true
- gitlab_rails['smtp_tls'] = true
关闭可关闭组件
- grafana['enable'] = false
- prometheus['enable'] = false
- node_exporter['enable'] = false
- redis_exporter['enable'] = false
- postgres_exporter['enable'] = false
- gitlab_monitor['enable'] = false
- gitlab_monitor['probe_sidekiq'] = false
- prometheus_monitoring['enable'] = false
常用命令
- gitlab-ctl reconfigure
- gitlab-ctl status
- gitlab-ctl start
- gitlab-ctl stop
- gitlab-ctl restart
- gitlab-ctl tail nginx
gitlab组件介绍
- nginx:静态Web服务器
- gitlab-shell:用于处理Git命令和修改authorized keys列表
- gitlab-workhorse:轻量级的反向代理服务器
- logrotate:日志文件管理工具
- postgresql:数据库
- redis:缓存数据库
- sidekiq:用于在后台执行队列任务(异步执行)
- unicorn:GitLab Rails应用是托管在这个服务器上面的
Gitlab目录介绍
- /var/opt/gitlab/git-data/repositories/:库默认存储目录,代码库关系都有,建议用自带的命令备份,见下面说明
- /opt/gitlab:应用代码和相应的依赖程序
- /var/opt/gitlab:gitlab-ctl reconfigure命令编译后的应用数据和配置文件,不需要人为修改配置
- /etc/gitlab:配置文件目录
- /var/log/gitlab:此目录下存放了gitlab各个组件产生的日志
- /var/opt/gitlab/backups/:备份文件生成的目录,只有代码,没有库关系
变更主配置文件(/etc/gitlab/gitlab.rb)
- 1、gitlab-ctl reconfigure 重置配置文件
- 2、gitlab-ctl show-config 验证配置文件
- 3、gitlab-ctl restart 重启gitlab服务
汉化处理
- https://gitlab.com/xhang/gitlab/ 汉化地址选择gitlab对应的版本下载
- tar xf gitlab-12-0-stable-zh.tar.gz
- gitlab-ctl stop
- \cp -r gitlab-12-0-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
- gitlab-ctl reconfigure
- gitlab-ctl restart
- 管理中心,设置(通用设置),本地化
关闭注册
- 管理中心,设置(通用),注册限制
创建对象
先创建组,在创建用户,最后创建项目。千万不要把仓库给个人,要把仓库给组,用户加入组。
- 创建gourps
- 创建用户
- 创建项目给组
SSH KEY管理
- 个人SSH KEY
- Deploy KEY
- 创建SSH KEY
- 将公钥导入用户SSHKEY
- 创建deploy key
- 将deploy key导入gitlab并在项目中允许
- ssh key文件全局唯一
备份管理(修改/etc/gitlab/gitlab.rb)
- gitlab_rails['manage_backup_path'] = true
- gitlab_rails['backup_path'] = '/data/backup/gitlab'
- gitlab_rails['backup_keep_time'] = 604800
- 如果自定义备份目录需要赋予git权限
- mkdir /data/gitlab/backup
- chown -R git.git /data/gitlab/backup
- 定时任务Crontab中加入
- 0 2 * * * root /usr/bin/gitlab-rake gitlab:backup:create
- 策略建议:本地保留三到七天,在异地备份永久保存
恢复管理
- 停止数据写入服务
- gitlab-ctl stop unicorn
- gitlab-ctl stop sidekiq
- gitlab-rake gitlab:backup:restore BACKUP=1576491309_2019_12_16_12.0.3 # 后面名字就是在备份目录中文件名
- gitlab-ctl start
gitlab迁移
一定的一定要保证前后版本相同的时候,手动备份一份,然后在恢复在另一台上。还有就是/etc/gitlab/gitlab.rb和/var/opt/gitlab/nginx/conf一并要迁移走,或者保证内容一样。
gitlab升级
不能跨版本升级,要10-11,不能10-12
gitlab忘记管理密码
1. 在root用户下,执行 [root@gitlab-ce ~]# gitlab-rails console -e production 2.获得用户数据,修改用户密 irb(main):001:0> user = User.where(id: 1).firs #更改密码并确认密码 irb(main):002:0> user.password="123456" irb(main):003:0> user.password_confirmation="123456" #保存退出 irb(main):004:0> user.save! irb(main):005:0> quit
优化内存
- /etc/gitlab/gitlab.rb
- unicorn['worker_processes'] = 4 一般是核心数就行了。官网建议+1