安装部署 Gitlab 代码托管平台详细步骤讲解

2026年4月22日学习笔记评论1,665字数 2643阅读8分48秒阅读模式

GitLab是一个基于Git的代码托管和协作平台,提供了从代码管理到持续集成/持续部署(CI/CD)的全方位 DevOps功能。

GitLab版本包括企业版(EE)、社区版(CE),自己部署的话通常安装社区版即可。

很多教程会推荐 Docker 安装,但我个人觉得直接安装更简单,尤其是对于不熟悉 Docker 的用户来说,所以本教程以直接安装为主,服务器环境为 Ubuntu 22.04。

部署流程

使用命令如下,按照注释一步步执行即可:

# 1. 安装必要的依赖
sudo apt update
sudo apt install -y curl openssh-server ca-certificates tzdata perl
# 2. 添加 GitLab 包仓库
#    由于网络原因,可能会出现无法添加GitLab软件源镜像的问题,建议多试试
sudo curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
# 3.刷新软件包列表。
sudo apt update
# 4. 安装 GitLab CE
#    这里的 EXTERNAL_URL 是 GitLab 的访问地址,替换成你自己的域名或 IP 地址
sudo EXTERNAL_URL="http://gt.shejibiji.com" apt install -y gitlab-ce

当看到如下的图案,说明安装成功了:

image-20260421184011214

需要注意的是,此时会提供登陆用的默认用户名和密码文件位置,密码文件会在24小时后过期,所以建议安装完成后尽快登录并修改密码。

安装完成后,就可以用你之前配置的 EXTERNAL_URL 访问 GitLab 了。

更多操作

配置 Nginx 访问

默认情况下,GitLab 会自己安装一个 Nginx 服务器来处理 HTTP 请求,并在 80 端口上监听。

但是如果我们已经有一个 Nginx 服务器在运行,或者想要使用 Nginx 来反向代理 GitLab,可以按照以下步骤进行配置:

# 修改 GitLab 的配置文件,让 GitLab 用独立端口(比如 8081)来监听 HTTP 请求
sudo vim /etc/gitlab/gitlab.rb
#     找到 external_url 的配置行,确认修改为你将要使用的 URL(比如 http://gt.shejibiji.com)
external_url 'http://gt.shejibiji.com'
#     并取消注释或者添加以下行
#         取消证书自动配置,因为我们会使用 Nginx 来处理 HTTPS
letsencrypt['enable'] = false
#     让 GitLab 的内置 Nginx 监听在 8081 端口
nginx['listen_port'] = 8081
#    让 GitLab 的内置 Nginx 只监听本地地址,防止外部直接访问
nginx['listen_addresses'] = ['127.0.0.1']
# 保存并退出编辑器后,重新配置 GitLab 以应用更改
sudo gitlab-ctl reconfigure
# 重启 GitLab 服务以确保所有更改生效
sudo gitlab-ctl restart

接下来,在你的 Nginx 配置文件中添加一个新的 server 块,来反向代理 GitLab 的请求:

server {
    listen 80;
    server_name gt.shejibiji.com;

    location / {
        proxy_pass http://127.0.0.1:8081;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

如果,需要配置 HTTPS 访问,还需要在 Nginx 中配置 SSL 证书,以下是一个示例配置:

server {
    listen 80;
    server_name gt.shejibiji.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name gt.shejibiji.com;

    ssl_certificate /你的证书路径/fullchain.pem;
    ssl_certificate_key /你的证书路径/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8081;

        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

添加新用户

1.
点击右上角的 Admin,进入管理员界面。

2.
在左侧菜单中选择 Users,然后点击 New user 按钮。

3.
在新用户表单中,填写用户的姓名、用户名、邮箱地址和密码等信息。你还可以选择是否发送欢迎邮件给新用户。

4.
如果没有邮件,则输入手动为用户设置密码。
编辑刚才创建好的用户,在密码输入框中输入密码,并保存更改,这样用户就可以使用这个密码登录了。

image-20260422103534954

常见问题

主要是我在安装过程中遇到的几个问题,记录下来以备后续参考。

不得不说,Gitlab 这个错误页做的还是很可爱的

422 requested was rejected

422: The change you requested was rejected Make sure you have access to the thing you tried to change.

image-20260421185913392

这是 GitLab 的安全校验(CSRF / Host 校验)失败了,主要是因为GitLab 的 external_url 和实际访问地址不一致导致的。

参考之前的安装步骤修改 /etc/gitlab/gitlab.rb 文件中的 external_url 等信息即可。

image-20260421190211315

502 Waiting for GitLab

HTTP 502: Waiting for GitLab to boot.

image-20260421192213678

这是 GitLab 的内置 Nginx 还没有完全启动起来,或者 GitLab 的 Unicorn/Puma 应用服务器还没有完全启动起来导致的。

等待会儿即可。

404 Page not found

image-20260421192306093

访问的地址不正确,检查下访问的路径是否正确。

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定