git + nginx + fcgiwrap + spawn-fcgi git的http服务器-RHEL6
博客专区 > Colben 的博客 > 博客详情
git + nginx + fcgiwrap + spawn-fcgi git的http服务器-RHEL6
Colben 发表于1年前
git + nginx + fcgiwrap + spawn-fcgi git的http服务器-RHEL6
  • 发表于 1年前
  • 阅读 42
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

1、Centos/Redhat 6 在完全安装时已安装了镜像包里的git

2、安装 fcgiwrap,参考 https://github.com/gnosek/fcgiwrap

   

3、安装 spawn-fcgi,参考 https://github.com/lighttpd/spawn-fcgi

   

4、编辑 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

5、启动 fcgiwrap

chmod 0755 /opt/spawn-fcgi/sbin/fcgiwrap
/opt/spawn-fcgi/sbin/fcgiwrap start

6、安装 nginx,参考 http://nginx.org/en/download.html,启动 nginx

7、在 nginx 前端目录 html 下创建 git 仓库目录 nginx/html/git/

mkdir /opt/nginx/html/git/
chown nobody.nobody /opt/nginx/html/git/ -R

8、配置 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

9、测试,在仓库目录下新建一个空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 等操作。

标签: git nginx
共有 人打赏支持
Colben
粉丝 0
博文 62
码字总数 6822
×
Colben
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: