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
当看到如下的图案,说明安装成功了:
需要注意的是,此时会提供登陆用的默认用户名和密码文件位置,密码文件会在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.
如果没有邮件,则输入手动为用户设置密码。
编辑刚才创建好的用户,在密码输入框中输入密码,并保存更改,这样用户就可以使用这个密码登录了。
常见问题
主要是我在安装过程中遇到的几个问题,记录下来以备后续参考。
不得不说,Gitlab 这个错误页做的还是很可爱的
422 requested was rejected
422: The change you requested was rejected Make sure you have access to the thing you tried to change.
这是 GitLab 的安全校验(CSRF / Host 校验)失败了,主要是因为GitLab 的 external_url 和实际访问地址不一致导致的。
参考之前的安装步骤修改 /etc/gitlab/gitlab.rb 文件中的 external_url 等信息即可。
502 Waiting for GitLab
HTTP 502: Waiting for GitLab to boot.
这是 GitLab 的内置 Nginx 还没有完全启动起来,或者 GitLab 的 Unicorn/Puma 应用服务器还没有完全启动起来导致的。
等待会儿即可。
404 Page not found
访问的地址不正确,检查下访问的路径是否正确。






