Запуск нескольких приложений Catalyst через Apache

У меня есть suse box, в котором находятся три приложения Catalyst. В конечном итоге мне нужно запустить все три (что само по себе не проблема, у каждого свой порт) через Apache с mod_perl и SSL. Я успешно дошел до момента запуска одного приложения Catalyst и затем успешного перехода к серверу Catalyst.

В случае, если кому-то нужен БОЛЬШОЙ шаг за шагом, как это сделать, вы можете увидеть это здесь. http://www.catalystframework.org/calendar/2005/7

Я не эксперт по Apache, но проблема в том, что я не знаю, что есть способ запустить несколько приложений Catalyst на одном сервере и иметь Apache, чтобы каким-то образом обслуживать все три.

На странице http://www.catalystframework.org/calendar/2005/7 даже сказано столько же.....

Cons
Невозможно запустить несколько версий одного и того же приложения
Невозможно запустить две разные версии одного и того же приложения в одном и том же экземпляре Apache, поскольку пространства имен будут конфликтовать.

При этом, возможно ли это через несколько экземпляров Apache? Каким-то образом? Может быть, через директивы виртуальных хостов? Я знаю, что, предварительно загрузив приложение Catalyst в Apache, оно будет каждый раз занимать огромную память.

1 ответ

Решение

ХОРОШО! Я нашел ответ. Вы действительно можете запустить более одного приложения Catalyst через Apache/mod_perl, вы просто не можете запустить более одного экземпляра одного и того же приложения. При этом, вот все, что вам нужно сделать, запустить более одного (без использования директив VirtualHost). В вашем default-server.conf

PerlSwitches -I/home/me/catalyst/App1/lib
PerlSwitches -I/home/me/catalyst/App2/lib

PerlModule App1
PerlModule App2

<Location /app1>
        SetHandler modperl
        PerlResponseHandler App1
</Location>

<Location /app2>
        SetHandler modperl
        PerlResponseHandler App2
</Location>

Apache помещает все приложение Catalyst в память и затем обрабатывает его как обработчик. Единственным недостатком является то, что он ест память, имея более одного приложения, как это в памяти. Повышение скорости - это то, что mod_perl будет использовать модули, необходимые для обоих.

Надеюсь, это поможет, если у вас возникла та же проблема. Кроме того, Apache/mod_perl и ваши приложения Catalyst должны быть скомпилированы под одной и той же версией Perl, иначе вы получите ошибки "неопределенный символ".

Другие вопросы по тегам