GitLab服务部署安装及使用
一、GitLab介绍
sudo gitlab-ctl start unicorn
sudo gitlab-ctl start sidekiq
sudo gitlab-ctl start nginx
systemctl status gitlab-runsvdir.service
systemctl stop gitlab-runsvdir.service
systemctl start gitlab-runsvdir.service
gitlab-ctl status
gitlab-ctl stop
gitlab-ctl reconfigure
gitlab-ctl restart
gitlab-ctl start
sudo gitlab-ctl stop
sudo gitlab-psql -d gitlabhq_production
更新用户的创建时间
UPDATE users SET created_at = '2024-08-30 09:34:00' WHERE id >= 61;
UPDATE users SET created_at = '2024-02-06 10:15:00' WHERE id <= 60 and id>=48;
UPDATE users SET created_at = '2024-08-01 00:00:00' WHERE id = 56;
UPDATE users SET created_at = '2024-08-01 00:00:00' WHERE id = 56;
UPDATE namespaces SET created_at = '2024-01-04 08:45:00' WHERE type = 'Group' AND id = 119;
UPDATE projects SET created_at = '2024-01-04 09:03:00' WHERE id = 62;
UPDATE projects SET created_at = '2024-01-04 09:34:00' WHERE id = 66;
UPDATE projects SET created_at = '2024-08-29 10:11:00' WHERE id = 64;
UPDATE projects SET created_at = '2024-08-29 09:11:32' WHERE id = 65;
UPDATE projects SET created_at = '2024-08-29 10:23:18' WHERE id = 63;
UPDATE projects SET created_at = '2024-08-29 09:15:15' WHERE id = 67;
GitLab是利用Ruby onRails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
二、GitLab安装
1、先安装相关依赖
yum -y install policycoreutils openssh-server openssh-clients postfix policycoreutils-python
1
2、启动postfix,并设置开机自启动(支持gitlab邮件发送)
systemctl enable postfix
systemctl start postfix
1
2
3、下载并安装Gitlab社区版RPM包
点击下载gitlab-ce-14.10.5-ce.0.el7.x86_64.rpm放到服务器指定目录输入下面指令执行安装
rpm -ivh gitlab-ce-14.10.5-ce.0.el7.x86_64.rpm
1
三、GitLab配置
1、配置端口号
vi /etc/gitlab/gitlab.rb
external_url 'http://103.45.163.129:9898'
将puma[‘port’] = 8080取消注释,并且改为别的端口,不能和external_url 的端口重复,然后再保存
2、配置默认日志目录
在 /etc/gitlab/gitlab.rb 文件中,有许多用于各种类型日志的 log_directory
键。取消注释并更新要放置在其他地方的所有日志的值:
将下面的配置在配置文件中/etc/gitlab/gitlab.rb放开
# For example:
gitlab_rails['log_directory'] = "/var/log/gitlab/gitlab-rails"
puma['log_directory'] = "/var/log/gitlab/puma"
registry['log_directory'] = "/var/log/gitlab/registry"
...
3、Gitlab邮箱配置
这里以QQ exmail (腾讯企业邮箱)为例
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
gitlab_rails['smtp_domain'] = "exmail.qq.com"
# 示例
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "fiend@sintech.cn"
gitlab_rails['smtp_password'] = "123qwe"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'fiend@sintech.cn'
gitlab_rails['smtp_domain'] = "exmail.qq.com"
4、配置修改完执行以下命令
gitlab-ctl reconfigure
gitlab-ctl restart
1
2
四、GitLab常用命令
# 开启,关闭,重启: gitlab组件
gitlab-ctl {start|stop|restart|status}
gitlab-ctl start
gitlab-ctl stop
gitlab-ctl restart
gitlab-ctl status
# 重载配置文件(重新编译gitlab的配置)
gitlab-ctl reconfigure
# 验证配置文件
gitlab-ctl show-config
# 检查gitlab
gitlab-rake gitlab:check SANITIZE=true --trace
# 查看日志
gitlab-ctl tail
gitlab-ctl tail nginx/gitlab_access.log
gitlab-ctl tail nginx/gitlab_error.log
# 常用目录
日志地址:/var/log/gitlab/ # 对应各服务的打印日志
服务地址:/var/opt/gitlab/ # 对应各服务的主目录
五、GitLab首次登录
gitlab搭建成功后,首次登录,可以直接使用root账号
因为如果注册,注册成功后,还不能直接登录,需要管理员批准,不如直接用root账号登录
1、进入gitlab控制台,查找root账号
gitlab-rails console -e production
1
输入下面查找指令
admin_users = User.where(admin: true)
1
可以看到root账号的id为1,根据id去修改root账号的密码
2、重新设置gitlab root账号密码
user = User.find_by(id: '1')
user.password = 'qeidc@2025'
user.password_confirmation = 'qeidc@2025'
user.save!
3、重置过的密码重新登录
六、GitLab创建组、项目、用户
创建顺序:先创建组——再创建项目——最后创建用户
项目、组、用户的关系:把创建的用户和项目加入组中,只有同一组的用户才能操作该组的项目。
1、创建组
————————————————
1. 安装依赖项
确保系统已安装必要的工具:
# Ubuntu/Debian
sudo apt update
sudo apt install -y curl openssh-server ca-certificates postfix
# CentOS/RHEL
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
2. 添加GitLab仓库
使用官方脚本添加仓库:
# Ubuntu/Debian
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
# CentOS/RHEL
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
3. 安装GitLab
根据域名或IP安装对应版本:
# Ubuntu/Debian(替换EXTERNAL_URL为你的域名或IP)
sudo EXTERNAL_URL="http://gitlab.example.com" apt install gitlab-ce
# CentOS/RHEL(替换EXTERNAL_URL)
sudo EXTERNAL_URL="http://gitlab.example.com" yum install gitlab-ce
4. 配置GitLab
编辑配置文件 /etc/gitlab/gitlab.rb,修改 external_url:
sudo nano /etc/gitlab/gitlab.rb
1
找到并修改:
external_url 'http://gitlab.example.com' # 替换为你的域名或IP
1
应用配置并启动服务:
sudo gitlab-ctl reconfigure
1
5. 开放防火墙端口(如启用防火墙)
# Ubuntu/Debian(UFW)
sudo ufw allow http
sudo ufw allow https
sudo ufw allow ssh
# CentOS/RHEL(Firewalld)
sudo firewall-cmd --permanent --add-service={http,https,ssh}
sudo firewall-cmd --reload
6. 访问GitLab
在浏览器中输入配置的 external_url(如 http://gitlab.example.com)。首次访问需设置 root 用户密码。
配置邮件(可选)
在 /etc/gitlab/gitlab.rb 中配置邮件服务(如SMTP):
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.example.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "user@example.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = "gitlab@example.com"
重新配置以生效:
sudo gitlab-ctl reconfigure
1
8. 启用HTTPS(可选)
修改 external_url 为 https://gitlab.example.com
在 /etc/gitlab/gitlab.rb 中启用 Let’s Encrypt:
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['admin@example.com']
1
2
重新配置:
sudo gitlab-ctl reconfigure
1
9. 常用命令
# 启动/停止/重启服务
sudo gitlab-ctl start
sudo gitlab-ctl stop
sudo gitlab-ctl restart
# 查看日志
sudo gitlab-ctl tail
10. 备份与恢复
# 手动备份(默认路径:/var/opt/gitlab/backups)
sudo gitlab-rake gitlab:backup:create
# 恢复备份
sudo gitlab-ctl stop
sudo gitlab-rake gitlab:backup:restore BACKUP=备份文件名
sudo gitlab-ctl start
注意事项
资源需求:GitLab 需要至少 4GB 内存,建议生产环境使用更高配置。
更新升级:定期运行 sudo apt update && sudo apt upgrade(Ubuntu)或 sudo yum update(CentOS)保持最新。
日志排查:若遇到问题,检查 /var/log/gitlab 下的日志文件。
————————————————
gitlab-ctl start 启动时候报错,runsv not running
解决问题:
1. 启动systemctl start gitlab-runsvdir.service
若启动时候没反应,则进行第二步,查看系统服务
2. systemctl -t target
如果存在inactive dead的服务,则意味着这个服务出错了,进行第三步操作
3. systemctl list-jobs
列出所有正在运行的任务,如果存在某个任务是running,其他任务waiting, 则是该任务堵塞了其他服务,停止该任务即可
4. systemctl stop xxx.service
停止阻塞服务
5.再次启动systemctl start gitlab-runsvdir.service,则正常启动
6.gitlab-ctl start 启动gitlab成功
Git 生成提交历史的几种方法
1. 查看基本提交历史
git log
这会显示完整的提交历史,包括提交哈希、作者、日期和提交信息。
2. 简洁格式的提交历史
git log --oneline
显示简化的提交历史,每行只包含提交哈希的前7位和提交信息。
3. 图形化提交历史
git log --graph --oneline --decorate --all
这会显示分支和合并的可视化历史,非常适合查看复杂的分支结构。
4. 按作者筛选提交历史
git log --author="用户名"
只显示特定作者的提交。
5. 按时间范围筛选
git log --since="2023-01-01" --until="2023-12-31"
显示2023年全年的提交历史。
6. 按文件筛选
git log -- path/to/file
只显示影响特定文件的提交。
7. 生成统计报告
git log --stat
显示每次提交更改的文件统计信息。
8. 生成补丁格式
git log -p
显示每次提交的详细差异。
9. 自定义格式输出
git log --pretty=format:"%h - %an, %ar : %s"
自定义格式选项:
-
%h
- 缩短的提交哈希 -
%an
- 作者名字 -
%ar
- 作者日期,相对格式 -
%s
- 提交信息
10. 生成HTML格式的提交历史
git log --pretty=format:'<li><a href="https://github.com/your/repo/commit/%H">%h</a> - %s (%an, %ar)</li>' > commits.html
11. 生成变更统计报告
git log --numstat --pretty=format:"%H" > changes.csv
12. 生成JSON格式的提交历史
git log --pretty=format:'{%n "commit": "%H",%n "author": "%an",%n "date": "%ad",%n "message": "%s"%n},' > log.json
13. 生成Markdown格式的变更日志
git log --pretty=format:"- %s ([%h](https://github.com/your/repo/commit/%H))" --reverse > CHANGELOG.md
14. 查看特定分支的提交历史
git log branch-name
15. 查看两个提交之间的差异
git log commit1..commit2
提示
-
添加
--no-merges
可以过滤掉合并提交 -
使用
-n
参数限制显示数量,如git log -n 5
-
结合
grep
可以搜索提交信息,如git log --grep="bug fix"