Настройка 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 IfModule>
Немного информации о структуре каталогов:
/ apache-data / hack - каталог приложения. (Недоступно для Интернета..)
/ apache-data / hack / www - корень сети. (Где index.php / index.hh..)
index.php Содержание
PHP echo " head>"; echo "Hello World!
"; if (define ('HHVM_VERSION')) echo "Запуск в версии HHVM". HHVM_VERSION; еще эхо "HHVM находится в автономном режиме."; echo " body> html>";?>
(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 } }