如何在一台服务器上使用 GitLab 并将所有存储库存储在另一台服务器上?

How can I use GitLab on one server and store all of the repositories on another?

我的团队在 /net/CM/repo.git/net/CM/repo2.git 的 NAS 服务器上有几个 git 存储库。我最近加入了团队并向他们介绍了 GitLab,他们认为这将是一个很好的实施工具。

但是,他们要我在不同的服务器上安装 GitLab,我们将其称为超级服务器,另一台我们将称为 NAS 服务器。

我已经在超级服务器上安装了 GitLab,它 运行 很棒,但我很难让它检测我在 NAS 服务器上的 git 存储库。那可能吗?如果可能的话,我不希望团队的其他成员不得不在他们的 git 仓库中更改他们的远程源。我希望他们继续推送到标准回购,GitLab 应该检测到变化。

我尝试设置 git_data_dir 如前所述 in this Stack Overflow post:

git_data_dir "/net/CM/"

但是当我 运行 sudo gitlab-ctl reconfigure 时,我最终遇到了权限错误。它说它不能在 /net/CM/.

创建目录

我也试过创建一个/net/git-data/目录,我把权限设置为777只是为了看看它是否可以工作,但没有用。

所以总而言之,我怎样才能在我的超级服务器上安装 GitLab 的网络软件 运行,但在我的 NAS 服务器上安装我的所有存储库?

更新

有人问我如何挂载NAS服务器。我遵循了加入团队时提供给我的说明,但它们是:

# I pulled out the ip's and ports for security purposes.
sudo apt-get install nfs-common
sudo mkdir /net
sudo mount -t nfs -o proto=tcp,port=[port] [ip]:/net /net
sudo vim /etc/fstab
# Add the following lines to fstab:
[ip]:/net /net nfs auto 0 0
[ip]:/project_name /projectname nfs auto 0 0

我进入我们的 NAS 配置并将我的超级服务器 ip 地址添加到 "Root privilege-enabled hosts",一切都很好。我还没有测试过我是否可以在重新配置后取消选中该框,看看是否仍然有效。

NFS 本身并不知道如何比较来自不同主机的用户。因此,当您挂载 NFS 共享时,您会从服务器获取用户 ID,但本地 NFS 客户端不知道它们映射到哪个本地用户。毕竟,用户1000可能是服务器上的Anton和本地的Ben。

要解决此问题,您有多种选择。最简单的一种是确保相同的用户在两台计算机上可用,您可以配置 idmapd 让 NFS 知道。

相关:

自 2015 年以来的注意和更新:

GitLab 13.11(2021 年 4 月)确实提到:

NFS for Git repository storage deprecated

With the general availability of Gitaly Cluster (introduced in GitLab 13.0, May 2020), we are deprecating support for NFS for Git repositories in GitLab 14.0.

We want to help you avoid purchasing expensive NFS appliances you won’t need, so invite customers currently using NFS for Git repositories to begin planning their migration.

We are pleased to provide documentation on Migrating to Gitaly Cluster.

To see our overall status, please review our Gitaly Cluster roadmap.