7

我有一个 400+ 节点的 munin-1.4.x 安装,我想升级到 munin-2.x,以利用 munin 主服务器上基于 CGI 的内容生成(html 和图形)。我已经浏览了官方的 dox ( http://munin-monitoring.org/wiki/CgiHowto2 ),但它根本不起作用。它只涵盖了一个 VirtualHost ( http://munin.example.com ),这不是我的设置,但我尝试使用它作为起点。

具体来说,我希望 & 需要http://example.com/munin成为动态生成列出所有节点的 html 内容的基本 URL,并带有指向各个节点页面的链接(然后在单击时动态生成/更新) . 增加的问题是我在 Fedora(16) 上执行此操作,并且我发现的绝大多数操作指南都假设 Debian/Ubuntu(或假设通过 cron 生成非 cgi 静态内容)。

官方的 Fedora munin 软件包安装了以下内容:

  • munin 基本目录是 /var/www/html/munin
  • munin 静态内容目录是 /var/www/html/munin/static
  • munin cgi 脚本 (munin-cg-graph & munin-cg-html) 在 /var/www/html/munin/cgi

到目前为止我所做的: * 在 /etc/munin/munin.conf 中设置“html_strategy cgi”和“cgiurl_graph /munin/cgi/munin-cgi-html” * 将以下内容添加到 /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>

但是,在完成所有这些(并重新启动 apache)之后,当我转到http://example.com/munin时,我收到 404 错误,并且在 apache 错误日志中我看到:

File does not exist: /var/www/html/munin/cgi/munin-cgi-html/munin/index.html

我希望我只是遗漏了一些明显的东西,但现在我完全不知道还有什么可能需要调整才能完成这项工作。谢谢。

4

3 回答 3

1

问题是,如果您在基于“位置”的设置(而不是在虚拟主机中)中使用配置,则 RewriteRule 的标志是错误的。

根据mod_rewrite文档:

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

但是,在您的情况下,您希望传递 /munin/cgi/munin-cgi-html 以便 ScriptAlias 实际触发。因此:

 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

如果你改变你的规则来阅读

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

请注意相对路径,否则 ScriptAlias 不起作用。

于 2013-02-07T15:30:53.077 回答
1

我遇到了完全相同的问题,我挣扎了一段时间,但最终我想出了以下配置,它应该完全符合您的要求。

我的系统是 Ubuntu Server 12.10。由于某些原因,我的静态文件位于 /var/cache/munin/www,我不确定这是 Ubuntu 上的标准还是我最近从 Ubuntu 12.04 升级造成的。

    RewriteEngine On

    # HTML
    RewriteRule ^/munin/(.*\.html)?$ /munin/munin-cgi/munin-cgi-html/$1 [PT]

    # Images
    RewriteRule ^/munin/munin-cgi/munin-cgi-graph/(.*) /munin/$1
    RewriteCond %{REQUEST_URI} !^/static
    RewriteRule ^/munin/(.*.png)$ /munin/munin-cgi/munin-cgi-graph/$1 [L,PT]

    <Directory /var/cache/munin/www/>
            Order deny,allow
            Allow from all
    </Directory>

    # Ensure we can run (fast)cgi scripts
    ScriptAlias /munin/munin-cgi/munin-cgi-graph /usr/lib/cgi-bin/munin-cgi-graph
    <Location /munin/munin-cgi/munin-cgi-graph>
            Options +ExecCGI
            SetHandler fcgid-script
            Allow from all
    </Location>

    ScriptAlias /munin/munin-cgi/munin-cgi-html /usr/lib/cgi-bin/munin-cgi-html
    <Location /munin/munin-cgi/munin-cgi-html>
            Options +ExecCGI
            SetHandler fcgid-script
            Allow from all
    </Location>
于 2013-03-27T16:12:22.540 回答
0

确保安装了 munin-cgi 和依赖项:mod_fcgid。

CentOS 7,没有特殊参数添加到位于 /etc/httpd/conf.d/munin.conf 的文件配置中。

问候。

于 2015-03-11T22:07:21.120 回答