GitLab 主要提供两种安装方式:
.deb (Debian/Ubuntu) 或 .rpm (CentOS/RHEL) 包,你只需要执行几个命令即可完成安装,非常适合快速部署和生产环境。本教程将重点讲解最常用的 Omnibus 包安装 和最快捷的 Docker 安装。
这是最简单快捷的方式,只需几条命令即可运行一个功能完整的 GitLab。
步骤 1: 安装 Docker 和 Docker Compose

如果你的系统还没有安装 Docker,请先安装,以 Ubuntu 为例:
# 更新软件包索引 sudo apt-get update # 安装必要的包 sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common # 添加 Docker 官方 GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # 添加 Docker 仓库 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" # 再次更新索引并安装 Docker sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io # 安装 Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
步骤 2: 创建 docker-compose.yml 文件
创建一个目录来存放 GitLab 相关文件,并在其中创建 docker-compose.yml 文件。
mkdir gitlab && cd gitlab vim docker-compose.yml
粘贴到 docker-compose.yml 文件中:
version: '3.6'
services:
gitlab:
image: 'gitlab/gitlab-ce:latest' # 使用最新的社区版镜像
container_name: gitlab
restart: always
hostname: 'gitlab.example.com' # 替换成你的服务器域名或 IP
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com' # 替换成你的服务器域名或 IP
# 如果使用 HTTPS,请取消下面两行的注释并修改域名
# letsencrypt['enable'] = true
# letsencrypt['contact_emails'] = ['admin@example.com']
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- './config:/etc/gitlab'
- './logs:/var/log/gitlab'
- './data:/var/opt/gitlab'
重要配置说明:
hostname: GitLab 实例的完整域名,如果只是本地测试,可以写你的服务器 IP。external_url: GitLab 的对外访问地址,必须和 hostname 保持一致。ports: 将宿主机的端口映射到容器内部。80 (HTTP), 443 (HTTPS), 22 (SSH) 是必须的。volumes: 将容器的配置、日志和数据持久化到宿主机上,这样即使容器重启,数据也不会丢失。步骤 3: 启动 GitLab
在 docker-compose.yml 文件所在的目录下,执行以下命令:
sudo docker-compose up -d
GitLab 会开始下载镜像并启动,这个过程可能需要一些时间,因为镜像很大(几个 GB),你可以使用 sudo docker-compose logs -f 命令来查看启动日志。
步骤 4: 访问 GitLab
启动完成后,打开浏览器,访问你在 external_url 中配置的地址(http://你的服务器IP)。
首次访问时,GitLab 会自动进行初始化,等待几分钟,直到看到登录页面。
rootsudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
输出的密码就是初始密码。请在首次登录后立即修改密码!
如果你想在服务器上直接安装 GitLab(而不是使用 Docker),可以按照以下步骤操作。
以 Ubuntu 20.04 为例:
步骤 1: 安装必要的依赖
sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificates tzdata
步骤 2: 安装 Postfix (用于发送邮件通知)
GitLab 需要一个邮件服务器来发送通知邮件,Postfix 是一个常见的选择。
sudo apt-get install -y postfix
在安装过程中,会弹出配置界面,选择 "Internet Site",然后按回车,在 "System mail name" 处输入你的域名,gitlab.example.com,然后继续。
步骤 3: 添加 GitLab 官方仓库
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
步骤 4: 安装 GitLab CE
在安装命令中,将 https://gitlab.example.com 替换成你自己的服务器域名或 IP。
sudo EXTERNAL_URL="http://你的服务器IP或域名" apt-get install gitlab-ce
步骤 5: 重新配置 GitLab
安装完成后,运行以下命令让 GitLab 应用所有配置:
sudo gitlab-ctl reconfigure
步骤 6: 启动 GitLab 服务
sudo gitlab-ctl start
步骤 7: 访问 GitLab
与 Docker 方式相同,在浏览器中访问你配置的 EXTERNAL_URL,初始用户名和密码的获取方式也与 Docker 方式一致。
root 和获取到的初始密码登录。~/.ssh/id_rsa.pub 文件中)粘贴到这里,这样以后就可以免密操作 GitLab 了。my-first-project。使用 SSH 方式与 GitLab 交互,可以避免每次操作都输入用户名和密码。
检查是否已有密钥:
cd ~/.ssh ls
如果看到 id_rsa 和 id_rsa.pub 文件,说明你已经有了密钥,可以跳到下一步。
生成新的 SSH 密钥:
如果没有密钥,或者你想创建一个新的,执行以下命令,将 your_email@example.com 替换成你的邮箱。
ssh-keygen -t ed25519 -C "your_email@example.com"
一路按回车即可,这会在 ~/.ssh/ 目录下生成 id_ed25519 (私钥) 和 id_ed25519.pub (公钥) 文件。
复制公钥内容:
cat ~/.ssh/id_ed25519.pub
将输出的全部内容(以 ssh-ed25519 开头)复制到剪贴板。
将公钥添加到 GitLab:
git@你的服务器IP或域名:root/my-first-project.git。git clone git@你的服务器IP或域名:root/my-first-project.git
如果一切正常,GitLab 会使用你之前添加的 SSH 密钥进行验证,无需输入密码,项目就会被下载到本地。
这是一个典型的 Git 工作流程。
创建并切换到新分支: 在项目根目录下,创建一个新分支进行开发,这是一个好习惯。
cd my-first-project git checkout -b feature-branch
修改文件: 用编辑器打开项目中的任意文件,做一些修改,然后保存。
提交到本地仓库:
# 查看修改状态 git status # 将修改的文件添加到暂存区 git add . # . 表示所有修改 # 提交到本地仓库,并添加提交信息 git commit -m "feat: 添加了第一个功能"
推送到远程 GitLab 仓库:
git push origin feature-branch
这条命令会将你的 feature-branch 分支推送到 GitLab 服务器上。
当你完成了开发,希望将你的代码合并到主分支(如 main 或 master)时,就需要创建一个 Merge Request (MR)。
feature-branch)。main)。如果你忘记了 root 用户的密码,可以通过以下方式重置(以 Omnibus 安装为例):
# 进入 GitLab 的 Rails 控制台 sudo gitlab-rails console -e production # 在控制台执行以下 Ruby 代码 user = User.where(id: 1).first user.password = '你的新密码' user.password_confirmation = '你的新密码' user.save! # 退出控制台 exit
备份: GitLab 提供了方便的备份工具。
# 创建备份,备份文件会存放在 /var/opt/gitlab/backups/ 目录下 sudo gitlab-backup create
恢复: 恢复过程比较严格,请务必停止写入数据。
# 1. 停止所有 GitLab 服务 sudo gitlab-ctl stop puma sudo gitlab-ctl stop sidekiq # 2. 恢复备份 (假设备份文件是 170241XXXX_gitlab_backup.tar) sudo gitlab-backup restore BACKUP=170241XXXX # 3. 重新配置 GitLab sudo gitlab-ctl reconfigure # 4. 重启所有服务 sudo gitlab-ctl start
GitLab 需要配置邮件服务器才能发送注册、密码重置、合并请求等通知。
以使用外部 SMTP 服务器(如 QQ 邮箱、163 邮箱)为例,编辑配置文件:
sudo vim /etc/gitlab/gitlab.rb
找到或添加以下配置,并修改你的信息:
gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "your_email@qq.com" gitlab_rails['smtp_password'] = "your_authorization_code" # 注意:不是邮箱密码,是授权码 gitlab_rails['smtp_domain'] = "qq.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = 'your_email@qq.com' gitlab_rails['gitlab_email_display_name'] = 'GitLab'
配置完成后,保存文件并重新配置 GitLab 使其生效:
sudo gitlab-ctl reconfigure
问题: 访问 GitLab 页面很慢或出现 502 错误。 原因: 通常是服务器资源不足(内存/CPU)。 解决: 检查系统资源使用情况,增加服务器配置。
问题: Docker 启动后,页面无法访问。 原因: 防火墙或安全组规则阻止了 80, 443, 22 端口。 解决: 确保服务器的防火墙和安全组已经开放了这些端口。
问题: GitLab 占用磁盘空间过大。 原因: 仓库、LFS 对象、包、CI/CD 缓存、日志等都会占用空间。 解决: 定期清理日志和 CI/CD 缓存,或增加磁盘空间。
问题: SSH 连接失败。
原因: 最常见的原因是 GitLab 服务器上的 SSH 服务未启动,或者防火墙阻止了 22 端口。
解决: 确保服务器 SSH 服务正在运行 (sudo systemctl status ssh),并且端口 22 已开放。
恭喜你!现在你已经掌握了 GitLab 从安装到基本使用的完整流程。
GitLab 是一个非常强大的 DevOps 平台,除了代码托管,它还集成了 CI/CD (持续集成/持续部署)、Wiki、Issue Tracking、Container Registry 等众多功能,随着你对它的深入使用,你会发现更多能提升团队效率的强大特性。