隔空想念

搭建gitlab

· Vanguard

1. 环境准备

目标与说明

  • 服务器:一台公网 Linux(CentOS / Ubuntu 均可),已安装宝塔面板。
  • 域名:已解析到服务器。
  • 开放端口:80/443(面向外网)+ 8099(GitLab 后端 HTTP)。

为什么选择 8099?
我们让 GitLab 只监听本机 127.0.0.1:8099,再由宝塔 Nginx 做反向代理并负责 SSL。这样既省掉 GitLab 自带的 Nginx,也方便与其他站点共存。


2. 安装 GitLab(宝塔一键脚本)

  1. 在宝塔应用商店搜索 GitLab CE 并安装。
  2. 安装完毕后,在宝塔「网站」中新建空站点,域名填写 gitlab.example.com,并开启 Let’s Encrypt SSL。
  3. 将站点反代目标设置为 http://127.0.0.1:8099

3. 修改 GitLab 外部地址

编辑文件 /etc/gitlab/gitlab.rb(Omnibus 安装默认路径):

external_url "https://gitlab.example.com"   # 改成你的域名
nginx['listen_port']    = 8099              # 仅监听本机
nginx['listen_https']   = false             # 禁用内部 HTTPS
nginx['listen_address'] = "127.0.0.1"

保存后执行以下命令重新生成配置并重启:

sudo gitlab-ctl reconfigure

4. 让 Markdown 缓存立即失效(可选)

如果修改了 external_url 或发现渲染异常,可以通过以下步骤强制刷新缓存:

  1. 获取当前 local_markdown_version 值:
TOKEN=<Admin 私人令牌>
curl -s --header "PRIVATE-TOKEN:$TOKEN" \
https://gitlab.example.com/api/v4/application/settings \
| jq .local_markdown_version
  1. local_markdown_version 加 1:
curl -X PUT --header "PRIVATE-TOKEN:$TOKEN" \
"https://gitlab.example.com/api/v4/application/settings?local_markdown_version=$((n+1))"

官方文档
Invalidate Markdown Cache


5. 放宽上传大小限制

在宝塔站点的 nginx.conflocation 块中加入以下配置:

client_max_body_size 0;      # 0 = 不限
proxy_request_buffering off; # 防止大文件先落盘再转发

重载 Nginx 后,HTTP/HTTPS 推送、LFS 上传、CI 构件将不再受 1 MiB 默认限制。


6. 大文件治理与仓库迁移

6.1 发现并备份大文件

列出所有 ≥100 MB 的 blob:

git rev-list --objects --all \
| git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' \
| grep '^blob' \
| awk '$3 > 104857600 {printf "%.2f MB\t%s\n", $3/1048576, $4}' \
| sort -nr

手动备份并删除 .idea//Android/ 等 IDE 或编译产物目录,避免误删源码。

6.2 历史瘦身

  • 方法一:BFG
bfg --strip-blobs-bigger-than 100M --no-blob-protection
  • 方法二:git-filter-repo(官方推荐)
git filter-repo --strip-blobs-bigger-than 100M

清理引用并收缩包:

git reflog expire --expire=now --all
git gc --prune=now --aggressive

6.3 启用 Git LFS 并跟踪大文件

git lfs install
git lfs track "*.zip"  # 修改通配符以匹配大文件
git add .gitattributes
git add your_large_file.zip
git commit -m "使用 Git LFS 管理大文件"

6.4 推送到新 GitLab

git remote add origin https://gitlab.example.com/your/ns/repo.git
git push -u origin --all          # 推送代码与指针
git push origin --tags            # 推送标签(如需)

如需同步到 GitHub,可执行以下命令:

git remote add github <GitHub 地址>
git push github --mirror

7. 小结与建议

  • 端口内外分离:GitLab 监听 8099,本地流量;宝塔 Nginx 负责 443 终结,便于统一证书和防火墙管理。
  • 缓存随改随刷:域名或渲染逻辑变动时,及时更新 local_markdown_version
  • 大文件双保险:历史中用 BFG / filter-repo 清理,未来开发用 Git LFS 管理。
  • Nginx 0 限制:确保所有反代层统一放宽 client_max_body_size,避免 413 错误。

按照以上流程,你可以在 宝塔 + GitLab CE 环境中实现 HTTPS 支持、开放大文件上传,并保持仓库清爽。祝部署顺利,Happy Hacking!

8.问题处理

修改 gialab.rb 配置后 要如下操作 才生效 执行gitlab–ctl reconfigure后,并且修改了上面第一个问题中的文件,发现Nginx不管怎么重启都无法正常启动,再到终端执行 gitlab-ctl restart你可以发现依旧是问题1中出现的问题。执行reconfigure之后配置文件恢复了原样,所以再修改一次配置,重启 gitlab,问题解决。 https://blog.csdn.net/weixin_40524689/article/details/127803200

#!/bin/sh exec 2>&1

cd /var/opt/gitlab/nginx exec chpst -P /opt/gitlab/embedded/sbin/gitlab-web -p /var/opt/gitlab/nginx