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
next prev 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).