Я хочу настроить виртуальный хост с HHVM, чтобы опробовать новый язык «Facebook Hack». Я следовал инструкциям здесь на Apache 2.2: https://github.com/facebook/hhvm/wiki/FastCGI
в настоящее время hhvm работает так:
hhvm -m s -vServer.Type = fastcgi -vServer.Port = 9001
И моя конфигурация виртуального хоста:
<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
В моем случае мне пришлось изменить RemoveHandler .php
в:
<FilesMatch "\.ph(p3?|tml)$">
SetHandler None
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler None
</FilesMatch>
У меня тоже есть эта проблема; Я также использую -host вместо -socket (я не могу найти, где hhvm создает свои файлы sock) ...
Относительно вашего вопроса о "/hhvm.fastcgi": это имя псевдонима; думайте об этом как о переменной. Вы можете переименовать его как хотите. В вашем случае это просто избавляет вас от необходимости многократно использовать /home/tijmen/sites/example.com/hhvm.fastcgi. Источник: https://httpd.apache.org/docs/2.2/mod/mod_actions.html#page-header
(2014-03-23) ОБНОВИТЬ:
Я думаю, что в HHVM есть ошибка. Мне нужно будет еще протестировать, прежде чем я отправлю его, но у меня есть приложение для обслуживания файлов * .php без 404.
Мне не нравится обходной путь, но вот он:
Измените переменную запуска от имени пользователя в /etc/init.d/hhvm-fastcgi для запуска от имени пользователя root. Строка 30:
# RUN_AS_USER="www-data"
RUN_AS_USER="root"
Для справки, вот нижняя часть конференции моего сайта:
<IfModule mod_fastcgi.c> RemoveHandler application/x-httpd-php # FastCGIExternalServer /apache-data/hack/.virtual -socket /apache-data/hack/hhvm.sock -pass-header Authorization -idle-timeout 300 FastCGIExternalServer /apache-data/hack/.virtual -host 127.0.0.1:9000 -pass-header Authorization -idle-timeout 300 AddHandler hhvm-hack-extension .hh AddHandler hhvm-php-extension .php Action hhvm-hack-extension /hhvm_fastcgi virtual Action hhvm-php-extension /hhvm_fastcgi virtual Alias /hhvm_fastcgi /apache-data/hack/.virtual </IfModule>
Немного информации о структуре каталогов:
/ apache-data / взломать - Каталог приложения. (Недоступно для Интернета ..)
/ apache-data / hack / www - Интернет-корень. (Где index.php / index.hh - это ..)
index.php Содержание
<?php echo "<!DOCTYPE html><html><head></head><body>"; echo "Hello World!<br />"; if (defined('HHVM_VERSION')) echo "Running on HHVM version ". HHVM_VERSION; else echo "HHVM is offline."; echo "</body></html>"; ?>
(2014-03-23) Обновление 2:
Чтобы HHVM анализировал * .hh, вы должны отредактировать файл /etc/hhvm/server.hdf и указать ему это сделать.
Добавьте в /etc/hhvm/server.hdf:
PhpFile { Extensions { hphp = application/x-hhvm-php hh = application/x-hhvm-php } }