Я бегаю Monitorix на CentOS с использованием моего сервера apache (в отличие от встроенного сервера) со следующим дополнением к виртуальному хосту:
Alias /monitorix /usr/share/monitorix
<Directory /usr/share/monitorix>
Options -Indexes +FollowSymLinks
Order allow,deny
Allow from all
AllowOverride All
</Directory>
<Directory /usr/share/monitorix/cgi>
AddHandler cgi-script .cgi
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI +FollowSymLinks
Allow from all
AllowOverride All
</Directory>
Далее следующий конфиг для самого monitorix:
base_dir = /usr/share/monitorix/
base_lib = /usr/lib/monitorix/
base_url = /monitorix
base_cgi = /monitorix/cgi
когда я открываю URL http://domain.com/monitorix, У меня интерфейс HTML правильно отображает Monitorix версии v3.4.0. поэтому конфигурация httpd, похоже, работает нормально.
когда я нажимаю кнопку [ОК], я получаю такую ошибку:
FATAL: Monitorix не может продолжить работу!
Файл "monitorix.conf.path" не найден.
Убедитесь, что опция base_dir настроена правильно и этот CGI (monitorix.cgi) находится в каталоге base_dir / cgi /.
И не забудьте перезапустить Monitorix, чтобы изменения вступили в силу!
мой файл журнала http показывает это:
[Fri Mar 28 10:26:01 2014] [error] FATAL: File 'monitorix.conf.path' was not found! at /usr/share/monitorix/cgi/monitorix.cgi line 210.\n
что говорит мне, что CGI тоже работает нормально. Пути в httpd confirmg также кажутся правильными, и соответствующие пути в конфигурации monitorix также кажутся правильными.
Но почему-то путь не в порядке. Я пробовал base_dir с косой чертой и без нее, но это не помогло.
файл /usr/share/monitorix/cgi/monitorix.cgi перед строкой 210 пытается
open(IN, "< monitorix.conf.path");
my $config_path = <IN>;
chomp($config_path);
close(IN);
файл /usr/share/monitorix/cgi/monitorix.conf.path также существует.
Я не очень хорошо знаю PERL, кто-нибудь может мне сказать, что здесь не так?
Это Perl CGI monitorix.cgi
просто не может найти свой файл конфигурации с именем monitorix.conf.path
.
Поскольку вы показываете только фрагмент файла Perl, это только догадки:
monitorix.conf.path
и вам пришлось создать его в /usr/share/monitoryx/cgi/
/usr/share/monitoryx/
не base_dir/cgi/
как это объясняется в сообщении об ошибке, которое вы получили при нажатии на кнопку.Конечно, это все догадки. По-прежнему существует вероятность, что Perl CGI ищет свой файл конфигурации в совершенно другом месте.
Я обнаружил проблему: был включен mod_perl, и я возился с cgi, чтобы найти файл, расположенный в том же каталоге.
Спасибо Mikaku из IRC-канала # freenode.net #monitorix за решение этой проблемы!