git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jakub Narebski <jnareb@gmail.com>
To: git@vger.kernel.org
Cc: "Sam Vilain" <sam.vilain@catalyst.net.nz>,
	"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH/RFC v2] gitweb: Run in FastCGI mode if gitweb script has .fcgi extension
Date: Sun, 6 Jun 2010 22:09:49 +0200	[thread overview]
Message-ID: <201006062209.53176.jnareb@gmail.com> (raw)
In-Reply-To: <1275772278-14709-1-git-send-email-jnareb@gmail.com>

If the name of the script ($SCRIPT_NAME or $SCRIPT_FILENAME CGI
environment variable, or __FILE__ literal) ends with '.fcgi'
extension, run gitweb in FastCGI mode, as if it was run with
'--fastcgi' / '--fcgi' option.

This is intended for easy deploying of gitweb using FastCGI
interface.

Includes update to gitweb/INSTALL.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
This patch differs from previous version only in that it now includes
change to gitweb/INSTALL.  Can anyone check if the information stated
there is correct?

This patch is based on a0446e7 commit (gitweb: Add support for
FastCGI, using CGI::Fast, 2010-05-07), currently in 'next' 
(from 'jn/gitweb-fastcgi' branch).

I have not actually tested that it runs as FastCGI script.

 gitweb/INSTALL     |   28 ++++++++++++++++++++++++++++
 gitweb/gitweb.perl |   21 +++++++++++++--------
 2 files changed, 41 insertions(+), 8 deletions(-)

diff --git a/gitweb/INSTALL b/gitweb/INSTALL
index d484d76..617c9f4 100644
--- a/gitweb/INSTALL
+++ b/gitweb/INSTALL
@@ -230,12 +230,26 @@ $projects_list variable in gitweb config):
 	perl -- /var/www/cgi-bin/gitweb.cgi
 
 
+Running gitweb using FastCGI interface
+--------------------------------------
+
+To run gitweb as FastCGI script (using FastCGI interface), rather than
+plain CGI script, you need to either pass '--fastcgi' or '--fcgi' parameter
+to gitweb script, or rename it to 'gitweb.fcgi' (to end with '.fcgi'
+extension).  To run gitweb using FastCGI interface you need CGI::Fast
+and FCGI Perl modules installed.
+
+You can also pass '--nproc=<n>' parameter to gitweb script to configure how
+many FCGI::ProcManager processes to use.
+
+
 Requirements
 ------------
 
  - Core git tools
  - Perl
  - Perl modules: CGI, Encode, Fcntl, File::Find, File::Basename.
+   To run gitweb using FastCGI interface CGI::Fast and FCGI are needed.
  - web server
 
 
@@ -272,3 +286,17 @@ See also "Webserver configuration" section in README file for gitweb
 	    Order allow,deny
 	    Allow from all
 	</Directory>
+
+- Apache2, gitweb installed as 'gitweb.fcgi' FastCGI script,
+  under /var/www/fcgi-bin/
+
+	LoadModule fcgid_module modules/mod_fcgid.so
+
+	Alias /fcgi-bin "/var/www/fcgi-bin"
+
+	<Directory "/var/www/fcgi-bin">
+	    SetHandler fcgid-script
+	    Options +ExecCGI
+	    Order allow,deny
+	    Allow from all
+	</Directory>
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index c42c16f..47ef993 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -1056,19 +1056,24 @@ our $is_last_request = sub { 1 };
 our ($pre_dispatch_hook, $post_dispatch_hook, $pre_listen_hook);
 our $CGI = 'CGI';
 our $cgi;
+sub configure_as_fcgi {
+	require CGI::Fast;
+	our $CGI = 'CGI::Fast';
+
+	my $request_number = 0;
+	# let each child service 100 requests
+	our $is_last_request = sub { ++$request_number > 100 };
+}
 sub evaluate_argv {
+	my $script_name = $ENV{'SCRIPT_NAME'} || $ENV{'SCRIPT_FILENAME'} || __FILE__;
+	configure_as_fcgi()
+		if $script_name =~ /\.fcgi$/;
+
 	return unless (@ARGV);
 
 	require Getopt::Long;
 	Getopt::Long::GetOptions(
-		'fastcgi|fcgi|f' => sub {
-			require CGI::Fast;
-			our $CGI = 'CGI::Fast';
-
-			my $request_number = 0;
-			# let each child service 100 requests
-			our $is_last_request = sub { ++$request_number > 100 };
-		},
+		'fastcgi|fcgi|f' => \&configure_as_fcgi,
 		'nproc|n=i' => sub {
 			my ($arg, $val) = @_;
 			return unless eval { require FCGI::ProcManager; 1; };
-- 
1.7.0.1

  parent reply	other threads:[~2010-06-06 20:10 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-05 21:11 [PATCH/RFC] gitweb: Run in FastCGI mode if gitweb script has .fcgi extension Jakub Narebski
2010-06-05 21:12 ` Ævar Arnfjörð Bjarmason
2010-06-06 20:09 ` Jakub Narebski [this message]
2010-06-06 20:18   ` [PATCH/RFC v2] " Pavan Kumar Sunkara

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201006062209.53176.jnareb@gmail.com \
    --to=jnareb@gmail.com \
    --cc=avarab@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=sam.vilain@catalyst.net.nz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).