安装环境:
虚拟机:Centos7 最小安装 4核8G
下载GitLab
本次实验下载的是 gitlab-ce-14.1.0-ce.0.el7.x86_64.rpm
官网截图

清华源截图

安装GitLab
安装Postfix用于发送通知邮件,当然也可以使用其他SMTP服务器来发送邮件,本次实验使用Postfix。

安装GitLab

在线安装
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
|


yum install gitlab-ce-14.1.0-ce.0.el7.x86_64
|


离线安装
将安装程序下载并上传至服务器,在安装程序所在目录执行
rpm -ivh gitlab-ce-14.1.0-ce.0.el7.x86_64.rpm --nodeps --force
|
与在线安装一样出现GitLab图标安装成功
配置GitLab
修改/etc/gitlab/gitlab.rb

external_url 指的是通过外部的哪个域名访问GitLab。可以写成本机的IP如:http://10.0.0.60
external_url 'http://10.0.0.60'
|
可选邮件配置
gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "xchensir.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
gitlab_rails['gitlab_email_from'] = 'xhcensir@qq.com' user['git_user_email'] = "xchensir@qq.com"
|
初始化服务
执行配置并启动服务
# 修改完配置文件需执行该命令并执行重启命令 gitlab-ctl reconfigure
# 重启命令 gitlab-ctl restart
|
GitLab相关目录:
- 配置文件目录:/etc/gitlab
- 运行PID目录:/run/gitlab
- 安装目录:/opt/gitlab
- 数据目录:/var/opt/gitlab
- 日志目录:/var/log/gitlab
GitLab常用命令
验证GitLab启动完成

验证端口及状态
80端口是在初始化GitLab时启动的,如果之前有程序占用会导致初始化失败或无法访问GitLab。
# 最小化安装没有lsof 需要安装 yum install -y lsof
# 查看80端口状态 lsof -i:80
|

登录GitLab
进入到页面会让你输入用户名和密码

初始管理员用户为root,密码在安装过程中已随机生成并保存在/etc/gitlab/initial_root_password中,有效期24小时
# 查看root用户密码 cat /etc/gitlab/initial_root_password
|
默认首页

关闭注册


问题汇总
发送邮件通知问题
邮件发布出去大致两个原因:
上操作:
登录GitLab 422
服务器时间与本地时间不一致
解决方法:大多数是服务器时间的问题,修改时间即可
重置GitLab管理员密码
切换到相应路径
进入控制台
查询root用户账号信息并赋值
设置密码
确认密码(非必须)
u.password_confirmation = 'root123456'
|
保存设置
退出控制台
重启GitLab
完全卸载GitLab
停止GitLab
卸载GitLab
查看GitLab进程
kill掉第一个进程
kill掉之后 再次查看gitlab进程,确认是否被停止
删除所有包含gitlab的文件
find / -name gitlab | xargs rm -rf
|
Git常用命令
设置全局用户名
git config --global user.name "name"
|
设置全局邮箱
git config --global user.email xxx@xxx.com
|
列出用户全局配置
git config --global --list
|
添加到暂存区
提交文件到工作区
查看工作区状态
提交代码到服务器
获取代码到本地
查看操作日志
定义忽略文件上传至gitlab
版本回滚
# HEAD为当前版本,加上一个^为上一版本 ^^为上上一个版本 git reset --hard HEAD^^
|
获取每次提交的ID
# 可以使用 --hard 根据提交的ID进行版本回退 git reflog
|
回退到指定版本
git reset --hard 5ae4b07i0
|
查看当前所在分支
创建并切换到一个新分支
切换分支
GitLab数据备份与恢复
停止gitlab数据服务
gitlab-ctl stop unicorn gitlab-ctl stop sidekiq
|
手动备份数据
# 在任意目录即可备份当前gitlab数据 gitlab-rake gitlab:backup:create
# 备份完成后启动gitlab gitlab-ctl start
|
查看要恢复的文件
- 数据备份目录:/var/opt/gitlab/backups/
- nginx配置文件:/var/opt/gitlab/nginx/conf
- gitlab配置文件:/etc/gitlab/gitlab.rd
- key文件:/etc/gitlab/gitlab-secrets.json
执行恢复
gitlab-ctl stop unicorn
# 数据恢复之前停止服务 gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=备份文件名
|
启动服务
gitlab-ctl start sidekiq gitlab-ctl start unicorn
|
本地定时备份数据
准备工作:
- 本地默认备份路径:/var/opt/gitlab/backups/
- 备份命令:gitlab-rake gitlab:backup:create
- 恢复命令:gitlab-rake gitlab:backup:restore BACKUP=备份文件名
- 配置文件:/etc/gitlab/gitlab.rd
修改配置文件
vim /etc/gitlab/gitlab.rd
|
gitlab_rails['manage_backup_path'] = true
# 备份目录 gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
# 生成备份文件的权限 gitlab_rails['backup_archive_permissions'] = 0644
# 备份保留天数,秒计算 gitlab_rails['backup_keep_time'] = 604800
|
更新配置文件使其生效
添加定时任务
crontab -e
# 每天凌晨两点执行备份命令 0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
|
查看定时任务
设置crontab自启
systemctl enable crontab
# 修改后重启crontab服务 systemctl restart crontab
|
验证备份结果
ls -al /var/opt/gitlab/backups
|