Git服务器 - 配置

来源:互联网 发布:arm linux gnueabihf 编辑:程序博客网 时间:2024/05/07 14:34

配置服务器


服务端SSH访问

首先,创建一个操作系统用户git,并建立.ssh目录。

sudo adduser gitsu gitcd mkdir .ssh && chmod 700 .sshtouch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

接着需要为系统用户gitauthorized_keys文件添加开发者SSH公钥。将开发者公钥加入到git用户的.ssh目录下的authorized_keys文件的末尾:

cat /tmp/id_rsa.xxx.pub >> ~/.ssh/authorized_keys

现在我们为开发者新建一个空仓库,可以借助带--bare选项的git init命令来做。该命令在初始化仓库时不会创建工作目录“

cd /opt/gitmkdir project.gitcd project.gitgit init --bare

Git守护进程

对于快速且无需授权的Git数据访问,可以通过建立基于”Git“协议的守护进程仓库。因为不包含授权服务,任何通过该协议管理的内容将在其网络上公开。

git daemon --reuseaddr --base-paht=/opt/git/ /opt/git/

选项--reuseaddr允许服务器在无需等待旧连接超时的情况下重启,--base-path选项允许用户在为完全指定路径的条件下克隆项目,结尾的路径告诉Git守护进程从何处寻找仓库来导入。如果有防火墙,需要开放端口9418的通信权限。

接下来需要告诉Git哪些仓库允许基于服务器的无授权访问。可以在每个仓库下创建一个名为git-daemon-export-ok文件来实现。

cd /path/to/project.gittouch git-daemon-export-ok

该文件将允许Git提供无授权的项目访问服务。

Smart HTTP

设置Smart HTTP一般只需要在服务器上启动一个Git自带的名为git-http-backend的CGI脚本,该脚本将读取由git fetchgit push命令向HTTP UTL发送的请求路径和头部信息,来判断该客户端是否支持HTTP通信。如果CGI发现该客户端支持Smart模式,他将会以Smart模式进行通信,否则它将会回落到Dumb模式。
在完成以上的安装步骤后,我们可以用Apache作为CGI服务器。在Apache的配置文件中添加一些内容,让git-http-backend作为Web服务器对/git路径请求的处理器。

SetEnv GIT PROJECT ROOT /opt/gitSetEnv GIT HTTP EXPORT ALLScriptAlias /git/ /usr/lib/git-core/git-http-backend/

如果留空GIT_HTTP_EXPORT_ALL这个环节变量,Git将只对无授权客户端提供带git=daemon-export-ok文件的版本库,就像Git守护进程一样。
在Apache配置文件中添加如下内容,让Apache接受通过该路径的请求:

<Directory "/usr/lib/git-core*">   Options ExecCGI Indexes   Order allow,deny   Allow from all   Require all granted</Directory>

最后如果想实现写操作授权验证,使用如下的未授权屏蔽配置即可:

<LocationMatch "^/git/.*/git-receive-pack$">    AuthType Basic    AuthName "Git Access"    AuthUserFile /opt/git/.htpasswd    Require valid-user</LocationMatch>

这时需要创建一个包含所有合法用户密码的.htaccess文件,一下时添加”schacon”用户到此文件的例子:

htdigest -c /opt/git/ .htpasswd "xxx" schacon
0 0
原创粉丝点击