LINUX.ORG.RU

perl и cgi

 


0

1

Добрый день! Есть не большой web проект написаный на perl. Достался мне по наследству, переодически добавляю в него функционал. Проект использует CGI. Насколько я понял, cgi объевлен устаревшим и исключен из состава перла (5.20). В модуле CGI на cpan.org тоже написано что библиотека является устаревшей и теперь будут исправляться только критические уязвимости. Хочется зарание подготовится к моменту когда perl версии 5.20 и выше массово будет во всех дистрибутивах. Дайте совет на что следует перевести свой проект. гугл советует использовать или mod_perl2 или FCGI. на сервере стоит Apache 2.4


Раз пошла такая пьянка, то лучше сразу переезжать на PSGI и перловый сервер, вроде Starman. http://plackperl.org/

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от ovax

Первый момент. -Пробовал модперл. Вроде бы ничего так. Но пришлось везде прописывать абсолютные пути (подключаемые подпрограммы например). Хотя во всех скриптах относительные пути. Как оставить относительные пути так и не понял.

Второй момент. в скриптах испольуются модули use CGI и use CGI::Cookie. вот с ними как быть? cgi::cookie сделана авторизация на сайте.

fcgi это я так понял, что скрипты будуn в виде приложения (или что то вроде собственного сервера на отдельном порту).

john13
() автор топика

cgi объевлен устаревшим и исключен из состава перла (5.20)

Объявлен CGI, который был заброшенным и кривым. Сейчас его немного саппортят, нашли мейнтейнера. Ошибок там все еще много, причем очень неприятных, таких как битые данные при аплоаде файлов.

Дайте совет на что следует перевести свой проект
не большой web

Я так поступил. В среднем проекте (несколько сотен cgi-скриптов, несколько сотен тысяч строк кода), было много специфики модуля CGI. Также внедрялся новый код, реализованный на Mojolicious. Написал модуль, например NewCGI, который был фасадом для Mojolicious (конкретно над Mojo::Server::CGI), при этом полностью реализовывал интерфейс CGI который мне необходим: param(), upload(), remote_host(), remote_user(). Написал bash-скрипт который поменял в кодовой базе импорты CGI на NewCGI. Проблема решена.

на сервере стоит Apache 2.4

Советую FastCGI. Сколько было крупных проектов на mod_perl (на многие сотни тысяч строк кода), столько проблем.

Советую все новое переносить на Mojolicious, и деплоить как FastCGI или PSGI.

outtaspace ★★★
()

mod_perl2
Apache 2.4

Так в чём вопрос?

Shadow ★★★★★
()
Ответ на: комментарий от annulen

Посмотрел модули PSGI и FCGI на cpan.org. что то они давненько необновлялись. Создается впечатление что тоже не очень живые. Хотя FCGI заинтересовал, так как переделок минимум (на первый взгляд)

john13
() автор топика
Ответ на: комментарий от john13

Нашел такую статью https://proadminz.ru/nginx-i-perl-fastcgi-v-debian-6/ . Такой вопрос, если следовать этой статье, то мне надо чуть-чуть переделать скрипты? взято с cpan.org:

use FCGI;
 
my $request = FCGI::Request();
 
while($request->Accept() >= 0) {
 тут моя программа  
}

john13
() автор топика
Ответ на: комментарий от annulen

Почитал про Plack, вещь весьма интересная. Только вот при беглом знакомстве не полнял, сильно ли много переписывать прийдется. На родном языке только обзоры возможностей нашел. Примеры работ мне не попались. Где можно прочитать про этот модуль на русском? Особо интересны сравнительные обзоры, из разряда вот так код выглядет на CGI, а вот так на PSGI

john13
() автор топика
Ответ на: комментарий от annulen

CGI::PSGI - видел, но как то дата последнего релиза пугает. А за первую ссылку спасибо, шикарная статья. Буду осваивать.

john13
() автор топика
Ответ на: комментарий от ovax

Еще бы либа нормальная была. libfcgi словно школьних писал.

Нереентрантные функции принимают стримы (самописные), Аналогичные реентрантные - принимают непрозрачный объект, содержащий эти стримы.

В функцию FCGX_Accept засунули создание сокета. Поэтому передать твоему FCGI-серверу сокет через stdin не получится - а это как-бы стандарт.

Про асинхронность вообще молчу. Все фкункции блокирующие

makoven ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.