From: Jakub Narebski <jnareb@gmail.com>
To: git@vger.kernel.org
Cc: Eric Wong <normalperson@yhbt.net>,
Christian Couder <chriscool@tuxfamily.org>
Subject: Adding support for "plackup" and similar web server tools to git-instaweb
Date: Sun, 2 May 2010 03:17:40 +0200 [thread overview]
Message-ID: <201005020317.42112.jnareb@gmail.com> (raw)
I would like to add support for --httpd / instaweb.httpd = plackup
to git-instaweb. 'plackup'[1] is a command line utility to run
PSGI[2][3] application (CGI application can be wrapped as such[4][5])
from the command line.
Among others 'plackup' can use standalone HTTP::Server::PSGI server
(in Perl). This means that one could use git-instaweb with
--httpd=plackup even without permissions to install CGI scripts;
without admin rights (CPAN modules can be installed localy in one's
home directory using local::lib).
The problem is that contrary to other web servers that can be used by
git-instaweb, (namely apache2, lighttpd, mongoose and webrick), the
'plackup' utility is configured using command line options, and not
via configuration file (well, one can use configuration file, but it
depends on the web server run from plackup).
How should one go with adding support for such httpd? My first attempt
was putting full command line into 'httpd' in resolve_full_httpd():
+ *plackup*)
+ # plackup is configured via command-line options
+ bind=
+ test x"$local" = xtrue && bind="--host=127.0.0.1"
+ httpd="$httpd --port=$port $bind --app=$fqgitdir/gitweb/app.psgi"
+ ;;
The default standalone web server used by plackup (HTTP::Server::PSGI)
does not have daemon mode, so we would have to do the same as for moongose
web server: set to background and save pid in pidfile in git-instaweb.
OTOH plackup prints information / logs to STDERR, so it would have to be
silenced or redirected to error_log. Also plackup does not need to have
"$fqgitdir/gitweb/httpd.conf" passed as last argument, but it needs to
be passed PSGI wrapper for CGI (I'd rather not use httpd.conf, but rather
app.psgi or gitweb.psgi for that).
So how should one go with adding support for new web server to git-instaweb,
that is configured via command line options (--port, --host) and not via
config file?
[1] http://p3rl.org/plackup
[2] http://plackperl.org
[3] http://p3rl.org/PSGI
[4] http://p3rl.org/Plack::App::WrapCGI
[5] http://p3rl.org/CGI::Emulate::PSGI
[6] http://p3rl.org/Plack
--
Jakub Narebski
Poland
next reply other threads:[~2010-05-02 1:18 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-02 1:17 Jakub Narebski [this message]
2010-05-03 20:56 ` Adding support for "plackup" and similar web server tools to git-instaweb Eric Wong
2010-05-03 22:25 ` Jakub Narebski
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=201005020317.42112.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=chriscool@tuxfamily.org \
--cc=git@vger.kernel.org \
--cc=normalperson@yhbt.net \
/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).