Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает FCGI + nginx, FreeBSD 
V
    Опции темы
tishaishii
Дата 18.7.2013, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: 4
Всего: 8



daemon.pl:
Код
#!/usr/bin/perl

use strict ;
use warnings ;
use POSIX ;
use CGI::Stateless ;
use CGI ;
use FCGI ;
use FCGI::ProcManager::Dynamic ;
use Data::Dumper ;
use constant 'FIFO'        => '/var/run/www.host.ru' ;
use constant 'UNAME'    => 'www' ;
use constant 'CHARSET'    => 'utf8' ;

my ( undef( ) , undef( ) , $uid , $gid ) = getpwnam( &UNAME( ) ) ;

my $pm = FCGI::ProcManager::Dynamic->new( {
    'n_processes'    => 0x8 ,
    'min_nproc'        => 0x8 ,
    'max_nproc'        => 0x20 ,
    'delta_nproc'    => 0x4 ,
    'delta_time'    => 0x3c ,
    'max_requests'    => 0x12c ,
} ) ;
my $socket = &FCGI::OpenSocket( &FIFO( ) , 5 ) or die ( $! ) ;
my $fcgi = &FCGI::Request( \*STDIN , \*STDOUT , \*STDERR , \%ENV , $socket ) ;

exit( 0 ) if fork( ) ;

&POSIX::mkfifo( &FIFO( ) , 0700 ) ;
&POSIX::chown( $uid , undef( ) , &FIFO( ) ) ;
&POSIX::setsid( ) ;
&POSIX::setuid( $uid ) ;

$pm->pm_manage( ) ;

my $count = 0 ;
while(
    ( $pm->pm_loop( ) ) &&
    ( $fcgi->Accept( ) >= 0 )
) {
    $pm->pm_pre_dispatch( ) ;

    print( << "." ) ;
Content-Type: text/html
<h1>hello</h1>
$count
<hr>
.
=end
    print( "$_ = $ENV{$_}<br>\n" ) foreach sort keys %ENV ;
    print( "<hr>\n" ) ;
    my $cgi = CGI->new( ) ;
    print( $_ , " = " , $cgi->param( $_ ) , "<br>\n" ) foreach sort $cgi->param( ) ;
=cut
    $count ++ ;
    $pm->pm_post_dispatch( ) ;
}
&FCGI::CloseSocket( $socket ) ;


Конфигурация nginx:
Код
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8001;
        server_name  localhost;
        location /test {
                include         fastcgi_params;
                fastcgi_pass    unix://var/run/www.host.ru;
        }


При запросе http://www.host.ru:8001/test?test=x выводится страница с ошибкой сервера nginx. А в логах появляется такое сообщение:
Код

2013/07/18 14:16:52 [error] 65528#0: *17 upstream prematurely closed FastCGI stdout while reading response header from upstream, client: 89.207.91.96, server: localhost, request: "GET /test?test=x HTTP/1.1", upstream: "fastcgi://unix://var/run/www.host.ru:", host: "www.host.ru:8001"


Что ему сделать, чтобы заработало?
PM MAIL ICQ Skype   Вверх
arto
Дата 18.7.2013, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



Content-Type не отделе пустой строкой, похоже.
PM MAIL ICQ   Вверх
tishaishii
Дата 18.7.2013, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: 4
Всего: 8



Да. Спасибо.
Не ожидал, что из-за этого может прерываться соединение.
PM MAIL ICQ Skype   Вверх
arto
Дата 18.7.2013, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



ответ должен соответствовать CGI протоколу.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0448 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.