服务器使用git协议
2012-10-24 10:23
232 查看
1. 前言
最近在服务器上搭建支持git协议的版本库,遇到了些麻烦(主要是因为对linux系统不太熟悉导致),在此小做笔记,以供自己和他人参阅。我的环境如下表所示,我通过另一台机器克隆版本库来验证:git clone git://192.168.1.101/path/to/repos/mygit.git mygit
linux服务器系统 | Ip地址 | 版本库路径 |
debian | 192.168.1.101 | /path/to/repos/mygit.git |
2. Git协议概要
Git协议是提供git版本库只读服务的常用协议(匿名读取),该协议的缺点就是不能提供身份认证,也真是因为写操作没有授权控制,因此一般不用来提供写操作。对于提供公共的,非授权的只读访问,Git协议在性能和速度上远比HTTP协议高效,所以对于提供只读的版本库,我们常用git协议,而不用http协议。
3. Git协议部署
3.1. 部署原理
从原理上来讲,Git协议的配置很简单。基本上,只要以守护进程的形式运行git-daemon服务软件即可,即以守护进程的形式运行以下参数(参数何意,后面会讲):
git daemon --inetd --verbose --export-all /path/to/repos |
3.2. 部署inetd
inetd到底是什么东东,自己先问下“度娘”或者“谷歌”,要先有个简单的了解。也可以参考man inetd帮助文档(特别是学习完后再回过头来看更有效果)。3.2.1. 安装
sudo aptitude install netkit-inetd |
sudo aptitude install openbsd-inetd |
安装成功后,先用以下命令看看inetd运行了没有:
ps ax |grep inetd |
# /etc/init.d/openbsd-inetd --help Usage: /etc/init.d/openbsd-inetd {start|stop|reload|force-reload|restart|status} |
/etc/init.d/openbsd-inetd start | 启动inetd |
/etc/init.d/openbsd-inetd stop | 停止inetd |
/etc/init.d/openbsd-inetd restart | 重启inetd |
/etc/init.d/openbsd-inetd reload | 修改了配置文件inetd.conf,可以通过该命令使配置立刻生效 |
3.2.2. 修改配置文件
注意:可以通过man inetd.conf来查看详细的参数说明。在配置文件/etc/inetd.conf中添加如下设置:
git stream tcp nowait nobody /usr/lib/git-core/git git daemon --inetd --verbose --export-all /path/to/repos |
◇在配置文件中,以上只是一行
◇/usr/lib/git-core/git是我git程序所在位置,git daemon后面是运行git的参数。
◇默认git-daemon只对包含文件git-daemon-export-ok的版本库提供服务。使用--export-all后,无论版本库是否存在标识文件git-daemon-export-ok,都对版本库提供git访问服务。
◇其中/path/to/repos是我在linux服务器上git版本库的存放目录。
◇git daemon的参数很多,这里只列出了简单的用法,有兴趣的可以通过git daemon –help或者man inetd.conf帮助慢慢研究。
3.2.3. 使配置立刻生效
修改了配置文件后,可以通过/etc/init.d/openbsd-inetd restart或者/etc/init.d/openbsd-inetd reload来使配置马上生效。我这里介绍另一种方法。git-daemon运行时,inetd会读取它的配置文件,默认为/etc/inetd.conf。如果修改了该配置文件,给inetd进程发一个SIGHUP信号,inetd在接收到SIGHUP挂起信号后会重新读取其配置文件。按如下步骤给inetd进程发送一个SIGHUP信号:
◇找出inetd进程的process number
ps ax | grep inetd 230 ?? Ss 0:00.01 inetd 20392 std S+ 0:00.01 grep inetd |
◇发送SIGHUP信号
sudo kill - SIGHUP 230 |
3.3. 部署xinetd
既然xinetd是inetd的替代版,建议大家都使用xinetd,需要给你一个替代的理由?去官网看:http://www.xinetd.org/,你可以通过manxinetd来看下帮助手册。
3.3.1. 安装
sudo aptitude install xinetd |
# find / -name xinetd –exec ls -idl {} \; 665609 -rwxr-xr-x 1 root root 2063 3月 27 2008 /etc/init.d/xinetd 665608 -rw-r--r-- 1 root root 316 3月 27 2008 /etc/default/xinetd 263351 -rwxr-xr-x 1 root root 133908 3月 27 2008 /usr/sbin/xinetd 269429 drwxr-xr-x 3 root root 4096 10月 24 11:01 /usr/share/doc/xinetd 3281001 -rw-r--r-- 1 root root 28 10月 24 11:01 /var/lib/update-rc.d/xinetd |
如果要看/usr/sbin/xinetd程序支持哪些参数,可以manxinetd查看帮助。如果要看/etc/init.d/xinetd脚本支持哪些参数,可以/etc/init.d/xinetd –help查看。是不是有点乱,不要搞混了,你可以打开/etc/init.d/xinetd脚本文件看看里面的内容应该就明白了。
可以通过以下命令查看下xinetd有没有有运行:
ps ax | grep xinetd |
/etc/init.d/xinetd start | 启动xinetd |
/etc/init.d/xinetd stop | 停止xinetd |
/etc/init.d/xinetd restart | 重启xinetd |
/usr/sbin/xinetd -filelog /xinetdlog.txt |
3.3.2. 修改配置文件
注意:可以通过man xinetd.conf来查看详细的参数说明。成功安装后,可以看到/etc/xinetd.conf配置文件,这跟inetd不同,你不能在这里直接修改,你需要在/etc/xinetd.d/目录下创建一个git-daemon文件,文件内容如下:
# default: off # description: The git server offers access to git repositories service git { disable = no type = UNLISTED port = 9418 socket_type = stream wait = no user = nobody server = /usr/local/bin/git server_args = daemon --inetd --verbose --export-all /path/to/repos log_on_failure += USERID } |
3.3.3. 使配置立刻生效
在/etc/xinetd.d/目录里新加/修改配置文件,重启xinetd即可生效:/etc/rc.d/init.d/xinetd restart |
4. 提供简短的URL地址
我们上面使用的URL是git://192.168.1.101/path/to/repos/mygit.git,如果版本库的路径比较深,有什么办法能在用户访问时提供短一些的URL地址呢?可以为gitdaemon使用--base-path参数建立版本库根目录映射,如inetd.conf配置文件写成这样:
git stream tcp nowait nobody /usr/lib/git-core/git git daemon --inetd --verbose --export-all --base-path=/path/to/repos /path/to/repos |
5. 其他
Git协议的默认端口是9418,通过以下命令可以验证,当然你也可以不用默认端口。# grep 9418 /etc/services git 9418/tcp # git pack transfer service git 9418/udp # git pack transfer service |
相关文章推荐
- Mac下使用终端连接远程使用ssh协议的git服务器
- 使用git协议的git 服务器
- Git使用之基于SSH的Git服务器的客户端配置(下篇)
- 3.GIT服务器使用基础
- 使用git代替FTP部署代码到服务器的例子
- Git服务器搭建和使用
- 搭建git服务器和使用教程
- 使用nginx解决一台服务器中ws协议与wss协议共存问题 2017-07-09 13:29:06
- 4.1 服务器上的 Git - 协议
- 纯收藏贴,git服务器搭建,客户端使用
- Windows下Git服务器搭建及使用过程中的一些问题
- git服务器gitlab之搭建和使用
- mac中使用 sourcetree 的快速配置和git服务器登录
- git服务器的使用
- Git使用基本方法二(通过SSH加密传输连接git服务器)
- 使用git服务器实现生产环境应用服务器代码更新管理的方案
- 关于git使用以及合并服务器代码到本地小记
- 使用oschina的git服务器图文流程
- 如何在WINDOWS(XP)下使用copSSH配置GIT服务器+TortiseGIT客户端
- Git 服务器使用基础