user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
From: Eric Wong <e@80x24.org>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: meta@public-inbox.org
Subject: Re: Setup woes
Date: Tue, 23 Feb 2021 22:11:10 +0000	[thread overview]
Message-ID: <20210223221110.GA2920@dcvr> (raw)
In-Reply-To: <20210223213117.52p5kmhqvtafbho5@pengutronix.de>

Uwe Kleine-König <u.kleine-koenig@pengutronix.de> wrote:
> Hello Eric,
> 
> On Tue, Feb 23, 2021 at 08:01:24PM +0000, Eric Wong wrote:
> > Uwe Kleine-König <u.kleine-koenig@pengutronix.de> wrote:
> > >  1) Import of older mails
> > >     I used Konstantin Ryabitsev script[1] to generate a directory of
> > >     mbob files. It's unclear to me how to easily import that into the
> > >     archive. Not knowing a better way, I'd put them all in a Maildir and
> > >     use public-inbox-watch to import them. Is there a nicer way?
> > 
> > scripts/import_vger_from_mbox is probably the best maintained
> > of the stuff in scripts for mass imports (it supports v2, unlike
> > the rest of scripts/).
> 
> Ah, this worked great. I missed these scripts because they are not
> included in my public-inbox.deb.

Cool.

> > >  2) Apache configuration
> > >     I was able to setup Apache to serve individual archives but I fail
> > >     to get a list listing at the root. That is I can access the barebox
> > >     archive at http://lore.pengutronix.de/barebox/, but not the overview
> > >     of the archived lists at http://lore.pengutronix.de/.
> > > 
> > > 	$ curl -D - http://lore.pengutronix.de/
> > > 	HTTP/1.1 404 Not Found
> > > 	Date: Tue, 23 Feb 2021 15:31:54 GMT
> > > 	Server: Apache/2.4.38 (Debian)
> > > 	Expires: Fri, 01 Jan 1980 00:00:00 GMT
> > > 	Pragma: no-cache
> > > 	Cache-Control: no-cache, max-age=0, must-revalidate
> > > 	Content-Length: 9
> > > 	Content-Type: text/plain
> > > 
> > > 	Not Found
> > 
> > You might need to configure publicinbox.wwwlisting to
> > "all" or match=domain".  See publicinbox.wwwlisting in
> > public-inbox-config(5).
> 
> I have this, with public-inbox-httpd I get a listing.

Alright.  It's good that -httpd alone works.  Then Apache
mod_proxy could be an option.

> > The default behavior is to 404 since the listing is a
> > fairly recent addition.
> > 
> > >     The Apache config looks as follows:
> > > 
> > > 	<VirtualHost *:80>
> > > 		ServerName lore.pengutronix.de
> > > 
> > > 		ServerAdmin webmaster@localhost
> > > 		DocumentRoot /srv/www/lore.pengutronix.de/root
> > > 
> > > 		<Directory "/srv/www/lore.pengutronix.de/root">
> > > 			AllowOverride None
> > > 			Require all granted
> > > 		</Directory>
> > > 
> > > 		LogLevel debug
> > > 
> > > 		ErrorLog ${APACHE_LOG_DIR}/error.log
> > > 		CustomLog ${APACHE_LOG_DIR}/access.log combined
> > > 
> > > 		Include conf-available/serve-cgi-bin.conf
> > > 		Include mods-available/rewrite.load
> > > 		SetEnv PI_DIR /home/lore/.public-inbox
> > > 		SetEnv NO_SCRIPT_NAME 1
> > > 
> > > 		Options +ExecCGI
> > > 		ScriptAlias /public-inbox.cgi "/usr/lib/cgi-bin/public-inbox.cgi"
> > > 
> > > 		DirectoryIndex public-inbox.cgi
> > > 		RewriteEngine On
> > > 		RewriteCond %{REQUEST_FILENAME} !-f
> > > 		RewriteCond %{REQUEST_FILENAME} !-d
> > 
> > Perhaps it's the -d check?  I haven't tested WwwListing with
> > Apache.
> 
> When I drop this I get:
> 
> 	$ curl http://lore.pengutronix.de/
> 	<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
> 	<html><head>
> 	<title>500 Internal Server Error</title>
> 	</head><body>
> 	<h1>Internal Server Error</h1>
> 	<p>The server encountered an internal error or
> 	misconfiguration and was unable to complete
> 	your request.</p>
> 	<p>Please contact the server administrator at
> 	 webmaster@localhost to inform them of the time this error occurred,
> 	 and the actions you performed just before this error.</p>
> 	<p>More information about this error may be available
> 	in the server error log.</p>
> 	<hr>
> 	<address>Apache/2.4.38 (Debian) Server at lore.pengutronix.de Port 80</address>
> 	</body></html>
> 
> :-)

No idea, anything in Apache error logs?  I'm far from an Apache
expert.

> > > 		RewriteRule ^.* /public-inbox.cgi/$0 [L,PT]
> > > 
> > > 	</VirtualHost>
> > > 
> > >      My guess is that the "SetEnv NO_SCRIPT_NAME 1" part doesn't work as
> > >      expected, but after some searching in the net I didn't find how to
> > >      do this properly.

Actually, NO_SCRIPT_NAME is no longer used since we switched to Plack
5 years ago in commit 8968889e3ebfa09dd2c80fe8b917b83ac13ff356 (2016-02-25)

The examples for Apache are badly out-of-date :<

> > Not sure, I haven't used Apache in ages and some of the configs
> > in examples/ are likely out-of-date and never tested with
> > WwwListing.
> > 
> > If you're not using public-inbox-httpd; then I strongly suggest
> > using at least mod_perl (and not plain CGI) since Perl startup
> > time is atrocious.
> 
> I used CGI because I had the impression this was the easiest to get
> running. Also ISTR that this isn't using cgi, but cgid, so the startup
> time isn't that relevant.  Will try with mod_perl next, maybe the script
> name issue will go away then.

OK, there's also Plack::Handler::Apache2 (but I don't know it
well, either :x)

> When I debugged that some time ago I saw that /public-inbox.cgi/ is part
> of the request URL that is handled in the CGI. Also the footer of the
> generated pages has:
> 
> 	This inbox may be cloned and mirrored by anyone:
> 
> 	git clone --mirror http://lore.pengutronix.de/public-inbox.cgi/barebox/0 barebox/git/0.git
> 
> 	...
> 
> which is wrong.

*shrug*  If you figure it out, I'd much appreciate patches to
fix examples and docs.  The CGI/Apache stuff is largely ignored
and forgotten since public-inbox-httpd came into existence.

> > If you're dealing with large inboxes and supporting smart HTTP
> > clone/fetch, then use public-inbox-httpd (which works with
> > varnish, mod_proxy, or any other front-end proxy).
> 
> Using Apache was one of the preconditions by the company's admin team,
> but I will forward your information once I'm done with the setup and
> when I hand over operation of lore.pengutronix.de to them.

I understand; is Apache w/ mod_proxy + public-inbox-httpd
acceptable?  You'll probably want varnish or similar in front of
-httpd, as well; in case something ends up at the top of HN,
Slashdot, or whatever link aggregators are in fashion these
days.

I don't remember Apache well at all; I switched to nginx for
reverse proxying in 2006 and then some obscure, Ruby+C thing
in 2013 :>

Fwiw, there'll probably be a combined -httpd/-imapd/-nntpd
server someday, too, which should lead to memory savings.
And transparent caching so Varnish won't be required.

I'll probably drop the obscure Ruby+C thing for
public-inbox-httpd at some point, too; once HTTP reverse proxy
support is implemented; since public-inbox-httpd already
has lightly-tested HTTPS support.

  reply	other threads:[~2021-02-23 22:11 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-23 15:42 Setup woes Uwe Kleine-König
2021-02-23 20:01 ` Eric Wong
2021-02-23 21:31   ` Uwe Kleine-König
2021-02-23 22:11     ` Eric Wong [this message]
2021-02-24 10:25       ` Uwe Kleine-König
2021-02-24 11:09         ` Eric Wong

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

  List information: https://public-inbox.org/README

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

  git send-email \
    --in-reply-to=20210223221110.GA2920@dcvr \
    --to=e@80x24.org \
    --cc=meta@public-inbox.org \
    --cc=u.kleine-koenig@pengutronix.de \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/public-inbox.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).