Запуск нескольких приложений Catalyst через Apache - PullRequest
3 голосов
/ 26 марта 2012

У меня есть 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 даже сказано столько же .....

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

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

1 Ответ

6 голосов
/ 27 марта 2012

OK! Я нашел ответ. Вы действительно можете запустить более одного приложения 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, иначе вы получите ошибки «неопределенный символ».

...