git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH/RFC] gitweb: Run in FastCGI mode if gitweb script has .fcgi extension

From
Jakub Narebski <jnareb@gmail.com>
Date
Jun 5, 2010, 21:11 UTC
Message-ID
<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 gitweb using FastCGI interface.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
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.

Now to run gitweb using FastCGI, all one has to do is to rename it from gitweb.cgi to gitweb.fcgi. And of course configure web server to run it using FastCGI interface.

 gitweb/gitweb.perl |   21 +++++++++++++--------
 1 files changed, 13 insertions(+), 8 deletions(-)
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
Next: Ævar Arnfjörð Bjarmason
Message 1 of 4 in “gitweb: Run in FastCGI mode if gitweb script has .fcgi extension”
  1. gitweb: Run in FastCGI mode if gitweb script has .fcgi extensionJakub Narebski, Jun 5, 2010
  2. Ævar Arnfjörð BjarmasonJun 5, 2010
  3. gitweb: Run in FastCGI mode if gitweb script has .fcgi extensionJakub Narebski, Jun 6, 2010
  4. Pavan Kumar SunkaraJun 6, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.