title, date, lastmod, tags, categories
title |
date |
lastmod |
tags |
categories |
搭建 Git http 服务 |
2019-10-30T17:35:56+08:00 |
2019-10-30T17:35:56+08:00 |
git |
nginx |
http |
fcgiwrap |
spawn-fcgi |
|
|
环境
安装 fcgiwrap
安装 spawn-fcgi
编辑 spawn-fcgi/sbin/fcgiwrap 开机启动脚本:
#! /bin/sh
DESC="fcgiwrap daemon"
DEAMON=/opt/spawn-fcgi/bin/spawn-fcgi
PIDFILE=/tmp/spawn-fcgi.pid
# fcgiwrap socket
FCGI_SOCKET=/tmp/fcgiwrap.socket
# fcgiwrap 可执行文件
FCGI_PROGRAM=/opt/fcgiwrap/sbin/fcgiwrap
# fcgiwrap 执行的用户和用户组
FCGI_USER=nobody
FCGI_GROUP=nobody
FCGI_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
;;
esac
exit 0
启动 fcgiwrap
chmod 0755 /opt/spawn-fcgi/sbin/fcgiwrap
/opt/spawn-fcgi/sbin/fcgiwrap start
安装 nginx
在 nginx 前端目录 html 下创建 git 仓库目录 nginx/html/git/
mkdir /opt/nginx/html/git/
chown nobody.nobody /opt/nginx/html/git/ -R
配置 nginx 的 git 服务
# 在 server section 中添加 git
location ~ /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-repo
chown nobody.nobody test-repo -R
cd test-repo
git config http.reveivepack true
完成
- 在另一台服务器中可以顺利的进行 clone、push 及 pull 等操作。