部署私有gitlab网站
以下是建立私有 GitLab 代码版本维护平台的完整步骤,涵盖环境准备、安装配置、初始化及日常管理,适用于企业/团队内部代码托管:
一、环境准备
1. 服务器要求(最低配置)
用途 | CPU | 内存 | 存储 | 系统要求 |
---|---|---|---|---|
小型团队(<50人) | 2核 | 4GB | 50GB+ | Ubuntu 20.04+/CentOS 7+ |
中型团队(50-200人) | 4核 | 8GB | 100GB+ | 同上 |
2. 域名与网络
- 准备域名(如
git.example.com
)并解析到服务器 IP - 开放端口:80(HTTP)/443(HTTPS)/22(SSH,可选)
二、安装 GitLab(以 Docker 部署为例,简单高效)
1. 安装 Docker 和 Docker Compose
# Ubuntu/Debian
sudo apt-get update && sudo apt-get install -y docker.io docker-compose# CentOS
sudo yum install -y docker-ce docker-compose
sudo systemctl enable --now docker
2. 创建配置目录
mkdir -p /opt/gitlab/config /opt/gitlab/logs /opt/gitlab/data
3. 编写 Docker Compose 文件(docker-compose.yml
)
version: '3'
services:gitlab:image: 'gitlab/gitlab-ee:latest' # 或社区版 gitlab/gitlab-cerestart: alwayshostname: 'git.example.com' # 替换为你的域名environment:GITLAB_OMNIBUS_CONFIG: |external_url 'https://git.example.com'gitlab_rails['time_zone'] = 'Asia/Shanghai'unicorn['port'] = 8080ports:- '443:443'- '80:80'- '2222:22' # SSH 端口映射(可选)volumes:- '/opt/gitlab/config:/etc/gitlab'- '/opt/gitlab/logs:/var/log/gitlab'- '/opt/gitlab/data:/var/opt/gitlab'
4. 启动服务
docker-compose up -d
首次启动需等待 5-10 分钟(初始化数据库和服务)。
三、初始化配置
1. 设置管理员密码
- 访问
https://git.example.com
,首次加载会进入密码设置页面 - 输入管理员账户(默认
root
)和密码,点击 Sign in
2. 配置域名与邮件(关键步骤)
-
修改域名:
进入 Admin Area → Settings → General → Visibility and permissions
设置 GitLab URL 为https://git.example.com
-
配置邮件服务器(用于通知):
Admin Area → Settings → Outbound emails
填写 SMTP 信息(如腾讯企业邮箱):From address: git@example.com SMTP server: smtp.exmail.qq.com Port: 465 (SSL) 或 587 (TLS) User name: 完整邮箱地址 Password: 授权码
3. 配置 SSH 密钥(可选,提升代码拉取速度)
- 生成服务器 SSH 密钥:
ssh-keygen -t rsa -b 4096 -C "git@example.com"
- 将公钥(
id_rsa.pub
)添加到 Admin Area → Settings → SSH Keys
四、创建项目与用户管理
1. 创建第一个项目
- 点击右上角 New project
- 选择 Blank project,填写项目名称(如
my-first-repo
),设置权限(公开/私有)
2. 添加团队成员
-
创建用户:
Admin Area → Users → New user
填写邮箱、用户名,分配角色(Guest
/Reporter
/Developer
/Maintainer
/Owner
) -
添加成员到项目:
进入项目 → Settings → Members → 输入用户邮箱,选择权限
五、代码版本维护核心功能
1. 版本控制基础
-
克隆仓库:
# HTTP 方式 git clone https://git.example.com/username/my-first-repo.git# SSH 方式(需配置客户端公钥) git clone git@git.example.com:username/my-first-repo.git
-
提交代码:
git add . git commit -m "feat: 添加登录功能" git push origin main
2. 分支管理
- 通过 Web IDE 或客户端创建分支(如
feature/login
) - 合并请求(Merge Request):
分支开发完成后,提交 MR → 指派 reviewer → 自动触发 CI/CD(需配置)
3. 权限控制
- 项目级别:设置成员角色(如
Developer
可推送代码,Reporter
仅查看) - 文件级别:通过
.gitignore
排除敏感文件,使用README.md
说明项目规范
六、数据备份与恢复(生产环境必备)
1. 配置自动备份
# 进入 Docker 容器
docker exec -it gitlab /bin/bash# 编辑备份配置(默认路径 /etc/gitlab/gitlab.rb)
vi /etc/gitlab/gitlab.rb
# 添加以下内容(每天 2 点备份,保留 7 天)
gitlab_rails['backup_keep_time'] = 604800
gitlab_rails['backup_time_of_day'] = '2'# 重新配置并启动备份
gitlab-ctl reconfigure
gitlab-backup create
2. 恢复备份
# 停止服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq# 恢复指定备份(替换时间戳)
gitlab-backup restore BACKUP=1690000000_2023_10_01_15.1.0# 启动服务
gitlab-ctl start
七、安全加固与性能优化
1. 安全设置
-
启用 HTTPS:
- 使用 Let’s Encrypt 免费证书(Docker 配置中已包含)
- 强制 HTTPS:Admin Area → Settings → General → Protocol 勾选 HTTPS
-
禁用注册:
防止外部用户注册:Admin Area → Settings → Sign-up settings → 关闭 Sign-up enabled
2. 性能优化
-
Nginx 代理(非 Docker 部署适用):
server {listen 80;server_name git.example.com;return 301 https://$server_name$request_uri; }server {listen 443 ssl;server_name git.example.com;ssl_certificate /path/to/cert.pem;ssl_certificate_key /path/to/key.pem;proxy_pass http://localhost:8080; # GitLab 内置 Unicorn 端口 }
-
数据库优化:
若使用外部 PostgreSQL/MariaDB,需调整连接池参数,参考 GitLab 数据库优化文档
八、日常维护命令
操作 | Docker 部署命令 | 二进制部署命令 |
---|---|---|
重启服务 | docker-compose restart | gitlab-ctl restart |
查看日志 | docker logs gitlab | tail -f /var/log/gitlab/*log |
升级版本 | docker-compose pull && docker-compose up -d | apt update && apt upgrade gitlab-ee |
九、推荐扩展功能
- CI/CD 流水线:在项目
.gitlab-ci.yml
中定义构建、测试、部署流程 - Issue 管理:使用内置看板跟踪任务,支持标签、里程碑、指派成员
- 代码审查:Merge Request 支持在线代码批注、冲突解决
- 容器镜像仓库:企业版支持私有 Docker Registry,存储镜像文件
总结
通过以上步骤,可快速搭建私有 GitLab 平台,实现代码版本控制、团队协作和流程管理。关键环节包括:
- 环境准备:根据团队规模选择服务器配置
- Docker 部署:简化安装和升级流程
- 初始化配置:设置域名、邮件、权限体系
- 数据安全:定期备份、启用 HTTPS、控制注册权限
实际使用中,建议结合企业需求开启 LDAP 登录、SAML 单点登录(SSO)等功能,进一步提升管理效率。对于高可用性场景,可部署 GitLab Cluster,搭配负载均衡和分布式存储。