Настройка HHVM для apache2.2 с модом fastcgi на виртуальном хосте

Я хочу настроить виртуальный хост с HHVM, чтобы опробовать новый язык "Facebook Hack". Я следовал инструкциям на Apache 2.2: https://github.com/facebook/hhvm/wiki/FastCGI

в настоящее время hhvm работает так:

hhvm -ms -vServer.Type = fastcgi -vServer.Port = 9001

И мой конфиг virtualhost:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /home/tijmen/sites/example.com

    php_value engine off

    #<IfModule fastcgi_module>
        Alias /hhvm.fastcgi /home/tijmen/sites/example.com/hhvm.fastcgi
        FastCGIExternalServer /home/tijmen/sites/example.com/hhvm.fastcgi -host 127.0.0.1:9001
        <Directory "/home/tijmen/sites/example.com/">
            <Files "hhvm.fastcgi">
                Order deny,allow
            </Files>
        </Directory>

        RemoveHandler .php

        AddHandler hhvm-hack-extension .hh
        AddHandler hhvm-php-extension .php

        Action hhvm-hack-extension /hhvm.fastcgi virtual
        Action hhvm-php-extension /hhvm.fastcgi virtual
    #</IfModule>

    ErrorLog /home/tijmen/sites/log/example.com-error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel debug

    CustomLog /home/tijmen/sites/log/example.com.log combined


</VirtualHost>

Каталог /home/tijmen/sites/example.com установлен в chmod 777, чтобы обеспечить возможность записи. Это сделает его более безопасным, как только это сработает.

Однако example.com/index.hh (который существует в /home/tijmen/sites/example.com/index.hh) возвращает 404. Нигде в журналах я не могу выяснить, что не так.

Далее, чтобы запустить эту вещь, я хотел бы знать, что это за файл hhvm.fastcgi. Нужно ли создавать его вручную? Это даже физический файл? Возможно, даже каталог?

Я также задал свой вопрос здесь, но проблема закрыта: https://github.com/facebook/hhvm/issues/2137

2 ответа

Решение

В моем случае я должен был изменить RemoveHandler .php в:

<FilesMatch "\.ph(p3?|tml)$">                                                                                                                                            
    SetHandler None                                                                                                                                                      
</FilesMatch>                                                                                                                                                            
<FilesMatch "\.phps$">                                                                                                                                                   
    SetHandler None                                                                                                                                                      
</FilesMatch>

У меня тоже есть эта проблема; Я также использую -host вместо -socket (я не могу найти, где hhvm создает свои файлы носков)...

Относительно вашего вопроса о "/hhvm.fastcgi": это имя псевдонима; думать об этом как о переменной. Вы можете переименовать его так, как захотите. В вашем случае это просто избавляет вас от необходимости использовать "/home/tijmen/sites/example.com/hhvm.fastcgi" несколько раз. Источник: https://httpd.apache.org/docs/2.2/mod/mod_actions.html


(2014-03-23)ОБНОВЛЕНИЕ:

Я думаю, что есть ошибка в HHVM. Мне нужно будет протестировать больше, прежде чем я отправлю его, но я получил приложение для обслуживания файлов *.php без 404.

Я не доволен обходным решением, но вот оно:

Отредактируйте переменную run-as-user в /etc/init.d/hhvm-fastcgi для запуска от имени пользователя root. Строка 30:

# RUN_AS_USER="www-data"
RUN_AS_USER="root"

Для справки вот нижняя часть конфа моего сайта:

 Приложение RemoveHandler /x-httpd-php
    # FastCGIExternalServer /apache-data/hack/.virtual -socket /apache-data/hack/hhvm.sock -pass-header Авторизация -idle-timeout 300
    FastCGIExternalServer /apache-data/hack/.virtual -host 127.0.0.1:9000 -pass-header Авторизация -idle-timeout 300

    AddHandler hhvm-hack-extension .hh
    AddHandler hhvm-php-extension .php Действие hhvm-hack-extension /hhvm_fastcgi виртуальное действие hhvm-php-extension /hhvm_fastcgi виртуальный псевдоним /hhvm_fastcgi /apache-data/hack/.virtual

Немного информации о структуре каталогов:

/ apache-data / hack - каталог приложения. (Недоступно для Интернета..)

/ apache-data / hack / www - корень сети. (Где index.php / index.hh..)

index.php Содержание

";
    echo "Hello World!
"; if (define ('HHVM_VERSION')) echo "Запуск в версии HHVM". HHVM_VERSION; еще эхо "HHVM находится в автономном режиме."; echo "";?>

(2014-03-23) Обновление 2:

Чтобы разобрать HHVM *.hh, вы должны отредактировать файл /etc/hhvm/server.hdf и сказать ему сделать это.

Добавить в /etc/hhvm/server.hdf:

PhpFile {
    Расширения {
        hphp = application/x-hhvm-php
        hh = application/x-hhvm-php
    }   
}
Другие вопросы по тегам