Perl CGI или CGI :: Fast под Apache 2.2 на Debian Lenny - PullRequest
1 голос
/ 16 декабря 2010

У меня есть 2 разных веб-сервера на машине Debian Lenny.Один работает под управлением FastCGI (TRAC), а другой веб-сервер работает под управлением PHP и некоторые сценарии CGI.Поэтому у меня в настоящее время включены 2 модуля Apache2 (cgi и fcgi) и соответственно настроена 2 vhosts.У меня нет особого интереса к тому, чтобы оба этих модуля работали одновременно.

Поэтому я хочу, чтобы ТОЛЬКО модуль Apache fastcgi работал, поскольку он выглядит более эффективным.

Не могли бы выПожалуйста, подтвердите правильность или правильность следующих оценок?
1- Мне нечего будет делать / изменять для сайта TRAC (уже запущен fcgi)
2- Мне придется настроить другой веб-сервер vhost, чтобы он былустановить с помощью обработчика сценариев fastcgi
3 - мне придется изменить только модули perl с «использовать CGI» на «использовать CGI :: Fast»
4 - я смогу сохранить оставшуюся часть perlсуществующие CGI-скрипты без других изменений
5 - мне не нужно использовать CGI :: Apache, но CGI :: FastCGI (в / в текущий модуль CGI) в скриптах веб-сервера

Надеюсьмоя точка зрения ясна, поскольку все это немного чуждо мне ...

Thx

EDIT :
thx за подсказки Навиду и J-16,
Вот что я сделал, чтобы заставить его работать, если это может помочь другим:

  • гул, установлен CGI :: Fast с CPAN, тогда он работает лучше ..
    В Debian с уже установленным libperl

    perl -MCPAN -e shell
    cpan> install CGI::Fast
    
  • изменено имя файла с *.cgi to * .fcgi,

  • включал цикл fastcgi while, как рекомендовано ниже Naveed,
  • настроить связанный с Apache vhost с правым обработчиком для fastcgi (см. fastcgidoc )
  • включил модуль Apache fastcgi (a2enmod fastcgi) и отключил модуль cgi,
  • проверил файл fastcgi.conf в настройках Apache,
  • перезапустилApache,
  • проверил fastcgi, работающий как подпроцесс Apache (ps -afx),
  • исправил некоторые проблемы со сценариями, уже в .., но вновь появляющиеся при запуске fastcgi, как рекомендуется (обнаружены ошибки)проверив логи Apache),
  • EDIT : адаптировал код загрузки файла, так как первоначальный скрипт больше не работал (до сих пор не понимаю, почему), поэтому мне пришлосьзамените цикл while на такой:

    open(FILE,">$upload_dir/$file_name")
    while ($bytes_count = read($file_query,$buffer,2096)) {
    $size += $bytes_count;
    print FILE $buffer;
    }
    close(FILE);
    
  • готово.

Мир еще не совершенен, но наконец-то работает.

1 Ответ

6 голосов
/ 16 декабря 2010

Вам придется сделать немного больше, чем просто изменить, используйте CGI для использования CGI :: Fast. Убедитесь, что вы обернули свои CGI-скрипты циклом while, поскольку документация гласит: http://p3rl.org/CGI::Fast

use CGI::Fast;
while (CGI::Fast->new()) {
    # The original CGI code goes in here
}
...