Запуск нескольких приложений 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, иначе вы получите ошибки "неопределенный символ".