游客
2026最新!5步轻松在VPS搭建Git仓库

2026最新!5步轻松在VPS搭建Git仓库

一言准备中...

从零开始用VPS搭建自己的Git仓库:一份踩坑后的实操笔记

GitHub私有仓库要收费,Gitee对仓库大小和成员数有限制,加上公司内网需要隔离……折腾一圈下来,我还是决定在自己VPS上搭一个Git仓库。用了一年后,稳定性、速度都远超预期,最关键的是完全自主可控。如果你也有类似需求,这篇教程就是为你写的,全程无废话,全是实操过的经验。

为什么选VPS而不是NAS或PC?
因为VPS有公网IP,随时能访问,不需要做内网穿透。我目前用的沐雨云服务器,2核2G配置,跑Git仓库绰绰有余,CPU常年占用不到5%,高峰也就10%出头。他们家的线路很稳,从家里远程push代码几乎没延误过。如果你只是个人或小团队用,1核1G内存的入门款完全够,系统选Debian 12或Ubuntu 22.04 LTS都行。

沐雨云服务器官网:https://www.muyuyun.cn


一、基础环境准备

登录VPS后,先更新系统并安装Git:

apt update && apt upgrade -y
apt install git -y

创建专门的Git用户(不要用root直接操作,避免权限风险):

adduser git

把客户端的SSH公钥加入git用户,这样才能免密push。将你本机的~/.ssh/id_rsa.pub内容追加到服务器/home/git/.ssh/authorized_keys,记得修改权限:

chown -R git:git /home/git/.ssh
chmod 700 /home/git/.ssh
chmod 600 /home/git/.ssh/authorized_keys

二、搭建裸仓库(核心步骤)

在你想要的目录下初始化一个裸仓库(裸仓库只存放文件版本,不包含工作区,所以叫bare):

sudo -u git mkdir /home/git/repos
sudo -u git git init --bare /home/git/repos/myproject.git

此时本地电脑就可以通过git clone git@你的VPS_IP:/home/git/repos/myproject.git拉取代码了。但如果你直接push,会看到warning: 您并未提供一个提交信息之类的提示——那是因为裸仓库没有工作区,需要配置post-receive钩子来部署代码。


三、配置自动部署(实用的逼格操作)

很多教程到上面就完了,但实际用起来,我们往往希望push代码后,服务器上的网站/服务能自动更新。这就要用到post-receive钩子。

在服务器上建立一个供部署用的工作目录(例如/var/www/myproject),然后创建钩子文件:

sudo -u git mkdir -p /var/www/myproject
sudo -u git vim /home/git/repos/myproject.git/hooks/post-receive

写入以下内容:

#!/bin/bash
GIT_WORK_TREE=/var/www/myproject git checkout -f

保存并赋予执行权限:

sudo -u git chmod +x /home/git/repos/myproject.git/hooks/post-receive

注意:/var/www/myproject的所有权必须属于git用户,否则会报权限错误。另外,服务器上的web服务(如nginx)如果要读取这些文件,记得给好属主和组。


四、常见踩坑提醒(这些坑我真的全部踩过)

  1. SSH连不上
    大概率是authorized_keys权限不对。~/.ssh目录权限必须是700,authorized_keys必须是600,否则SSH服务会直接拒绝你。另外,git用户的shell如果是/usr/sbin/nologin,会导致clone失败,建议改成/bin/bash。

  2. push后工作区没有文件
    这是把裸仓库当普通仓库用导致的。裸仓库没有工作区,必须通过hooks来checkout。如果你只是想存代码,那无所谓;但如果你想部署网站,没有post-receive钩子,pull再快也是白搭。

  3. 目录权限混乱
    我曾经把工作目录放在/var/www下,但web服务用户是www-data,导致网站读取不了文件。正确做法是把工作目录属组设为www-data,或者用ACL控制:

    sudo chown -R git:www-data /var/www/myproject
    sudo chmod -R 2775 /var/www/myproject
  4. 裸仓库目录不要加执行权限
    Git的钩子文件需要有执行权限,但仓库本身的目录不要给777,否则过安全扫描时会有风险。给775,属主git即可。


五、进阶建议

如果你嫌裸仓库+hooks太原始,想用Web界面管理项目、看提交记录、管理多个成员,可以装一个Gitea(轻量级)或GitLab(重量级)。个人推荐Gitea,二进制的,安装只要一条命令:

wget -O gitea https://dl.gitea.com/gitea/1.21.0/gitea-1.21.0-linux-amd64
chmod +x gitea
./gitea web

但说实话,如果只是自己备份代码,裸仓库+git push已经足够干净。

最后提醒一点:定期备份裸仓库目录。我直接写了个cron脚本,每三天把/home/git/repos打包存到OSS,省心又安全。

以上就是我搭建VPS Git仓库的全部实操记录。从选服务器(沐雨云)到配置钩子,每一步都亲自验证过,希望能帮你少走弯路。如果有问题,欢迎在评论区留言交流。

  • 本文作者:站长
  • 本文链接: https://www.zhujishice.cn/vpszs/564.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
0
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
454
0
0
0
内卷太严重,已躺平...

2026美国服务器IP纯净度怎么查?3个关键指标

上一篇

2026必看!独立服务器电源冗余的3个真相

下一篇
评论区
内容为空

这一切,似未曾拥有

  • 复制图片
按住ctrl可打开默认菜单