ubuntu用git-daemon筹建git服务器和配置方法

ubuntu用git-daemon搭建git服务器和配置方法

网络查找资料虽然很方便,但是网上很多人转载文章都是不负责任的....

搭建这个git服务器老是不成功.重启git总是运行不起来,,,特别是那个网上说的sv git-daemon restart命令,老是出错.

而自己将命令敲进去到是可以.. 对于这点,当然可以加到/etc/rc.local或者profile文件解决..但本人想要一个更*完美*的方法(每个人理解不同)

并且搜来搜去,都是转载的一篇文章!


本文与网上普遍转载的那篇文章有所不同.

本文所用的方法

使用的系统ubuntu 12.10

步骤:

1.安装

这个不用多说,ubuntu下安装很简单

sudo apt-get install git-all
这样就安装了git和git-daemon等等.

2.安装启动运行时的工具

sudo apt-get install git-daemon-sysvinit
网上转载的那篇用的是git-daemon-sysvinit,,本文使用的是git-daemon-sysvinit...

3.配置文件

这个地方前面遇到了一些问题,,然后我又一步步的分析/etc/init.d/git-daemon脚本文件,最后才找到配置的方法.

配置文件在/etc/default/git-daemon

打开编辑

sudo vi /etc/default/git-daemon
我的配置文件内容如下(后面会具体参数的意义)

我使用的作为git仓库的目录为/home/git/repositories....你们就改成自己相同的就行了.

# Defaults for git-daemon initscript

# sourced by /etc/init.d/git-daemon
# installed at /etc/default/git-daemon by the maintainer scripts

#
# This is a POSIX shell fragment
#

GIT_DAEMON_ENABLE=true
GIT_DAEMON_USER=git
GIT_DAEMON_DIRECTORY="/var/cache/git /home/git/repositories"

# Additional options that are passed to the Daemon.
GIT_DAEMON_OPTIONS="--export-all --enable=upload-pack --enable=upload-archive --enable=receive-pack --informative-errors"
GIT_DAEMON_BASE_PATH=/home/git/repositories

其中

GIT_DAEMON_ENABLE=true很明显得设置成true值了

GIT_DAEMON_USER=git 这个就看你想用哪个用户运行git-daemon.一般为了安全都得设置别的用户...

注意!!设置的这个用户一定得对GIT_DAEMON_BASE_PATH有读,写,执行的所有权限!! 可以用ls -ld git仓库目录,查看为drwx

如果你的git仓库放在自己的个人目录下即/home/use_name下面的话,那设置成你的用户名准没错.

GIT_DAEMON_DIRECTORY="/var/cache/git /home/git/repositories"  这个是设置成目录白名单whitelist!! 如果不设置的话用户在git操作时如git clone,git push等等会出现no such directory.  而在服务器机器上/var/log/syslog中会看到'/home/git/repositories/xxx.git': not in whitelist
GIT_DAEMON_OPTIONS 就是设置参数了.如果想上传,且全部导出.就设置--export-all --enable=upload-pack --enable=upload-archive --enable=receive-pack 

注意!如果出现找不到的话,就在/home/git/repositories目录下面的项目仓库目录下touch git-daemon-export-ok..生成一个这个名字的文件即可.

如果想使用git push功能,那一定要打开--enable=receive-pack

最后一个

GIT_DAEMON_BASE_PATH 即设置根目录.比如像我的这个设置.

那么你在用git clone git://your ip or name/test.git时,git服务器就会查换/home/git/repositories/test.git目录了.


以上设置好了只后,,那么每次开机就会自己启动了.

还可以使用sudo service git-daemon start|restart|stop控制. sudo /etc/init.d/git-daemon start|restart|stop也可以了.