Подстановочный виртуальный хост с modperl

У меня есть сервер, на котором я хочу запустить несколько подстановочных виртуальных хостов с их собственной средой modperl.

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

В обычной конфигурации vhost я могу сделать следующее...

<VirtualHost *:80>
    ServerName web1.myserver.com

    Define ApplicationRoot /websites/web1

    DocumentRoot ${ApplicationRoot}

    PerlSetEnv PERL_DOC_ROOT ${ApplicationRoot}
    PerlOptions +Parent
    PerlPostConfigRequire /websites/lib/startup.pl
...

Затем мой сценарий startup.pl может использовать переменную среды PERL_DOC_ROOT для динамической настройки пользовательских путей к библиотекам.

Это отлично работает с несколькими разделами vhosts. У каждого из них определен свой собственный @INC, и все разрешается правильно.

Есть ли способ перевести это в конфигурацию vhost с подстановочными знаками. Я бы хотел, чтобы пользователи могли получить доступ к *.myserver.com, и он будет использовать имя хоста, чтобы выяснить, какой documentroot использовать, и запустить startup.pl для определения путей к библиотекам на основе этой папки.

Я знаю, что могу использовать что-то вроде этого...

VirtualDocumentRoot /websites/%1/

для динамической установки корня документа, но если я попытаюсь использовать %1 в любых других объявлениях, это не будет понято. Кроме того, startup.pl должен запускаться при первом запросе сайта, а не при первой загрузке файла конфигурации.

Это вообще возможно? Или мне нужно как-то динамически переписывать файлы конфигурации каждый раз, когда добавляется новый виртуальный каталог.


person user1751825    schedule 12.07.2016    source источник


Ответы (1)


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

person user1751825    schedule 12.07.2016