2014-09-02 2 views
5

Сегодня утром я начал использовать HHVM в качестве локального сервера по умолчанию. Большинство вещей прекрасны, но у меня все еще есть приложения, которые HHVM еще не полностью поддерживает.Запуск и HHVM и обычного сервера Apache

Вместо того чтобы менять конфигурацию и перезапуск служб, было бы намного проще, если бы я мог просто переключать порты или каталоги.

Мой вопрос: Возможно ли запустить обычный сервер Apache на одном порту (80) и сервер с питанием от HHVM на другом порту (8080)? В качестве альтернативы можно ли запустить HHVM только в определенном каталоге (и его «подкаталогах»)?

В сценарии 1 переключения на применение HHVM будет выглядеть следующим образом:

localhost/my-project/index.php 
    localhost:8080/my-project/index.php 

В сценарии 2 переключение на HHVM приложение будет выглядеть следующим образом:

localhost/my-project/index.php 
    localhost/hhvm/my-project/index.php 

Я бы предположил, что это может быть достигнуто через конфигурационный файл Apache, но я не знаю достаточно о том, как файлы конфигурации работают, чтобы сделать это самостоятельно, пожалуйста, помогите !?


OS: Ubuntu 14,04
Apache Версия: 2.4.7
HHVM Версия: 3.2.0

+1

Вы можете запустить его в режиме [FastCGI] (https://github.com/facebook/hhvm/wiki/fastcgi) вместе с Apache и PHP-FPM. – mario

+0

@mario Спасибо, я думаю, это покажет мне, как сделать сценарий 2. Но если возможно, я бы предпочел сценарий 1; есть идеи для этого ??? –

ответ

6

Чтобы добавить /etc/apache2/ports.conf ...

Listen 8080 

Затем к конфигурации ВХоста (с использованием Localhost в качестве домена, вероятно,/и т.д./apache2/сайтов-доступных/по умолчанию. conf), скопируйте все там и вставьте его прямо внизу, чтобы у вас появился второй экземпляр VirtualHost. Во втором случае измените значение *: 80 на *: 8080, затем добавьте свой ProxyPassMatch, чтобы сказать, что вы хотите использовать HHVM для расширения hh и php-файлов (не забудьте обновить до правильной директории).

Это должно выглядеть примерно так ...

<VirtualHost *:80> 

    ... keep the same ... 

</VirtualHost> 
<VirtualHost *:8080> 

    ... keep the same ... 

    ProxyPassMatch ^/(.+\.(hh|php)(/.*)?)$ fcgi://127.0.0.1:9000/var/www/$1 

</VirtualHost> 

Перейти в /etc/apache2/mods-available/hhvm_proxy_fcgi.conf и закомментируйте, что там. В противном случае все будет направлено на HHVM.

Наконец, перезапустите Apache

sudo service apache2 restart 

Я проверил это быстро на существующем местном сайте, и он перенаправляет обратно 80 из 8080, которые он должен был сделать. Если это не сработает, сообщите мне.

UPDATE: Протестировано немного больше, и похоже, что это должно сработать для вас. После добавления следующего, прыжок между local.site.com/hhvm.php и local.site.com:8080/hhvm.php правильно отразил эхо.

<?php if (defined('HHVM_VERSION')) { 
    echo "golden!"; 
} else { 
    echo "doh..."; 
} 
+0

Отлично! = D (более 15 символов) –

+1

Я хотел бы отметить, что шаг, в котором вы комментируете содержимое '/ etc/apache2/mods-available/hhvm_proxy_fcgi.conf', очень важно, и ** необходимо будет сделать снова, если вы обновите HHVM **. –

1

Да. Вы можете прослушивать Apache как на порту 80, так и на порту 8080 (просто добавить дополнительные конфигурации для прослушивания), а затем добавить виртуальный хост для localhost: 8080, который передает запросы в HHVM через FastCGI.

+0

ОК, я уверен, что включает в себя редактирование одного из файлов конфигурации Apache. Как сказано выше, я не знаю достаточно о файлах конфигурации, чтобы сделать это сам. Можете ли вы добавить код, показывающий, как он будет выглядеть для одного порта для использования hhvm, а другой - нет? –