如何创建自己的私有git服务器

如何创建自己的私有git服务器,第1张

通过以下的步骤,你将在服务器上搭建并使用你自己的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.emailmaxlines

100

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

cd

hooks

cp

post-receive.sample

post-receive

chmod

+x

post-receive

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

.

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

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

cd

to-your-personal-working-directory

git

clone

myhost.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

clone

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

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

首先要 ssh远程登陆工具比secureCRT等

案 基于SSH直接搭建

Git支持协议主要四种:

本: 需要文件共享系统权限控制

HTTP:速度慢

SSH:同支持读写操作支持匿名读取(Git默认协议)

GIT:快

搭建难易程度特点综合筛选合适ssh并且部服务器基本都ssh服务所省少麻烦基本思路给每ssh帐号家通用户名口令访问显选择做些余并且于repo权限难管理

使用Github候利用rsa.pub公钥/私钥式服务端拥用户公钥(*.pub)跨繁琐口令直接认证提交服务端根据同用户身份其权限着更加灵管理我采用种式

服务端

使远程库访问更加直观先服务器创建名git账户clone候面格式:

git clone git@server:some.git

创建新用户创建repo等目录

$sudo adduser git

$su git

$cd ~

$mkdir repos

HOME.ssh目录没则创建创建authorized_keys文件文件用管理所git用户公钥面用户于项目着R+W权限

客户端

于每客户端我需要密钥公钥Github用户.ssh目录定id_rsa.pubid_rsa两文件其第系统公钥另自要保存密钥没终端执行:ssh-keygen完自公钥提交给管理员注册行

步管理员团队员公钥添加authorized_keys比同susie加入:

$ cat susie.pub >>authorized_keys

至家通git@server:repos/some.git访问公共版本库

问题

安全问题员登录git用户shell,细节权限支等控制

管理麻烦新建repo,或者增加员比较麻烦尤其修改候

案二 使用Gitolite服务

Gitolite 基于SSH协议构建便管理git repo应用通其源码安装.

安装

安装按照官给定文档轻易实现:

$ git clone git://github.com/sitaramc/gitolite

$ mkdir -p $HOME/bin

$ gitolite/install -to $HOME/bin

$ gitolite setup -pk YourName.pub

执行条命令候gitolite识别则通面两种式解决:

gitolite添加PATH面

通$HOME/bin/gitolite setup -pk YourName.pub 执行

至gitolite服务端搭建完毕发现HOME目录增加文件projects.list目录repositories,者我版本仓库每新建repo候其创建

使用

候说gitolite管理模式创建gitolite-adminrepo管理员通像repo提交配置文件实现git服务器控制

首先repo导入我workspace:前需要配置本ssh,gitolite要求管理员本密钥其注册公钥名字致比我安装候指定 -pk面 admin.pub 则管理员本需要由admin应私钥我通~/.ssh/config进行配置(注:些系统用confMac OSX 效能用config).

host gitolite

user git

hostname yourhostname.com

port 22

identityfile ~/.ssh/admin

我访问gitolite候自根据配置文件执行配置完根据面命令gitolite-admin转移本

git clone gitolite:gitolite-admin.git

克隆完发现gitolite-admin面两目录其conf保存配置文件我通编辑面gitolite.conf文件管理git服务器keydir目录保存用户公钥pub文件

我讲修改repo 提交候gitolite自应用些配置管理程便

配置规则

打gitolite.conf文件看其示例:

To add new users alice, bob, and carol, obtain their public keys and add them to 'keydir' as alice.pub, bob.pub, and carol.pub respectively.

To add a new repo 'foo' and give different levels of access to these users, edit the file 'conf/gitolite.conf' and add lines like this:

repo foo

RW+ = alice

RW = bob

R = carol

面配置文件新建repo foo并且添加三位项目员每权限同提交push管理便效

视化

我能需要web界面管理些项目我目前知道三种式:

git源码自带组件cgi脚本实现使用gitolite服务

gitlab源框架基于ROR新版本再使用gitolite服务

FB源PHP框架 phabricator功能高端档

Github - 一个网站,提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等。

GitLab 是一个用于仓库管理系统的开源项目。

二者都是git的衍生产品


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/405943.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存