在虚拟主机中使用mod fastcgi为apache2.2设置HHVM

我想设置一个运行HHVM的虚拟主机来尝试新的“Facebook Hack”语言。 我遵循Apache 2.2的说明: https : //github.com/facebook/hhvm/wiki/FastCGI

目前hhvm是这样运行的:

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

而我的虚拟主机configuration是:

<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文件。 我必须手动创build它吗? 它甚至是一个物理文件? 也许甚至是一个目录?

我也在这里问我的问题,但问题是closures的: https : //github.com/facebook/hhvm/issues/2137

在我的情况下,我不得不将RemoveHandler .php更改为:

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

我也有这个问题; 我也使用-host而不是-socket(我找不到hhvm正在创build它的sock文件)…

关于你的关于“/hhvm.fastcgi”的问题:这是别名的名字; 把它想象成一个variables。 你可以重新命名为任何你想要的。 在你的情况下,它只是让你不必多次使用“/home/tijmen/sites/example.com/hhvm.fastcgi”。 来源: https : //httpd.apache.org/docs/2.2/mod/mod_actions.html#page-header


(2014-03-23) 更新:

我认为在HHVM中有一个错误。 在提交之前,我需要testing更多,但是我得到的应用程序不需要404就可以提供* .php文件。

我对解决方法不满意,但是这里是:

编辑/etc/init.d/hhvm-fastcgi中的run-as-uservariables以root身份运行。 30号线:

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

作为参考,这里是我的网站的底部conf:

 <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

     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>configuration

有关目录结构的一些信息:

/ apache-data / hack – 应用程序的目录。 (无法访问networking..)

/ apache-data / hack / www – web根目录。 (其中index.php / index.hh是..)

index.php内容

 <?PHP
     echo“<!DOCTYPE html> <html> <head> </ head> <body>”;
    回声“Hello World!<br />”;
    如果(定义('HHVM_VERSION'))回声“在HHVM版本上运行”。  HHVM_VERSION;
    否则回显“HHVM处于脱机状态”。
    回声“</ body> </ html>”;
 ?>

(2014-03-23) 更新2:

要让HHVMparsing* .hh,您必须编辑/etc/hhvm/server.hdf文件并告诉它。

附加到/etc/hhvm/server.hdf:

 PhpFile {
    扩展{
         hphp = application / x-hhvm-php
         hh = application / x-hhvm-php
     }   
 }