Ubuntu部署私有Gitlab

这个东西安装其实挺简单的,但是因为我这边迁移了数据目录和使用自己安装的 nginx 代理还是踩了几个坑,所以大家可以注意下

先看下安装

bash 复制代码
# 先安装必要组件
sudo apt update
sudo apt install -y curl openssh-server ca-certificates tzdata perl

# 添加gitlab官方仓库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

# 3. 安装 GitLab,设置 external_url(这里临时设置,后面再改,当然你也可以直接设置成自己的域名)
sudo EXTERNAL_URL="http://localhost" apt install -y gitlab-ce

正常情况上面其实就安装好了,但是因为我的服务器系统盘内存不大,然后挂载了一个数据盘,所以这里将 GitLab 项目数据目录迁移到挂载的数据盘 /data 目录下

bash 复制代码
# 先停止服务
sudo gitlab-ctl stop

# 在data下面创建目录并将数据拷贝过去
sudo mkdir -p /data/gitlab
sudo rsync -a /var/opt/gitlab/ /data/gitlab/

# 创建软连接 
sudo mv /var/opt/gitlab /var/opt/gitlab.bak
sudo ln -s /data/gitlab /var/opt/gitlab

# 设置权限
sudo chown -R git:git /data/gitlab
sudo chmod -R 700 /data/gitlab

接着我们再去配置域名,我们打开下面的文件

bash 复制代码
sudo vi /etc/gitlab/gitlab.rb

找到 external_url 配置,就在三十行左右,换成自己的域名

改好了保存,然后执行下面的命令

bash 复制代码
sudo gitlab-ctl reconfigure

我这里因为自己也安装了 nginx,然后 gitlab 本身自带的也有 nginx ,一开始我害怕两个会冲突所以改了很多地方的配置,导致访问不了,或者能访问但是页面看不到样式等问题,其实不用改其它配置,自带的 nginx 是不会和你安装的 nginx 冲突的,完全就是我想太多了

所以我们自己的nginx按下面的常规配置就可以了

bash 复制代码
# HTTP 访问(80端口)配置
server {
    listen 80;
    server_name git.sakura.com;

    # 如果你希望 http 自动跳转到 https,可以开启这个:
    return 301 https://$host$request_uri;
}

# HTTPS 访问(443端口)配置
server {
    listen 443 ssl;
    server_name git.sakura.com;

    ssl_certificate /usr/local/nginx/conf/ssl/sakura.com.pem;
    ssl_certificate_key /usr/local/nginx/conf/ssl/sakura.com.key;

    # 这里 proxy_set_header X-Forwarded-Proto 建议用 https,代表原始请求是 HTTPS
    location / {
        proxy_pass https://git.sakura.com;
        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 https;
    }

    access_log /usr/local/nginx/logs/git.access.log;
    error_log  /usr/local/nginx/logs/git.error.log;
}

然后我们启用配置

bash 复制代码
# 创建一个链接重启的时候自动重启
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/
# 检查语法
sudo nginx -t
# 重启
sudo systemctl reload nginx

然后我们重启一下 gitlab 服务

bash 复制代码
# 重启服务
sudo gitlab-ctl restart
#查看服务状态
sudo gitlab-ctl status
bash 复制代码
root@ecm-74de:/etc/gitlab# sudo gitlab-ctl restart
ok: run: alertmanager: (pid 452866) 0s
ok: run: gitaly: (pid 452879) 1s
ok: run: gitlab-exporter: (pid 452910) 0s
timeout: down: gitlab-kas: 1s, normally up, want up
ok: run: gitlab-workhorse: (pid 454333) 0s
ok: run: logrotate: (pid 454356) 1s
ok: run: node-exporter: (pid 454390) 0s
ok: run: postgres-exporter: (pid 454416) 0s
timeout: down: postgresql: 1s, normally up, want up
timeout: down: prometheus: 0s, normally up, want up
ok: run: puma: (pid 457559) 0s
ok: run: redis: (pid 457903) 0s
ok: run: redis-exporter: (pid 457906) 1s
ok: run: sidekiq: (pid 457932) 0s
root@ecm-74de:/etc/gitlab# curl http://127.0.0.1:4141
curl: (7) Failed to connect to 127.0.0.1 port 4141 after 0 ms: Couldn't connect to server

我这里不知道是不是因为迁移数据目录导致的异常,一个是 gitlab 自带的 postgresql 启动异常了,

还有 prometheus 也没有启动

一步步来解决问题

bash 复制代码
sudo cat /var/log/gitlab/postgresql/current

从日志可以看出 could not open file "/var/opt/gitlab/postgresql/data/PG_VERSION": Permission denied 权限不足

bash 复制代码
2025-05-20_11:57:44.39033 FATAL:  could not open file "/var/opt/gitlab/postgresql/data/PG_VERSION": Permission denied
2025-05-20_11:57:45.39713 2025-05-20 11:57:45.397 GMT [459619] LOG:  skipping missing configuration file "/var/opt/gitlab/postgresql/data/postgresql.auto.conf"
2025-05-20_11:57:45.39730 FATAL:  could not open file "/var/opt/gitlab/postgresql/data/PG_VERSION": Permission denied
2025-05-20_11:57:46.40336 2025-05-20 11:57:46.403 GMT [459690] LOG:  skipping missing configuration file "/var/opt/gitlab/postgresql/data/postgresql.auto.conf"
2025-05-20_11:57:46.40353 FATAL:  could not open file "/var/opt/gitlab/postgresql/data/PG_VERSION": Permission denied
2025-05-20_11:57:47.40971 2025-05-20 11:57:47.409 GMT [459747] LOG:  skipping missing configuration file "/var/opt/gitlab/postgresql/data/postgresql.auto.conf"
2025-05-20_11:57:47.40984 FATAL:  could not open file "/var/opt/gitlab/postgresql/data/PG_VERSION": Permission denied
2025-05-20_11:57:48.41600 2025-05-20 11:57:48.415 GMT [459807] LOG:  skipping missing configuration file "/var/opt/gitlab/postgresql/data/postgresql.auto.conf"
2025-05-20_11:57:48.41603 FATAL:  could not open file "/var/opt/gitlab/postgresql/data/PG_VERSION": Permission denied
2025-05-20_11:57:49.42262 2025-05-20 11:57:49.421 GMT [459880] LOG:  skipping missing configuration file "/var/opt/gitlab/postgresql/data/postgresql.auto.conf"
2025-05-20_11:57:49.42265 FATAL:  could not open file "/var/opt/gitlab/postgresql/data/PG_VERSION": Permission denied
2025-05-20_11:57:50.42894 2025-05-20 11:57:50.428 GMT [459951] LOG:  skipping missing configuration file "/var/opt/gitlab/postgresql/data/postgresql.auto.conf"
2025-05-20_11:57:50.42896 FATAL:  could not open file "/var/opt/gitlab/postgresql/data/PG_VERSION": Permission denied
2025-05-20_11:57:51.43590 2025-05-20 11:57:51.435 GMT [460011] LOG:  skipping missing configuration file "/var/opt/gitlab/postgresql/data/postgresql.auto.conf"
2025-05-20_11:57:51.43593 FATAL:  could not open file "/var/opt/gitlab/postgresql/data/PG_VERSION": Permission denied
2025-05-20_11:57:52.44199 2025-05-20 11:57:52.441 GMT [460081] LOG:  skipping missing configuration file "/var/opt/gitlab/postgresql/data/postgresql.auto.conf"
2025-05-20_11:57:52.44202 FATAL:  could not open file "/var/opt/gitlab/postgresql/data/PG_VERSION": Permission denied

检查权限

bash 复制代码
ls -ld /var/opt/gitlab/postgresql
ls -ld /var/opt/gitlab/postgresql/data
ls -l /var/opt/gitlab/postgresql/data/PG_VERSION

/var/opt/gitlab/postgresql/data 目录权限是 drwx------,属主是 gitlab-psql:git

PG_VERSION 文件权限是 -rwx------,属主是 git:git

bash 复制代码
root@ecm-74de:/etc/gitlab# ls -ld /var/opt/gitlab/postgresql
drwxrwsr-x 3 gitlab-psql gitlab-psql 4096 May 20 11:55 /var/opt/gitlab/postgresql
root@ecm-74de:/etc/gitlab# ls -ld /var/opt/gitlab/postgresql/data
drwx------ 19 gitlab-psql git 4096 May 20 11:55 /var/opt/gitlab/postgresql/data
root@ecm-74de:/etc/gitlab# ls -l /var/opt/gitlab/postgresql/data/PG_VERSION
-rwx------ 1 git git 3 May 20 11:21 /var/opt/gitlab/postgresql/data/PG_VERSION

修改权限

bash 复制代码
sudo chown -R gitlab-psql:gitlab-psql /var/opt/gitlab/postgresql/data

重启这个服务

bash 复制代码
sudo gitlab-ctl restart postgresql

然后继续执行,发现还有问题,主要是 redis 没有运行,这会导致 GitLab 的缓存、队列等功能异常,GitLab 很可能不能正常工作

bash 复制代码
sudo gitlab-ctl status
bash 复制代码
root@ecm-74de:/etc/gitlab# sudo gitlab-ctl status
down: alertmanager: 1s, normally up, want up; run: log: (pid 395505) 2191s
run: gitaly: (pid 452879) 242s; run: log: (pid 392538) 2300s
run: gitlab-exporter: (pid 452910) 241s; run: log: (pid 394981) 2209s
down: gitlab-kas: 1s, normally up, want up; run: log: (pid 392908) 2288s
run: gitlab-workhorse: (pid 454333) 210s; run: log: (pid 394541) 2225s
run: logrotate: (pid 454356) 210s; run: log: (pid 392332) 2312s
run: node-exporter: (pid 454390) 209s; run: log: (pid 394827) 2215s
run: postgres-exporter: (pid 454416) 209s; run: log: (pid 395665) 2185s
run: postgresql: (pid 465371) 23s; run: log: (pid 392664) 2294s
down: prometheus: 1s, normally up, want up; run: log: (pid 395337) 2197s
run: puma: (pid 465390) 23s; run: log: (pid 394193) 2237s
down: redis: 1s, normally up, want up; run: log: (pid 392436) 2306s
run: redis-exporter: (pid 457906) 142s; run: log: (pid 395152) 2203s
run: sidekiq: (pid 465806) 16s; run: log: (pid 394350) 2231s

一样的检查 Redis 问题

bash 复制代码
sudo gitlab-ctl start redis
sudo gitlab-ctl status redis
sudo gitlab-ctl tail redis

可以发现一样的问题 Fatal error: can't open the RDB file dump.rdb for reading: Permission denied 权限不足

bash 复制代码
2025-05-20_12:02:15.00338 476331:M 20 May 2025 12:02:15.003 * Server initialized
2025-05-20_12:02:15.00339 476331:M 20 May 2025 12:02:15.003 # Fatal error: can't open the RDB file dump.rdb for reading: Permission denied
2025-05-20_12:02:15.00339 476331:M 20 May 2025 12:02:15.003 # Fatal error loading the DB, check server logs. Exiting.

查看 dump.rdb 文件权限

bash 复制代码
ls -l /var/opt/gitlab/redis/dump.rdb

确保文件所属用户和组为 gitlab-redis

bash 复制代码
chown gitlab-redis:gitlab-redis /var/opt/gitlab/redis/dump.rdb

确保整个 Redis 目录权限正确:

bash 复制代码
chown -R gitlab-redis:gitlab-redis /var/opt/gitlab/redis
chmod 700 /var/opt/gitlab/redis

重新启动 Redis

bash 复制代码
sudo gitlab-ctl restart redis

Redis 启动后我们再看下还有没有问题,这里 alertmanager、gitlab-kas、prometheus 还是有问题,但是因为不是主要组件就先不管了

bash 复制代码
sudo gitlab-ctl status

所有问题都解决后就可以通过域名访问了,默认用户是 root ,第一访问会看到 Set new password 提示你给 root 配置密码,当然没看到或者忘记密码也没关系,我们用下面的方式重置密码

进入控制台

bash 复制代码
sudo gitlab-rails console

在里面一步步输入下面命令

bash 复制代码
user = User.find_by(username: 'root')
user.password = '你的新密码'
user.password_confirmation = '你的新密码'
user.save!
# 退出
exit

用刚才的密码登录,注意没有中文选项,但是进去后可以设置中文的

我这里已经调整了中文,大家自己根据英文对照着看

修改这里就可以了

相关推荐
maosheng11464 小时前
RHCSA的第一次作业
linux·运维·服务器
wifi chicken5 小时前
Linux 端口扫描及拓展
linux·端口扫描·网络攻击
旺仔.2915 小时前
Linux 信号详解
linux·运维·网络
放飞梦想C5 小时前
CPU Cache
linux·cache
Hoshino.416 小时前
基于Linux中的数据库操作——下载与安装(1)
linux·运维·数据库
播播资源8 小时前
CentOS系统 + 宝塔面板 部署 OpenClaw源码开发版完整教程
linux·运维·centos
源远流长jerry8 小时前
在 Ubuntu 22.04 上配置 Soft-RoCE 并运行 RDMA 测试程序
linux·服务器·网络·tcp/ip·ubuntu·架构·ip
lay_liu8 小时前
Linux安装redis
linux·运维·redis
寂柒10 小时前
序列化与反序列化
linux·网络
lay_liu10 小时前
ubuntu 安装 Redis
linux·redis·ubuntu