我想设置一个运行 HHVM 的虚拟主机来试用新的“Facebook Hack”语言。我按照 Apache 2.2 上的说明进行操作:https://github.com/facebook/hhvm/wiki/FastCGI
目前 hhvm 的运行方式如下:
hhvm-ms-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
答案1
就我而言,我必须改变RemoveHandler .php
成:
<FilesMatch "\.ph(p3?|tml)$">
SetHandler None
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler None
</FilesMatch>
答案2
我也遇到了这个问题;我也使用 -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年3月23日) 更新:
我认为 HHVM 中有一个错误。提交之前我需要进行更多测试,但我让应用程序能够提供 *.php 文件,而不会出现 404。
我对这个解决方法不太满意,但是它如下:
编辑 /etc/init.d/hhvm-fastcgi 中的 run-as-user 变量以作为 root 运行。第 30 行:
# RUN_AS_USER="www-data"
RUN_AS_USER="root"
作为参考,这是我的网站配置文件的底部:
<IfModule mod_fastcgi.c> 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 添加处理程序 hhvm-hack-扩展.hh 添加处理程序 hhvm-php-扩展.php 操作 hhvm-hack-extension /hhvm_fastcgi 虚拟 操作 hhvm-php-extension /hhvm_fastcgi 虚拟 别名 /hhvm_fastcgi /apache-data/hack/.virtual </IfModule>
关于目录结构的一些信息:
/Apache-数据/黑客- 应用程序的目录。(无法访问网络..)
/Apache-数据/黑客/www- Web 根目录。(index.php / index.hh 位于此处..)
index.php 内容
<?php 回声 “<!DOCTYPE html><html><head></head><body>”; 回显“你好,世界!<br />”; if (defined('HHVM_VERSION')) echo "在 HHVM 版本上运行 ". HHVM_VERSION; 否则回显“HHVM 已离线。”; 回声“ </ body ></ html>”; >
(2014年3月23日)更新 2:
要让 HHVM 解析 *.hh,您必须编辑 /etc/hhvm/server.hdf 文件并告诉它这样做。
附加到 /etc/hhvm/server.hdf:
Php文件 { 扩展 { hphp = 应用程序/x-hhvm-php hh = 应用程序/x-hhvm-php } }