Страница 1 из 1

Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-11-26 12:10:03
OSBoy
Как заставить lighttpd выполнять cgi скрипты?

Lighttpd настроен с fastcgi

Re: Lighttpd и cgi скрипты

Добавлено: 2009-11-26 12:39:17
thefree

Код: Выделить всё

cgi.assign                 = ( ".pl"  => "/usr/bin/perl",
                               ".cgi" => "/usr/bin/perl",
                               ".php" => "/usr/local/bin/php-cgi" )

Re: Lighttpd и cgi скрипты мониторинга apcupsd

Добавлено: 2009-11-26 19:26:04
OSBoy
Не пойму! Я, собственно, хочу прикрутить вэб-морду к apcupsd, как описано тут.
Прописал в lighttpd.conf:

Код: Выделить всё

server.modules              = (
#                               "mod_fastcgi",
                                "mod_cgi",
 )

static-file.exclude-extensions = ( ".cgi", ".fcgi", ".php", ".rb", "~", ".inc", ".pl", ".yml" )

#fastcgi.server                 = ( ".php" =>
#                                  ( "localhost" =>
#                                   (
#                                   "socket" => "/tmp/php-fastcgi.socket",
#                                   "bin-path" => "/usr/local/bin/php-cgi"
#                                   )
#                                  )
#                                 )

cgi.assign                      = ( ".pl"  => "/usr/bin/perl",
                                    ".cgi" => "/usr/bin/perl",
                                    ".php" => "/usr/local/bin/php-cgi"
                                  )
Далее пробовал:
- делать линк:

Код: Выделить всё

/usr/local/www/apcupsd -> /usr/local/etc/apcupsd
- делать виртуальную директорию средствами lighttpd типа:

Код: Выделить всё

alias.url  = ( "/apcupsd" => "/usr/local/etc/apcupsd" )
- создавать вручную диру /usr/local/www/apcupsd и копировать в неё cgi, hosts.conf и т.д. из /usr/local/etc/apcupsd.

В итоге при попытке открыть в браузере http://your-site/cgi-bin/multimon.cgi во всех случаях получаю "500 - Internal Server Error"! Кто-нибудь подскажет, как это победить?

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-11-27 11:51:59
skeletor
Вот как я делал http://skeletor.ho.ua/index.php?name=ar ... &cat=7&p=2 . Может тебе поможет.

Re: Lighttpd и cgi скрипты мониторинга apcupsd

Добавлено: 2009-11-27 13:37:04
thefree
OSBoy писал(а):В итоге при попытке открыть в браузере http://your-site/cgi-bin/multimon.cgi во всех случаях получаю "500 - Internal Server Error"! Кто-нибудь подскажет, как это победить?
Покажи лог lighttpd error

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-11-27 17:30:14
OSBoy
tail -f /var/log/lighttpd.error.log
2009-11-27 17:26:22: (mod_cgi.c.1279) cleaning up CGI: process died with signal 11
2009-11-27 17:26:22: (mod_cgi.c.1279) cleaning up CGI: process died with signal 11
2009-11-27 17:26:23: (mod_cgi.c.1279) cleaning up CGI: process died with signal 11
2009-11-27 17:26:24: (mod_cgi.c.587) cgi died, pid: 84378
2009-11-27 17:26:24: (mod_cgi.c.587) cgi died, pid: 84379
2009-11-27 17:26:24: (mod_cgi.c.587) cgi died, pid: 84380
2009-11-27 17:26:25: (mod_cgi.c.587) cgi died, pid: 84381
2009-11-27 17:26:25: (mod_cgi.c.587) cgi died, pid: 84382
2009-11-27 17:26:25: (mod_cgi.c.587) cgi died, pid: 84383
2009-11-27 17:26:25: (mod_cgi.c.587) cgi died, pid: 84384
2009-11-27 17:26:27: (mod_cgi.c.587) cgi died, pid: 84385
Вот, но это выводится, пока работает phpsysinfo. При обращении к cgi скриптам apcupsd в lighttpd.error.log ничего не пишется.

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-11-27 20:18:04
OSBoy
Вот попробовал ещё сделать так:

Код: Выделить всё

server.modules              = (
....
                                "mod_fastcgi",
#                               "mod_cgi",
....
)

static-file.exclude-extensions = ( ".cgi", ".fcgi", ".php", ".rb", "~", ".inc", ".pl", ".yml" )

fastcgi.server                  = ( ".php" =>
                                   ( "localhost" =>
                                    (
                                    "socket" => "/tmp/php-fastcgi.socket",
                                    "bin-path" => "/usr/local/bin/php-cgi"
                                    )
                                   ),
                                    ".cgi" =>
                                   ( "localhost" =>
                                    (
                                    "host" => "127.0.0.1",
                                    "port" => 9000
                                    )
                                   )
                                  )


#cgi.assign                     = ( ".pl"  => "/usr/bin/perl",
#                                   ".cgi" => "/usr/bin/perl",
#                                   ".php" => "/usr/local/bin/php-cgi"
#                                 )
При этом, при обращении к cgi скрипту в лог пишется:

Код: Выделить всё

2009-11-27 20:16:58: (mod_fastcgi.c.1742) connect failed: Connection refused on tcp:127.0.0.1:9000 
2009-11-27 20:16:58: (mod_fastcgi.c.2943) backend died; we'll disable it for 5 seconds and send the request to another backend instead: reconnects: 0 load: 1 
2009-11-27 20:17:04: (mod_fastcgi.c.2756) fcgi-server re-enabled: tcp:127.0.0.1:9000 

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-12-04 17:02:00
thefree
запустите плиз

Код: Выделить всё

#!/usr/bin/perl -w

use strict;
print "Content-type: text/html\n\n";
print "oki";

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-12-04 17:22:31
OSBoy
thefree писал(а):запустите плиз

Код: Выделить всё

#!/usr/bin/perl -w

use strict;
print "Content-type: text/html\n\n";
print "oki";
И??

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-12-05 11:34:06
thefree
1. показывает, что на страници, сохраните только как test.cgi
2. что в логах.

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-12-06 17:16:37
OSBoy
То же самое:

Код: Выделить всё

tail -f /var/log/lighttpd.error.log
2009-12-06 16:59:53: (mod_fastcgi.c.1742) connect failed: Connection refused on tcp:127.0.0.1:9000 
2009-12-06 16:59:53: (mod_fastcgi.c.2943) backend died; we'll disable it for 5 seconds and send the request to another backend instead: reconnects: 0 load: 1 
2009-12-06 16:59:59: (mod_fastcgi.c.2756) fcgi-server re-enabled: tcp:127.0.0.1:9000 
и 500 - Internal Server Error

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-12-07 0:10:20
thefree
начнем с первого вопроса FCGI модуль для perl стоит?

Код: Выделить всё

fastcgi.server = (
".pl" =>
  ( "localhost" =>
   (
     "socket" => "/tmp/perl-fastcgi.socket",
     "bin-path" => "/usr/bin/perl"
  )
 )
)
этот код будет правильнее
и попробуйте запустить этот код, только сохраните с расширением pl

Код: Выделить всё

#!/usr/bin/perl

use strict;
use FCGI;
 
while( FCGI::accept() >= 0 )
{
    print( "Content-Type: text/plain", "\n\n" );
    print( "Hello World in Perl", "\n" );
}

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-12-09 12:15:39
OSBoy
thefree писал(а):начнем с первого вопроса FCGI модуль для perl стоит?
Вот что получилось:

Код: Выделить всё

2009-12-09 12:14:22: (log.c.172) server started 
2009-12-09 12:14:22: (mod_fastcgi.c.1087) the fastcgi-backend /usr/bin/perl failed to start: 
2009-12-09 12:14:22: (mod_fastcgi.c.1091) child exited with status 0 /usr/bin/perl 
2009-12-09 12:14:22: (mod_fastcgi.c.1094) If you're trying to run your app as a FastCGI backend, make sure you're using the FastCGI-enabled version.
If this is PHP on Gentoo, add 'fastcgi' to the USE flags. 
2009-12-09 12:14:22: (mod_fastcgi.c.1398) [ERROR]: spawning fcgi failed. 
2009-12-09 12:14:22: (server.c.928) Configuration of plugins failed. Going down. 
Я так понимаю, что не стоит, так?
Где его искать в портах или как ставить?
/usr/ports/www/fcgi - это не то, что мне нужно?

Перл стоит так:

Код: Выделить всё

Options for perl 5.8.9_3 
[ ] DEBUGGING      Build with debugging support
[ ] GDBM           Build GDBM_File extension
[X] PERL_MALLOC    Use Perl malloc
[X] PERL_64BITINT  Use 64 bit integers (on i386)
[ ] THREADS        Build threaded perl
[ ] SUIDPERL       Build set-user-id suidperl binary 
[ ] SITECUSTOMIZE  Run-time customization of @INC
[X] USE_PERL       Rewrite links in /usr/bin

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-12-09 17:33:05
thefree
lighttpd вы должны были собрать с поддержкой spawn-fcgi (/usr/ports/www/spawn-fcgi)

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-12-09 20:04:04
OSBoy
thefree писал(а):lighttpd вы должны были собрать с поддержкой spawn-fcgi (/usr/ports/www/spawn-fcgi)
Собрал - эффекта нет, в логе тоже самое. И вообще, причём тут spawn-fcgi ?
Вот вычитал, что модуль FCGI для перла устанавливается через cpan или из портов, только вот установил я его, после этого ещё какие либо телодвижения требуются?

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-12-10 9:25:51
thefree
/usr/ports/www/p5-FastCGI вот это то что вам нужно ... и вот это вам то же нужно
/usr/ports/www/spawn-fcgi т.к. запускай придется через spawn-fcgi (как построена в apcupsd хз)
почитать можно тут
http://www.lissyara.su/articles/freebsd ... pawn-fcgi/
у меня же сделано вот так

Код: Выделить всё

fastcgi.server             = ( ".fpl" =>
                               ( "localhost" =>
                                (
                                 "host" => "localhost",
                                 "port" => 9090
                                )
                               )
                             )
вот сам скрипт

Код: Выделить всё

#!/usr/bin/perl -w

use strict;
use FCGI;
use CGI;

my $socket = FCGI::OpenSocket(":9090", 5);
my $request = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV, $socket);
my $c = 0;
while($request->Accept() >= 0) {
        $c++;
        print "Content-type: text/plain\n\n";
        print "Hello World in Perl<br>\n";
        print "$_ = $ENV{$_}<br>\n" foreach sort keys %ENV;
        print "<hr>\n";
        my $query = CGI->new();
        print "$_ = ", $query->param($_), "<br>\n" foreach sort $query->param();
}
FCGI::CloseSocket($socket);
Посмотреть можно вот тут _http://test.thefree.ru/test.fpl

upd
skeletor все выше же описал как запускать ... прикрути к lighttpd нет проблем.

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-12-10 13:17:35
OSBoy
Ни фига не получается, в лучшем случае содержимое самого кода выдаёт!

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-12-10 13:31:31
thefree
фантастика ...
Честное слово, привел же рабочий код.

upd: выполнили perl test.pl & ?

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-12-10 19:04:37
OSBoy
Блин, у товарища выше всё на nginx ориентировано, а во всех доках по lighttpd всё расписано только про php!
Из всего этого у меня уже полная каша в голове! :st:

Итак, сейчас у меня имеется следующее:
lighttpd пересобрал с поддержкой spawn-fcgi;
установил из портов /usr/ports/www/p5-FastCGI;
В lighttpd.conf следующее:

Код: Выделить всё

fastcgi.debug   = "1"
fastcgi.server            = ( ".pl" =>
                                   ( "localhost" =>
                                    (
                                    "host" => "127.0.0.1",
                                    "port" => 9000
                                    )
                                   )
                                  )
Сервер стартует нормально, без ошибок.
При обращении к test.pl (тот, что вы дали выше) имеем: 503 - Service Not Available и ругань в логе:

Код: Выделить всё

2009-12-10 18:55:17: (mod_fastcgi.c.1734) connect failed: Connection refused on tcp:127.0.0.1:9000 
2009-12-10 18:55:17: (mod_fastcgi.c.455) backend disabled for 1 seconds 
2009-12-10 18:55:17: (mod_fastcgi.c.3024) backend died; we'll disable it for 1 seconds and send the request to another backend instead: reconnects: 0 load: 1 
2009-12-10 18:55:19: (mod_fastcgi.c.2851) fcgi-server re-enabled: tcp:127.0.0.1:9000 
Что не удивительно, т.к. коннектиться по 9000 порту, как я понимаю, собственно не к чему.
И ещё я так и не понял, за каким всё таки нужен spawn-fcgi?
Я ради интереса попробовал стартануть: /usr/local/etc/rc.d/spawn-fcgi start
При этом запрос к test.pl вывыл содержимое его кода...

Вопрос теперь, что надо делать дальше?
Строка "Для Perl вы должны установить FCGI модуль с CPAN." в доке к lighttpd ну просто шикарна! Мать её! :%)

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-12-10 22:41:52
thefree
какая разница nigx или lighttpd они оба front-end
ссылку на apcupsd откуда ставить завтра думаю заведем ...

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2009-12-11 0:55:59
OSBoy

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2010-06-22 10:35:14
d15b200
это ELF файлы, http://osdir.com/ml/web.lighttpd/2005-01/msg00144.html
просто тестом сделал

Код: Выделить всё

#### CGI module
cgi.assign                 = ( ".pl"  => "",
                               ".cgi" => "",
                               "multimon.cgi" => "" )
и он запустился.
Заметь если смотреть файл (F4), то видно, что он не скрипт а исполняемый!

Код: Выделить всё

svr# /usr/bin/perl /usr/local/www/apc/multimon.cgi
Unrecognized character \x7F in column 1 at /usr/local/www/apc/multimon.cgi line 1.
svr#

Re: Lighttpd и cgi скрипты (мониторинга apcupsd)

Добавлено: 2010-06-23 10:30:54
x6e6564
Примерно делал так:

Код: Выделить всё

alias.url += ( "/apcupsd/" => "/usr/local/etc/apcupsd/cgi/" )

$HTTP["url"] =~ "^/apcupsd/" {
        cgi.assign = ( "" => "" )
}