how to configure Munin-2.0.x to generate content with CGI (only) on Fedora?

apache, apache2, fastcgi, fedora, munin

Solution

The problem is that, if you use the configuration in a "location" based setup (rather than in a VirtualHost"), the flag for the RewriteRule is wrong.

As per mod_rewrite docu:

 L  Stop the rewriting process immediately and don't apply any more rules.

However, in your case you want /munin/cgi/munin-cgi-html to be passed on so that the ScriptAlias actually triggers. Thus:

 PT Forces the resulting URI to be passed back to the URL mapping engine for
    processing of other URI-to-filename translators, such as Alias or Redirect

If you change your rules to read

RewriteRule ^/(.*)  /munin/cgi/munin-cgi-html/$1 [PT]  
....  
RewriteRule ^/(.*)  /munin/cgi/munin-cgi-graph/$1 [PT]

Note the relative path, as otherwise the ScriptAlias doesn't work.

Problem

I've got a 400+ node munin-1.4.x installation, that I'd like to upgrade to munin-2.x, to take advantage of the CGI based content generation (html & graphs) on the munin master server. I've gone through the official dox ( http://munin-monitoring.org/wiki/CgiHowto2 ), and its simply not working. It only covers a VirtualHost ( http://munin.example.com ), which is not my setup, but I tried to use it as a starting point. Specifically, I want & need http://example.com/munin to be the base URL that dynamically generates the html content listing all the nodes, with links to the individual node pages (which are then dynamically generated/updated when clicked upon). The added catch is that I'm doing this on Fedora(16), and the vast majority of howto's that I've found assume Debian/Ubuntu (or assume non-cgi static content generation via cron). The official Fedora munin package installs the following: - munin base directory is /var/www/html/munin - munin static content direcotry is /var/www/html/munin/static - munin cgi scripts (munin-cg-graph & munin-cg-html) are in /var/www/html/munin/cgi What I've done so far: * set "html_strategy cgi" and "cgiurl_graph /munin/cgi/munin-cgi-html" in /etc/munin/munin.conf * Added the following to /etc/httpd/conf/httpd.conf: ``` # Rewrites RewriteEngine On Alias /static /var/www/html/munin/static Alias /munin /var/www/html/munin # HTML RewriteCond %{REQUEST_URI} !^/static RewriteCond %{REQUEST_URI} .html$ [or] RewriteCond %{REQUEST_URI} =/ RewriteRule ^/(.*) /var/www/html/munin/cgi/munin-cgi-html/$1 [L] # Images # - remove path to munin-cgi-graph, if present RewriteRule ^/munin/cgi/munin-cgi-graph/(.*) /$1 RewriteCond %{REQUEST_URI} !^/static RewriteCond %{REQUEST_URI} .png$ RewriteRule ^/(.*) /var/www/html/munin/cgi/munin-cgi-graph/$1 [L] ScriptAlias /munin/cgi/munin-cgi-graph /var/www/html/munin/cgi/munin-cgi-graph <Location /munin/cgi/munin-cgi-graph> Options +ExecCGI FollowSymLinks <IfModule mod_fcgid.c> SetHandler fcgi-script </IfModule> <IfModule !mod_fcgid.c> SetHandler cgi-script </IfModule> </Location> ScriptAlias /munin/cgi/munin-cgi-html /var/www/html/munin/cgi/munin-cgi-html <Location /munin/cgi/munin-cgi-html> Options +ExecCGI FollowSymLinks <IfModule mod_fcgid.c> SetHandler fcgi-script </IfModule> <IfModule !mod_fcgid.c> SetHandler cgi-script </IfModule> </Location> ``` However, after doing all that (and restarting apache), when I go to http://example.com/munin , I get a 404 error, and in the apache error log I see: ``` File does not exist: /var/www/html/munin/cgi/munin-cgi-html/munin/index.html ``` I'm hoping that i'm just missing something obvious, but right now I'm at a complete loss on what else might need to be adjusted to make this work. thanks.

Original source