Apache/mod perl

Материал из Eludia
Перейти к: навигация, поиск

Содержание

Apache/mod perl — исторически первая, родная платформа для Eludia.pm. По соображениям эффективности она не рекомендуется к использованию в чистом виде на серверах с промышленной нагрузкой, однако под UNIX/Linux может с успехом применяться в комплекте с более лёгким сервером для статического содержимого.

Настройка

Установка Apache/mod_perl

Процесс установки детально описан в документации для:

Установка Eludia.pm

Если Вы ещё не установили Eludia.pm, выполните, пожалуйста, действия, описанные в соответствующем разделе.

Подключение WEB-приложения

Каждое WEB-приложение прописывается в глобальной конфигурации Apache как виртуальный хост. Всё, что требуется для подключения — это:

  • включить прослушивание нужного порта (директива Listen);
  • заявить VirtualHost;
  • сослаться на conf/httpd.conf вашего приложения.

Типичный пример фрагмента конфигурации:

Listen 8000
	
<VirtualHost _default_:8000>
  Include " ... /conf/httpd.conf"
</VirtualHost>

генерируется командой create. В зависимости от настройки Apache на данном сервере директивы могут располагаться в одном или разных файлах.

Для mod_perl 2 необходимо отредактировать conf/httpd.conf: там следует заменить скобки

<perl>
 ...
</perl>

на

<Perl > # так, с пробелом
 ...
</Perl>

Остаётся только перезапустить Apache и послать запрос на вновь настроенный хост.

Замечания

mod_perl 1 / Windows

Ни в коем случае не используйте Apache 1.3x / mod_perl 1.x под Windows в качестве рабочей конфигурации. Проблема в том, что в этом случае все запросы обрабатывает ровно 1 perl-интерпретатор. Таким образом, задержка в исполнении одного запроса блокирует обслуживание всех остальных. Это совершенно недопустимо.

mod_perl 1 / UNIX

Под UNIX количество Perl-интерпретаторов совпадает с количеством экземпляров процесса Apache (httpd). Теоретически они используют общие области памяти, что позволяет экономить, однако на практике на это полагаться нельзя, поскольку любая страница может оказаться изменённой.

Так что всегда следует быть готовым к тому, что на каждый httpd child придётся, скажем, по 50 Мб памяти. Если Вы не готовы предоставить Apache более 500 Мб (он ведь на сервере, скорее всего, не один), отсюда получаем ограничение которое необходимо прописать в глобальный httpd.conf:

MaxClients 10

Заметьте: по умолчанию этот параметр установлен в 256. Если у Вас менее 13,5 Гб ОЗУ, это практически гарантирует обвал системы из-за вытеснения ядра в swap — раньше или позже.

Ещё 2 директивы, позволяющие поддерживать объём используемой памяти на низком уровне:

MinSpareServers 1
MaxSpareServers 1

При такой настройке ОЗУ ограничено, однако под большой нагрузкой может начаться перегрев CPU по поводу HTTP-запросов, не требующих mod_perl. Статику вообще лучше обслуживать не Apache, а другим, лёгким сервером.

mod_perl 2

По идее, использование mod_perl 2 должно было бы решить все вышеперечисленные проблемы: на обеих платформах поддерживать множественный пул интерпретаторов, параметры которого:

не связаны с конфигурацией Apache в целом.

К сожалению, в реальности имеют место следующие проблемы, из-за которых Apache 2 / mod_perl 2 нельзя признать оптимальной платформой для Eludia- и вообще Perl-приложений:

  • (вроде пустячок, но тем не менее) error.log невозможно разделить по VirtualHost'ам так, чтобы символы перевода строки не превращались в '\n';
  • некоторые (причём нужные) Perl-модули принципиально несовместимы с multithreaded-средой: в частности, с mpm_winnt;
  • бинарный дистрибутив Apache 2 / mod_perl 2 под Windows самой Apache Software Foundation, увы, заброшен, а использование различных самодельных комплектов осложнено поиском подходящих бинарных Perl-модулей, собранных тем же компилятором и с теми же библиотеками, что сам Apache.

Тем не менее, Apache 2 / mod_perl 2 применяется в нескольких рабочих инсталляциях.

А 25.06.2011 один добрый человек собрал из исходников Apache2 вместе с Perl 5.14 и выложил результат на общедоступный хостинг.

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Разработчику
Администратору
Инструменты