Plack::Handler::Apache2 exists and seems to work very well.
---------------------
public-inbox-config - configuration file, this maps configured inboxes
-For Apache2 users without Plack
--------------------------------
-apache2_perl.conf - intended to be the basis of a production config
+For PSGI/Plack (HTTP) servers
+-----------------------------
+public-inbox.psgi - starting point for PSGI/Plack users in production and dev
-Web server configs for quick-and-dirty demos
---------------------------------------------
-apache2_cgi.conf - for Apache2 users who cannot install mod_perl
-cgi-webrick.rb - only for Rubyists who do not wish to install Plack or Apache
+For Apache2 users
+-----------------
+apache2_perl.conf - intended to be the basis of a production config
Contact
-------
-# Example Apache2 configuration using mod_cgi
-# If possible, use mod_perl (see apache2_perl.conf) instead of this.
+# Example Apache2 configuration using CGI mod_cgi
+# If possible, use mod_perl (see apache2_perl.conf) or
+# a standalone PSGI/Plack # server instead of this.
# Adjust paths to your installation.
ServerName "public-inbox"
-# Example Apache2 configuration using mod_perl2
+# Example Apache2 configuration using Plack::Handler::Apache2
# Adjust paths to your installation
ServerName "public-inbox"
-ServerRoot "/var/www/cgi-bin"
-DocumentRoot "/var/www/cgi-bin"
+ServerRoot "/var/www"
+DocumentRoot "/var/www"
ErrorLog "/tmp/public-inbox-error.log"
PidFile "/tmp/public-inbox.pid"
Listen 127.0.0.1:8080
LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
-LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
-LoadModule dir_module /usr/lib/apache2/modules/mod_dir.so
-LoadModule mime_module /usr/lib/apache2/modules/mod_mime.so
-TypesConfig "/dev/null"
-# PerlPassEnv PATH # this is implicit
-<Directory /var/www/cgi-bin>
- Options +ExecCGI
- AddHandler perl-script .cgi
- PerlResponseHandler ModPerl::Registry
- PerlOptions +ParseHeaders
+# no need to set no rely on HOME if using this:
+PerlSetEnv PI_CONFIG /home/pi/.public-inbox/config
- # we use this hack to ensure "public-inbox.cgi" doesn't show up
- # in any of our redirects:
- PerlSetEnv NO_SCRIPT_NAME 1
+<Location />
+ SetHandler perl-script
+ PerlResponseHandler Plack::Handler::Apache2
+ PerlSetVar psgi_app /path/to/public-inbox.psgi
+</Location>
- # no need to set no rely on HOME if using this:
- PerlSetEnv PI_CONFIG /home/pi/.public-inbox/config
-
- # our public-inbox.cgi requires PATH_INFO-based URLs with minimal
- # use of query parameters
- DirectoryIndex public-inbox.cgi
- RewriteEngine On
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteRule ^.* /public-inbox.cgi/$0 [L,PT]
-</Directory>
+# Optional, preload the application in the parent like startup.pl
+<Perl>
+ use Plack::Handler::Apache2;
+ Plack::Handler::Apache2->preload("/path/to/public-inbox.psgi");
+</Perl>
--- /dev/null
+# Example legacy Apache2 configuration using CGI + mod_perl2
+# Consider using Plack::Handler::Apache2 instead (see apache2_perl.conf)
+# Adjust paths to your installation
+
+ServerName "public-inbox"
+ServerRoot "/var/www/cgi-bin"
+DocumentRoot "/var/www/cgi-bin"
+ErrorLog "/tmp/public-inbox-error.log"
+PidFile "/tmp/public-inbox.pid"
+Listen 127.0.0.1:8080
+LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
+LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
+LoadModule dir_module /usr/lib/apache2/modules/mod_dir.so
+LoadModule mime_module /usr/lib/apache2/modules/mod_mime.so
+TypesConfig "/dev/null"
+
+# PerlPassEnv PATH # this is implicit
+<Directory /var/www/cgi-bin>
+ Options +ExecCGI
+ AddHandler perl-script .cgi
+ PerlResponseHandler ModPerl::Registry
+ PerlOptions +ParseHeaders
+
+ # we use this hack to ensure "public-inbox.cgi" doesn't show up
+ # in any of our redirects:
+ PerlSetEnv NO_SCRIPT_NAME 1
+
+ # no need to set no rely on HOME if using this:
+ PerlSetEnv PI_CONFIG /home/pi/.public-inbox/config
+
+ # our public-inbox.cgi requires PATH_INFO-based URLs with minimal
+ # use of query parameters
+ DirectoryIndex public-inbox.cgi
+ RewriteEngine On
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteCond %{REQUEST_FILENAME} !-d
+ RewriteRule ^.* /public-inbox.cgi/$0 [L,PT]
+</Directory>