LINUX.ORG.RU

Использование Perl для создания web-приложений.

 ,


1

2

Пишу тут один небольшой проектик. На perl'е, как можно догадаться из заголовка. По задумке, основной функционал аккуратно разложен по библиотекам, которые подключаются по мере надобности в конечном приложении. Так, на данный момент реализован демон и консольная утилита для управления им. Хотелось бы ещё привинтить к нему web-интерфейс. Вот тут я как-то пока растерялся. Сперва думал использовать что-нибудь простенькое из cpan, но всяких разных модулей очень много, во-первых, а во-вторых что-то я начитался про то, что тот же mod_perl в апаче память сильно ест со временем, а для очистки надо ещё дополнительные модули тянуть или костыли какие-то городить. После этого стал рыть в сторону фреймворков. У меня проект не сложный и решил остановиться на mojolicious. Даже начал писать, потом обновился и понял, что всё поменялось, новая документация ещё не появилась и придётся разбираться во всех внутренностях mojolicious с нуля.

Собственно, решил спросить, пишет ли кто-нибудь ещё web-приложения на perl и, если да, что для их запуска использует(mod_perl, cgi, отдельно запускаемые фреймворки, ещё что-нибудь)?

Конкретно по моей задаче, от web-морды не требуется ничего особенного: показать то, что возвращают мои библиотечные функции, иногда передать им данные для обработки и записи в базу.

Другие языки не предлагать, переписывать всё мне лень, к тому же меня устраивает на все 100% нынешняя реализация демона и консоли. К тому же других языков помимо perl, php и bash'а я не знаю и знать не хочу пока что. И с другой стороны, если для решения такой задачи понадобится какой-то специализированный софт на сервере для более удобной работы perl'а(например как thin для ruby) - это не проблема, главное, чтобы работало быстро и без глюков.

Mojolicious::Lite во все поля. Доки? На офф. сайте только минимум в виде first steps, общие соображения. На cpan доки адекватные. Могу ещё предложить example: https://github.com/h15/gitty/blob/master/gitty.pl

helios ★★★★★
()
Последнее исправление: helios (всего исправлений: 1)

Пишу на Mojolicious под Perl v5.10.1. Деплоится как связка Apache2 + FastCGI (Mojo::Server::FastCGI). Очень радует этот фреймворк, причем с самой первой версией.

outtaspace ★★★
()

helios, outtaspace.

Я вот что-то начал писать(правда, не на Lite, а на полном), потом на несколько месяцев забросил и потом, когда собрался продолжить, всё это не запустилось после обновления mojolicious(использую не дистрибутивный, а из cpan). Оно, похоже, быстро через версию перескочило. Там такое часто бывает? Т.е. если использовать mojolicious, надо будет остановиться на какой-то текущей версии и дальше не обновлять?

shell-script ★★★★★
() автор топика
Ответ на: комментарий от shell-script

Сейчас у меня версия 3.46, а это значит что последний апдейт был давно (в 2012м). В ветке 3.x было многое сделано для стабилизации кода и пока серьезных багов не обнаружил (в известном смысле, мои проекты не падают).

outtaspace ★★★
()

mod_perl в apache нельзя было использовать от рождения, он врал как сивый мерин (именно врал, а не тёк, проседал и т.д.). Как сейчас, не знаю, но что-то мне подсказывает, что ничего не изменилось, поскольку народ всегда просто переключался на чистый cgi, без существенных потерь в производительности.

ABW ★★★★★
()
Ответ на: комментарий от shell-script

Раз в год kraih выкатывает мажорный релиз, в котором по Mojolicious::Guides::Contributing разрешается ломать совместимость. Что он и делает для того, чтобы не тащить хлам.

Крайняя версия: Вышел Mojolicious 4.0 При переходе 3->4, ЕМНИП, у меня только render_json потребовал внимания. 2->3 - было неприятно удаление хелпера b. Но всё решалось за минуты.

helios ★★★★★
()
Последнее исправление: helios (всего исправлений: 1)
Ответ на: комментарий от helios

Что думаешь о Hypnotoad + nginx?

Полагаю сюрпризов не будет. Гипножаба активно используется с 2.x под нагрузкой (мягкий realtime, ферма воркеров) и замечаний нет.

outtaspace ★★★
()
Последнее исправление: outtaspace (всего исправлений: 1)
Ответ на: комментарий от helios

Понял, буду иметь ввиду. Видимо таки остановлюсь на mojolicious.

shell-script ★★★★★
() автор топика
Ответ на: комментарий от outtaspace

Полагаю сюрпризов не будет. Гипножаба активно используется с 2.x под нагрузкой (мягкий realtime, ферма воркеров) и замечаний нет.

Его и использую. Просто, вдруг ты уже находил «подводные камни». Да и стало интересно, что её не используешь? Простой деплой, prefork...

helios ★★★★★
()

Всем спасибо за подсказки, видимо я просто неудачно попал на смену версий и потому о mojolicious сложилось не очень хорошее впечатление. Буду пробовать по новой и внимательнее читать доки.

shell-script ★★★★★
() автор топика
Ответ на: комментарий от helios

Тоже интересно было бы почитать про опыт использования разных вариантов в реальных условиях.

shell-script ★★★★★
() автор топика

У Mojolicious действительно очень частые релизы. Поэтому если хочется постоянно обновляться и что-бы работало на последней версии нужно следить за changelog'ом: https://github.com/kraih/mojo/blob/master/Changes
Есть deprecation policy, согласно которой фичи объявленные устаревшими еще живут несколько версий выдавая warning. Но между мажорными версиями фичи могут удаляться без объявления устаревшими. Так например при переходе на 4.0 без предупреждения были удалены методы render_* в контроллере, что вызвало волну негодования и неработающие плагины на cpan.
Dancer первой версии выглядит постабильнее в этом плане, хотя менее фичаст.
Дабы не переживать за совместимость можно писать psgi приложение без всяких фреймворков. Это современный стандарт для написания веб-приложений на перле. В русскоязычном журнале про perl есть серия статей посвященных этому вопросу (начиная со второго номера): http://pragmaticperl.com/issues/
Если psgi кажется слишком низкоуровневым, можно взять какой-нибудь микро-фреймворк с cpan, который является оберткой над psgi. Например Web::Simple.

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

Да и стало интересно, что её не используешь?

Есть большой и вонючий ком из унаследованного кода. Соответствует команде из десятка плохих программистов. Все эти перловые CGI-скрипты прибиты гвоздями к апаче+mod_ssl, на этой связки завязана вся аутентификация и авторизация.

Сейчас всерьез думаю как создать в этом проекте точки роста, писать весь новый код под Mojo. Одна из проблем - та самая аутентификация завязанная на ssl и хардварные криптографические ключи: проброс переменных окружения в back-end.

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

Про psgi спасибо, что-то мне он не нагугливался. Почитаю про него.

Но мне mojolicious приглянулся как раз тем, что всё уже готово. И темплейты, и роуты, и гора модулей для всяких нужд(та же авторизация, сессии и прочее). Мне, не программисту, это показалось очень удобно - собрать нужное приложение из модулей как из конструктора с минимумом написания кода.

shell-script ★★★★★
() автор топика
Ответ на: комментарий от Olegymous

У меня под perl 5.10 hypnotoad течёт по памяти.

Тоже была такая проблема. На 5.14 не замечал, а рекомендуют 5.16. Вообще, из-за ряда причин по возможности стараюсь использовать 5.14+ (вложенные eval особенно радуют).

helios ★★★★★
()

юзаю Mojolicious + Hypnotoad + mod_perl + Apache. Пока проблем нет.

bvn13 ★★★★★
()

Конкретно по моей задаче, от web-морды не требуется ничего особенного: показать то, что возвращают мои библиотечные функции, иногда передать им данные для обработки и записи в базу.

Ну и зачем для таких целей фреймворки?

Может use FCGI; будет достаточно?

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

Бред, знаю несколько highload ресурсов в рунете которые работают на связке apache 1.3 + mod_perl, причем работают уже лет 10, ты им про кривой mod_perl расскажи.

bjorn
()
Ответ на: комментарий от quadregus

Дёргать из яваскрипта консольные команды моей утилиты? Или как? По-моему это костыль. Да и не люблю я яваскрипт.

shell-script ★★★★★
() автор топика

Посмотрите программульку Sciptcase. - Это генератор PHP для создания web интерфейсов к базам данных.

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