搭建gitlab
1. 环境准备
目标与说明
- 服务器:一台公网 Linux(CentOS / Ubuntu 均可),已安装宝塔面板。
- 域名:已解析到服务器。
- 开放端口:80/443(面向外网)+ 8099(GitLab 后端 HTTP)。
为什么选择 8099?
我们让 GitLab 只监听本机 127.0.0.1:8099,再由宝塔 Nginx 做反向代理并负责 SSL。这样既省掉 GitLab 自带的 Nginx,也方便与其他站点共存。
2. 安装 GitLab(宝塔一键脚本)
- 在宝塔应用商店搜索 GitLab CE 并安装。
- 安装完毕后,在宝塔「网站」中新建空站点,域名填写
gitlab.example.com,并开启 Let’s Encrypt SSL。 - 将站点反代目标设置为
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 或发现渲染异常,可以通过以下步骤强制刷新缓存:
- 获取当前
local_markdown_version值:
TOKEN=<Admin 私人令牌>
curl -s --header "PRIVATE-TOKEN:$TOKEN" \
https://gitlab.example.com/api/v4/application/settings \
| jq .local_markdown_version
- 将
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.conf 或 location 块中加入以下配置:
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