我有一个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),而我发现的绝大多数的howto都假设Debian / Ubuntu(或假设通过cron生成非cgi静态内容)。
官方Fedora munin软件包安装以下内容:
到目前为止我做了什么: *在/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
我希望我只是遗漏了一些显而易见的东西,但是现在我完全不知道还有什么可能需要调整以使其发挥作用。感谢。
答案 0 :(得分:1)
问题在于,如果您在基于“位置”的设置(而不是在VirtualHost中)中使用配置,则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不起作用。
答案 1 :(得分: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>
答案 2 :(得分:0)
确保安装了munin-cgi和依赖项:mod_fcgid。
CentOS 7,没有为位于/etc/httpd/conf.d/munin.conf的文件配置添加特殊参数。
问候。