Ошибка monitorix 3.4.0: файл 'monitorix.conf.path' не найден
Я запускаю 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 logfile показывает это:
[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-подтверждении тоже в порядке и совпадают с путями в конфигурации 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, кто-нибудь может сказать мне, что здесь не так?
2 ответа
Это Perl CGI monitorix.cgi
просто не может найти свой конфигурационный файл с именем monitorix.conf.path
,
Поскольку вы показываете только фрагмент файла Perl, это только догадки:
- либо нет по умолчанию
monitorix.conf.path
и вы должны были создать один в/usr/share/monitoryx/cgi/
- или Perl CGI ищет его в
/usr/share/monitoryx/
неbase_dir/cgi/
как это объясняется в сообщении об ошибке, которое вы получили при нажатии на кнопку.
Конечно, это все лучшие догадки. Существует вероятность того, что Perl CGI ищет свой файл конфигурации в совершенно другом месте.
Я обнаружил проблему: mod_perl был включен и возился с cgi, чтобы найти файл, расположенный в том же каталоге.
спасибо Микаку из IRC-канала #freenode.net #monitorix за решение этой проблемы!