Какая система лучше всего подходит для установки веб-приложения на Perl? - PullRequest
11 голосов
/ 27 сентября 2008

Кажется, что большинство инсталляторов для Perl сосредоточены вокруг установки модулей Perl, а не приложений. Такие вещи, как ExtUtils :: MakeMaker и Module :: Build, очень хорошо подходят для модулей, но требуют дополнительной работы для веб-приложений.

В идеале было бы неплохо иметь возможность сделать следующее после извлечения источника из хранилища:

  • Обнаружены недостающие зависимости
  • Загрузка и установка зависимостей из CPAN
  • Запустите команду для «Построения» источника в конечное состояние (выполните любой анализ или настройку источника, необходимые для локальной среды).
  • Запустите команду для установки встроенных файлов в соответствующие места. Не только модули perl, но и такие вещи, как файлы шаблонов (.tt) и CGI-скрипты, JS и файлы изображений, которые должны быть доступны через Интернет.
  • Убедитесь, что для установленных файлов установлены правильные разрешения (и контекст SELinux, если необходимо).

Сейчас у нас есть система, основанная на Module :: Build , которая делает большую часть этого. Работу выполнил мой коллега, который в то время учился использовать Module :: Build , и мы хотели бы получить несколько советов по обобщению нашего решения, так как сейчас оно довольно специфично для конкретного приложения. , В частности, наша система требует, чтобы мы устанавливали зависимости вручную (хотя она обнаруживает их).

Есть ли какая-то конкретная система, которую вы использовали, которая была особенно успешной? Вам нужно написать установщик, основанный на Module :: Build или ExtUtils :: MakeMaker , который является специфическим для вашего приложения, или есть что-то более общее?

РЕДАКТИРОВАТЬ: Чтобы ответить на вопросы Брайана ниже:

  • Мы можем войти в машины
  • У нас нет корневого доступа к машинам
  • Машины - все (якобы) идентичные сборки RHEL5 с включенным SELinux
  • В настоящее время люди, устанавливающие машины, являются только программистами из нашей группы, и наш источник не доступен для широкой публики. Тем не менее, вполне возможно, что наш источник может быть в конечном итоге установлен на чьих-либо машинах в нашей организации и установлен их программистами или системными специалистами.
  • Мы устанавливаем, извлекая из хранилища, хотя мы хотели бы иметь возможность использовать распределенный архив (см. Выше).

Ответы [ 4 ]

6 голосов
/ 27 сентября 2008

Ответ, предполагающий, что RPM определенно хороший. Использование менеджера пакетов вашей системы определенно может сделать вашу жизнь проще. Тем не менее, это может означать, что вам также нужно упаковать кучу других модулей Perl.

Вы также можете взглянуть на Shipwright . Это инструмент на основе Perl для упаковки приложения и всех его зависимостей от модуля Perl. Пока еще рано, но выглядит многообещающе.

Что касается установки зависимостей, не составит труда просто упаковать несколько tar-архивов и затем установить их на основе Module :: Build. Вы должны взглянуть на pip , что делает установку модуля из архива довольно простым. Вы можете упаковать это в свою кодовую базу и просто вызвать ее из собственного установщика, чтобы обработать ошибки.

Я задаюсь вопросом, является ли использование CPAN хорошей идеей. Оболочка CPAN всегда выбирает последнюю версию дистрибутива, а не конкретную версию. Если вы заинтересованы в обеспечении повторяющихся установок, это не тот инструмент.

6 голосов
/ 27 сентября 2008

Каковы ваши ограничения для установки веб-приложений? Можете ли вы войти в машину? Все машины работают одинаково? Люди, устанавливающие сотрудников веб-приложений, или случайные люди из широкой публики? Люди устанавливают сисадминов, программистов, веб-менеджеров или что-то еще? Вы устанавливаете распространяемый архив или извлекаете из системы контроля версий?

Для большинства моих работ, в которых участвуют системные администраторы, знакомые с установкой Perl в управляющих средах, я просто использую MakeMaker . Легко заставить его делать все, что вы перечислили, если вы немного знаете MakeMaker. Если вы хотите узнать больше об этом, задайте еще один вопрос. ;) Module :: Build такой же простой, и путь, если вам не нравится использование MakeMaker.

Module::Build будет хорошим способом справиться с множеством различных ситуаций, если люди будут достаточно осведомлены о командной строке и установке программного обеспечения. С Module::Build вы будете иметь большую гибкость, но и немного больше работы. И инструмент cpan (который поставляется с Perl) может устанавливать из текущего каталога и обрабатывать зависимости для вас. Просто скажите, чтобы установить текущий каталог:

 $ cpan .

Если вам нужно установить только на одной платформе, вам, вероятно, будет проще создать пакет в собственном формате. Вы могли бы даже Module::Build сделать этот пакет для вас, чтобы у разработчиков была гибкость Module::Build, но установщикам было проще простого процесса. Использование Module::Build также означает, что вы можете создавать разные пакеты для разных платформ из одного инструмента сборки.

Если люди, устанавливающие веб-приложение, действительно не имеют представления о командной строке, CPAN и других вещах, вы, вероятно, захотите использовать упаковщик и установщик, которые их не пугают или заставляют задуматься о том, что происходит. и может автоматически сообщать вам о проблемах автоматически.

Как указывает Дейв, использование реального зеркала CPAN всегда дает вам самую последнюю версию модуля, но вы также можете создать свое собственное «поддельное» зеркало CPAN с точным распределением, которое вам нужно, и установить обычные инструменты CPAN из этого , Для наших клиентов мы делаем «CPAN на CD» (хотя флэш-накопители и сейчас хороши). С помощью простого скрипта «запусти меня» все устанавливается именно в тех версиях, которые им нужны. Посмотрите, например, мой http://www.slideshare.net/brian_d_foy/mycpan-lapm-september-2007">Making мой собственный доклад CPAN, если вы заинтересованы в этом. Опять же, рассмотрите аудиторию, когда вы думаете об этом. Это не то, что вы подаете широкой публике.

Удачи,:)

3 голосов
/ 27 сентября 2008

Я бы порекомендовал серьезно подумать о такой системе пакетов, как RPM. Даже если вы работаете в Windows, я бы выбрал RPM и cygwin для установки. Вы даже можете настроить репозиторий yum или apt для доставки пакетов на удаленные системы.

Если вы ищете общий установщик для клиентов, использующих любое количество операционных систем и дистрибутивов, то проблема становится намного сложнее.

2 голосов
/ 29 сентября 2008

Взгляните на PAR .

Джонатан Рокуэй (Jonathan Rockway) в качестве небольшого раздела об использовании этого с Катализатором в своей книге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...