Массовый виртуальный хостинг с Apache 2.4

Можно только добавить местоположение каталога. Создайте e:\spool, затем установите путь.

3
задан 23 June 2014 в 15:37
4 ответа

После изучения многих направлений с @John Auld (спасибо за ваше время и помощь), я наконец нашел решение. Как я сказал в предыдущем комментарии , он не на 100% идеален, но достаточно хорош для меня.

Для ясности, вот что я хотел иметь в httpd-vhosts.conf:

<VirtualHost *:8080>
    ServerName dev
    ServerAlias *.dev

    VirtualDocumentRoot "/usr/local/var/www/.dev/%-2+"

    RewriteRule ^/(.*\.php(/.*)?)$ "fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/$1" [P]
</VirtualHost>

И вот что я придумал:

<VirtualHost *:8080>
    ServerName dev
    ServerAlias *.dev

    VirtualDocumentRoot "/usr/local/var/www/.dev/%-2/%-3"

    RewriteCond %{SERVER_NAME} (?:([^.]+)\.)?([^.]+)\.dev
    RewriteRule ^/(.*\.php(/.*)?)$ "fcgi://127.0.0.1:9000/usr/local/var/www/.dev/%2/${:%1|www}/$1" [P]
</VirtualHost>

Я использую RewriteCond для захвата частей % {SERVER_NAME} и их повторного использования в RewriteRule .

Существует две группы захвата: субдомен (% 1 ) и домен (% 2 ). Субдомен является необязательным, поэтому я использую синтаксис $ {map: value | default} , чтобы установить значение по умолчанию для субдомена, когда он пуст.

VirtualDocumentRoot имеет собственное значение по умолчанию, когда часть ( % N. M ) недоступен. Как сказано в документации :

Если N или M больше, чем количество доступных частей, интерполируется одиночное подчеркивание.

Вот почему мне пришлось использовать небольшой «трюк», чтобы это сделать работать с необязательным поддоменом:

ln -sfv /path/to/the/project/www /path/to/the/project/_

Если вы думаете, как это сделать config only , оставьте комментарий, и я отредактирую свой ответ с вашим вкладом.

1
ответ дан 3 December 2019 в 06:34

Переменная недоступна в файлах конфигурации apache.

Взгляните на mod_macro, который позволяет использовать переменные в файлах conf.

http: // httpd. apache.org/docs/current/mod/mod_macro.html

0
ответ дан 3 December 2019 в 06:34

Я сделал это с помощью mod_proxy и mod_proxy_fcgi, обратив внимание на раздел « Прокси через обработчик »: https://httpd.apache.org/docs/trunk/mod/mod_proxy_fcgi.html

I мне нужно было запускать PHP 5.6 и PHP 7 на моих локальных сайтах разработчиков, поэтому я установил PHP-FPM как для PHP 5.6, так и для PHP 7 и настроил свою конфигурацию vhosts следующим образом:

<Virtualhost *:80>
    VirtualDocumentRoot "/Volumes/CODE/projects/%1"
    ServerName sites.hack
    ServerAlias *.hack
    UseCanonicalName Off
    <FilesMatch "\.php$">
        Require all granted
        SetHandler proxy:fcgi://127.0.0.1:9056
    </FilesMatch>
</Virtualhost>

<Virtualhost *:80>
    VirtualDocumentRoot "/Volumes/CODE/projects/%1"
    ServerName php7.php
    Serveralias *.php
    UseCanonicalName off
    <FilesMatch "\.php$">
      Require all granted
      SetHandler proxy:fcgi://127.0.0.1:9070
    </FilesMatch>
</Virtualhost>

Как объясняется в разделе «Прокси через обработчик» :

Когда FastCGI настроен таким образом, сервер может вычислить больше всего точный PATH_INFO.

С этой конфигурацией я могу:

Посетить локальный сайт разработчиков http: //example.hack , и он будет извлечен из корневого каталога документа / Volumes / CODE / projects / пример и передать его в мою службу PHP 5.6 PHP-FPM Прокси-сервер SetHandler: fcgi: //127.0.0.1: 9056 .

Посетите локальный сайт разработчиков http: //example.php , и он будет извлечен из того же корневого каталога документов / Volumes / CODE / projects / example , но передаваться в мою службу PHP 7 PHP-FPM SetHandler proxy: fcgi: //127.0.0.1: 9070

У меня еще не было никаких проблем с этим. Это просто и работает.

2
ответ дан 3 December 2019 в 06:34

Следующее сработало у меня для 2.4

UseCanonicalName Off
<VirtualHost *:80>
  ServerName auto.dev
  ServerAlias *.dev
  VirtualDocumentRoot /Users/yourusername/Sites/auto/%1/public

  <Directory ~ "/Users/yourusername/Sites/auto/.*/public">
    Options Indexes FollowSymlinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

Обратите внимание, что я подключаюсь к общей папке в корневой папке

0
ответ дан 3 December 2019 в 06:34

Теги

Похожие вопросы