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-ctl start
 

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. 查看基本提交历史

bash
 
复制
 
下载
git log

这会显示完整的提交历史,包括提交哈希、作者、日期和提交信息。

2. 简洁格式的提交历史

bash
 
复制
 
下载
git log --oneline

显示简化的提交历史,每行只包含提交哈希的前7位和提交信息。

3. 图形化提交历史

bash
 
复制
 
下载
git log --graph --oneline --decorate --all

这会显示分支和合并的可视化历史,非常适合查看复杂的分支结构。

4. 按作者筛选提交历史

bash
 
复制
 
下载
git log --author="用户名"

只显示特定作者的提交。

5. 按时间范围筛选

bash
 
复制
 
下载
git log --since="2023-01-01" --until="2023-12-31"

显示2023年全年的提交历史。

6. 按文件筛选

bash
 
复制
 
下载
git log -- path/to/file

只显示影响特定文件的提交。

7. 生成统计报告

bash
 
复制
 
下载
git log --stat

显示每次提交更改的文件统计信息。

8. 生成补丁格式

bash
 
复制
 
下载
git log -p

显示每次提交的详细差异。

9. 自定义格式输出

bash
 
复制
 
下载
git log --pretty=format:"%h - %an, %ar : %s"

自定义格式选项:

  • %h - 缩短的提交哈希

  • %an - 作者名字

  • %ar - 作者日期,相对格式

  • %s - 提交信息

10. 生成HTML格式的提交历史

bash
 
复制
 
下载
git log --pretty=format:'<li><a href="https://github.com/your/repo/commit/%H">%h</a> - %s (%an, %ar)</li>' > commits.html

11. 生成变更统计报告

bash
 
复制
 
下载
git log --numstat --pretty=format:"%H" > changes.csv

12. 生成JSON格式的提交历史

bash
 
复制
 
下载
git log --pretty=format:'{%n  "commit": "%H",%n  "author": "%an",%n  "date": "%ad",%n  "message": "%s"%n},' > log.json

13. 生成Markdown格式的变更日志

bash
 
复制
 
下载
git log --pretty=format:"- %s ([%h](https://github.com/your/repo/commit/%H))" --reverse > CHANGELOG.md

14. 查看特定分支的提交历史

bash
 
复制
 
下载
git log branch-name

15. 查看两个提交之间的差异

bash
 
复制
 
下载
git log commit1..commit2

提示

  • 添加 --no-merges 可以过滤掉合并提交

  • 使用 -n 参数限制显示数量,如 git log -n 5

  • 结合 grep 可以搜索提交信息,如 git log --grep="bug fix"

posted @ 2025-04-26 09:30  hanease  阅读(277)  评论(0)    收藏  举报