From: Eric Wong Date: Thu, 04 Jan 2007 07:49:38 GMT Subject: [PATCH 2/2] instaweb: add support for nginx + FastCGI Message-ID: <1167896979262-git-send-email-normalperson@yhbt.net> In-Reply-To: <11678969111362-git-send-email-normalperson@yhbt.net> nginx does not support regular CGI Signed-off-by: Eric Wong --- Makefile | 5 +++- git-instaweb.sh | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 75 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 3e94def..893c7f2 100644 --- a/Makefile +++ b/Makefile @@ -690,7 +690,8 @@ gitweb/gitweb.fcgi: gitweb/gitweb-fcgi.perl chmod +x $@+ mv $@+ $@ -git-instaweb: git-instaweb.sh gitweb/gitweb.cgi gitweb/gitweb.css +git-instaweb: git-instaweb.sh gitweb/gitweb.cgi gitweb/gitweb.css \ + gitweb/gitweb.fcgi rm -f $@ $@+ sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \ @@ -699,6 +700,8 @@ git-instaweb: git-instaweb.sh gitweb/gitweb.cgi gitweb/gitweb.css -e '/@@GITWEB_CGI@@/d' \ -e '/@@GITWEB_CSS@@/r gitweb/gitweb.css' \ -e '/@@GITWEB_CSS@@/d' \ + -e '/@@GITWEB_FCGI@@/r gitweb/gitweb.fcgi' \ + -e '/@@GITWEB_FCGI@@/d' \ $@.sh > $@+ chmod +x $@+ mv $@+ $@ diff --git a/git-instaweb.sh b/git-instaweb.sh index 08362f4..dcd04fd 100755 --- a/git-instaweb.sh +++ b/git-instaweb.sh @@ -20,7 +20,7 @@ httpd="`git repo-config --get instaweb.httpd`" browser="`git repo-config --get instaweb.browser`" port=`git repo-config --get instaweb.port` module_path="`git repo-config --get instaweb.modulepath`" - +fcgi_pid_file="$fqgitdir"/gitweb/fcgi.pid conf=$GIT_DIR/gitweb/httpd.conf # Defaults: @@ -34,7 +34,22 @@ test -z "$browser" && browser='firefox' # any untaken local port will do... test -z "$port" && port=1234 +use_fcgi () { + case "$httpd" in + *nginx*) + return 0 + ;; + esac + return -1 +} + start_httpd () { + if use_fcgi; then + "$fqgitdir"/gitweb/gitweb.fcgi \ + --fcgi-socket="$fcgi_sock" \ + --cgi-bin="$fqgitdir/gitweb/gitweb.cgi" & + echo $! > "$fcgi_pid_file" + fi httpd_only="`echo $httpd | cut -f1 -d' '`" if test "`expr index $httpd_only /`" -eq '1' || \ which $httpd_only >/dev/null @@ -61,6 +76,9 @@ start_httpd () { } stop_httpd () { + if use_fcgi; then + test -f "$fcgi_pid_file" && kill `cat "$fcgi_pid_file"` + fi test -f "$fqgitdir/pid" && kill `cat "$fqgitdir/pid"` } @@ -138,7 +156,48 @@ mkdir -p "$GIT_DIR/gitweb/tmp" GIT_EXEC_PATH="`git --exec-path`" GIT_DIR="$fqgitdir" export GIT_EXEC_PATH GIT_DIR +fcgi_sock="$fqgitdir/gitweb/fcgi.sock" +nginx_conf () { + mkdir -p "$fqgitdir"/gitweb/logs + cat > "$conf" < "$conf" < "$1" <<\EOFGITWEB +@@GITWEB_FCGI@@ +EOFGITWEB + chmod +x "$1" +} + gitweb_cgi $GIT_DIR/gitweb/gitweb.cgi gitweb_css $GIT_DIR/gitweb/gitweb.css +gitweb_fcgi $GIT_DIR/gitweb/gitweb.fcgi case "$httpd" in *lighttpd*) @@ -240,6 +307,9 @@ case "$httpd" in *apache2*) apache2_conf ;; +*nginx*) + nginx_conf + ;; *) echo "Unknown httpd specified: $httpd" exit 1 -- 1.5.0.rc0.gcafca-dirty