這個東西安裝其實挺簡單的,但是因為我這邊遷移了數據目錄和使用自己安裝的 nginx 代理還是踩了幾個坑,所以大家可以注意下
先看下安裝
# 先安裝必要組件
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 目錄下
# 先停止服務
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
接著我們再去配置域名,我們打開下面的文件
sudo vi /etc/gitlab/gitlab.rb
找到 external_url 配置,就在三十行左右,換成自己的域名
改好了保存,然后執行下面的命令
sudo gitlab-ctl reconfigure
我這里因為自己也安裝了 nginx,然后 gitlab 本身自帶的也有 nginx ,一開始我害怕兩個會沖突所以改了很多地方的配置,導致訪問不了,或者能訪問但是頁面看不到樣式等問題,其實不用改其它配置,自帶的 nginx 是不會和你安裝的 nginx 沖突的,完全就是我想太多了
所以我們自己的nginx按下面的常規配置就可以了
# 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,代表原始請求是 HTTPSlocation / {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;
}
然后我們啟用配置
# 創建一個鏈接重啟的時候自動重啟
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/
# 檢查語法
sudo nginx -t
# 重啟
sudo systemctl reload nginx
然后我們重啟一下 gitlab 服務
# 重啟服務
sudo gitlab-ctl restart
#查看服務狀態
sudo gitlab-ctl status
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 也沒有啟動
一步步來解決問題
sudo cat /var/log/gitlab/postgresql/current
從日志可以看出 could not open file “/var/opt/gitlab/postgresql/data/PG_VERSION”: Permission denied 權限不足
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
檢查權限
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
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
修改權限
sudo chown -R gitlab-psql:gitlab-psql /var/opt/gitlab/postgresql/data
重啟這個服務
sudo gitlab-ctl restart postgresql
然后繼續執行,發現還有問題,主要是 redis 沒有運行,這會導致 GitLab 的緩存、隊列等功能異常,GitLab 很可能不能正常工作
sudo gitlab-ctl status
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 問題
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 權限不足
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 文件權限
ls -l /var/opt/gitlab/redis/dump.rdb
確保文件所屬用戶和組為 gitlab-redis
chown gitlab-redis:gitlab-redis /var/opt/gitlab/redis/dump.rdb
確保整個 Redis 目錄權限正確:
chown -R gitlab-redis:gitlab-redis /var/opt/gitlab/redis
chmod 700 /var/opt/gitlab/redis
重新啟動 Redis
sudo gitlab-ctl restart redis
Redis 啟動后我們再看下還有沒有問題,這里 alertmanager、gitlab-kas、prometheus 還是有問題,但是因為不是主要組件就先不管了
sudo gitlab-ctl status
所有問題都解決后就可以通過域名訪問了,默認用戶是 root ,第一訪問會看到 Set new password 提示你給 root 配置密碼,當然沒看到或者忘記密碼也沒關系,我們用下面的方式重置密碼
進入控制臺
sudo gitlab-rails console
在里面一步步輸入下面命令
user = User.find_by(username: 'root')
user.password = '你的新密碼'
user.password_confirmation = '你的新密碼'
user.save!
# 退出
exit
用剛才的密碼登錄,注意沒有中文選項,但是進去后可以設置中文的
我這里已經調整了中文,大家自己根據英文對照著看
修改這里就可以了