如何创建你自己的 Git 服务器

简介: 尽管我是一个快乐的(同时也是付费的)GitHub用户,但是我多次想要在我自己的服务器上搭建私人仓库(github会提供给付费用户私人仓库—-译注)。如果你连不上公共网络,或者你受够了呆板的管理,亦或是你只是单纯的想要不同与Github(以及其他类似的网站)所提供的服务,那么搭建你自己的Git服务器将会很有帮助。在Unix(Linux、Mac OSX、 *BSD、 Solaris、AIX)的机器上部署Git服务器并非难事,但是仍然有许多细节需要注意。这里是一个完整的教程。

尽管我是一个快乐的(同时也是付费的)GitHub用户,但是我多次想要在我自己的服务器上搭建私人仓库(github会提供给付费用户私人仓库—-译注)。如果你连不上公共网络,或者你受够了呆板的管理,亦或是你只是单纯的想要不同与Github(以及其他类似的网站)所提供的服务,那么搭建你自己的Git服务器将会很有帮助。在Unix(Linux、Mac OSX、 *BSD、 Solaris、AIX)的机器上部署Git服务器并非难事,但是仍然有许多细节需要注意。这里是一个完整的教程。


通过以下的步骤,你将在服务器上搭建并使用你自己的Git服务,例如myhost.example.com。其中的一些步骤,像email通知,限制用户的权限,特定分组的接入管理,都是依据你的要求和现实状况的可选项。还有很多命令,你需要root权限才能执行,所以别忘了用sudo,或者(最好不要)直接切换到root来执行。


  • 为有读写权限的用户建立一个分组。根据你的操作系统,你可以用groupadd命令来实现,用vigr来编辑分组文件,或者直接编辑/etc/group文件。在最后,你会在/etc/group文件中看到如下一行

repogroup:*:10005:marry,john,violet

其中,repogroup是准许接入这个仓库的组的名字。10005是一个独一无二的分组识别数字,marry,john,violet则是获准接入这个仓库的用户。

  • 决定Git仓库的路径。它既可以放在你的home路径下(e.g. /home/yourname/gitroot),也可以放在一个专用的路径下(e.g. /var/gitroot).
  • 配置权限,让Git用户可以访问这个目录

chmod g+rx /path-to/gitroot

chown :grouprepo /path-to/gitroot

  • 建立新的Git仓库,叫做newrepo

cd/path-to/gitroot

git init --bare newrepo.git

  • 建立路径认证,以允许用户组访问,同时有针对性的设置Git

cd newrepo.git

chown -R :grouprepo .

git config core.sharedRepository group

find . -type d -print0 | xargs -0 chmod 2770

find . -type f -print0 | xargs -0 chmod g=u

  • 设置提交(commit)的email通知(commit是一条命令),这样当有新的修改提交到仓库的时候,开发者们将会收到一封关于修改内容一览的电子邮件。

echo 'One-line project description' >description

git config --local hooks.mailinglist email-a@example.com,email-b@example.com,...

git config --local hooks.emailprefix'[DI-PR] '

git config --local hooks.showrev"git show -C %s; echo"

git config --local hooks.emailmaxlines100

  • 00000通过设置一个称为钩子(hook)的东东,来创建这些email通知。

cd hooks

cp post-receive.samplepost-receive

chmod +x post-receive

  • 从post-receive的脚本中移除掉最后一行注释的#字号,最后语句应该是这样的

. /path-to-hooks/post-receive-email

  • 在你的库中先放入一个文件(比如README)。为了避免其他用户在第一次提交时遇到奇怪的错误信息时感到困惑,这是有必要的。

cd to-your-personal-working-directory

git clonemyhost.example.com:/path-to/gitroot/newrepo.git

echo "Short project description" >README.txt

git add README.txt

git commit -a -m "Add README file"

git push origin master# 第一次仅仅需要T"origin master" 这个参数

  • 为仓库的其他用户建立账户。依据你系统的不同,你可以通过useradd 或者adduser来实现。
  • 设置用户可以通过公/私钥配对来访问。这包括以下几步:

1)已经有公钥的用户,只需要把公钥发给你就好。

2)没有公钥的用户,必须用ssh-keygen命令来生成一个,然后把.ssh/id_rsa.pub发给你就可以了。

3)之后你必须在他们对应的账户下面建立这种公/私钥配对。复制他的公钥,然后顺序执行下面的命令。

sudo su - username

mkdir -p .ssh

cat >>.ssh/authorized_keys <<\EOF

paste-key-as-one-line

EOF

exit

  • 改变用户的账户让他们使用受限的shell。如果你想让你添加进来的用户仅仅使用Git,而不是Unix的所有东西,那么就设置他们的账户,让他们只能使用Git。Git提供了这种专为这种需求设计的受限shell。它通常被安装在 /usr/libexec/git-core/git-shell or /usr/local/libexec/git-core/git-shell。因此,对所有你想限制权限的用户,你可以执行以下命令。

sudo chsh -s /usr/libexec/git-core/git-shell username

告诉你的用户,用下面的语句来克隆仓库到本地。

git clonemyhost.example.com:/path-to/gitroot/newrepo.git

到了这里,恭喜你,你成功了!

相关文章
|
2月前
|
前端开发 开发工具 git
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
35 5
|
3月前
|
Linux 开发工具 数据安全/隐私保护
搭建 Git 私人服务器完整指南
本文详细介绍了如何从零开始搭建一个私人的 `Git` 服务器。首先,文章解释了 `Git` 的概念及其优势,并阐述了搭建私人 `Git` 服务器的重要性,包括数据隐私、定制化需求及成本效益。接着,文章分步骤指导读者完成服务器的准备工作,包括操作系统、硬件和网络要求。随后,详细介绍了在不同操作系统上安装 `Git` 的方法,并演示了如何创建 `git` 用户、部署仓库以及设置免密登录。此外,还提供了客户端连接远程仓库的具体步骤,包括 Linux 和 Windows 的操作方式。最后,文章探讨了迁移仓库的方法以及搭建 `Git` 服务器的一些进阶选项。
549 0
搭建 Git 私人服务器完整指南
|
4月前
|
开发工具 git iOS开发
服务器配置Huggingface并git clone模型和文件
该博客提供了在服务器上配置Huggingface、安装必要的工具(如git-lfs和huggingface_hub库)、登录Huggingface以及使用git clone命令克隆模型和文件的详细步骤。
341 1
|
6月前
|
Shell 网络安全 开发工具
git实现服务器自动push拉取代码--webhooks
git实现服务器自动push拉取代码--webhooks
539 1
|
7月前
|
开发工具 git
git怎么设置http代理服务器
git怎么设置http代理服务器
128 12
|
7月前
|
JavaScript 持续交付 Go
如何实现Git Push之后自动部署到服务器?
如何实现Git Push之后自动部署到服务器?
207 0
|
7月前
|
缓存 网络安全 开发工具
Git服务器报错:host key for (ip地址) has changed and you have requested strict checking
Git服务器报错:host key for (ip地址) has changed and you have requested strict checking
535 0
|
11天前
|
人工智能 弹性计算 编解码
阿里云GPU云服务器性能、应用场景及收费标准和活动价格参考
GPU云服务器作为阿里云提供的一种高性能计算服务,通过结合GPU与CPU的计算能力,为用户在人工智能、高性能计算等领域提供了强大的支持。其具备覆盖范围广、超强计算能力、网络性能出色等优势,且计费方式灵活多样,能够满足不同用户的需求。目前用户购买阿里云gpu云服务器gn5 规格族(P100-16G)、gn6i 规格族(T4-16G)、gn6v 规格族(V100-16G)有优惠,本文为大家详细介绍阿里云gpu云服务器的相关性能及收费标准与最新活动价格情况,以供参考和选择。
|
16天前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。
|
18天前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。