环境
- Centos/Redhat 6
- 安装好 git
安装 fcgiwrap
- 参考
安装 spawn-fcgi
- 参考
编辑 spawn-fcgi/sbin/fcgiwrap 开机启动脚本:
#! /bin/shDESC="fcgiwrap daemon"DEAMON=/opt/spawn-fcgi/bin/spawn-fcgiPIDFILE=/tmp/spawn-fcgi.pid# fcgiwrap socketFCGI_SOCKET=/tmp/fcgiwrap.socket# fcgiwrap 可执行文件FCGI_PROGRAM=/opt/fcgiwrap/sbin/fcgiwrap# fcgiwrap 执行的用户和用户组FCGI_USER=nobodyFCGI_GROUP=nobodyFCGI_EXTRA_OPTIONS="-M 0770"OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P $PIDFILE -- $FCGI_PROGRAM"do_start() { $DEAMON $OPTIONS || echo -n "$DESC already running"}do_stop() { kill -INT `cat $PIDFILE` || echo -n "$DESC not running"}case "$1" in start) echo -n "Starting $DESC: $NAME" do_start echo "." ;; stop) echo -n "Stopping $DESC: $NAME" do_stop echo "." ;; restart) echo -n "Restarting $DESC: $NAME" do_stop do_start echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2 exit 3 ;;esacexit 0
启动 fcgiwrap
chmod 0755 /opt/spawn-fcgi/sbin/fcgiwrap/opt/spawn-fcgi/sbin/fcgiwrap start
安装 nginx
- 参考 nginx
在 nginx 前端目录 html 下创建 git 仓库目录 nginx/html/git/
mkdir /opt/nginx/html/git/chown nobody.nobody /opt/nginx/html/git/ -R
配置 nginx 的 git 服务
# 在 server section 中添加 gitlocation ~ /git(/.*) { gzip off; fastcgi_pass unix:/tmp/fcgiwrap.socket; include fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/libexec/git-core/git-http-backend; fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /opt/nginx/html/git; fastcgi_param PATH_INFO $1; fastcgi_param REMOTE_USER $remote_user; client_max_body_size 500m;}
重新加载配置文件
/opt/nginx/sbin/nginx -s reload
测试,在仓库目录下新建一个空repo
cd /opt/nginx/html/git/git init --bare test-repochown nobody.nobody test-repo -Rcd test-repogit config http.reveivepack true
完成
- 在另一台服务器中可以顺利的进行 clone、push 及 pull 等操作。