首先,我从AUR安装了apache24,从AUR安装了hhvm(HipHop VM 2.4.0(rel))。 apache24启用了 mod_proxy_fcgi 。使用hhvm从终端运行php文件似乎工作正常,但我无法将其配置为使用apache 在httpd.conf我有:
ProxyPass / fcgi://127.0.0.1:9000/srv/http/
,然后我从doc_root运行hhvm服务器:
sudo hhvm --mode server -vServer.Type=fastcgi -vServer.Port=9000
,但是当从浏览器访问http链接时我得到:
"HipHop Notice: File could not be loaded: proxy:fcgi://127.0.0.1:9000/srv/http/index.php"
有什么建议吗?
答案 0 :(得分:1)
可以做到。这是我的Ubuntu Web服务器示例:
您需要一种方法将HHVM挂钩到Apache Web服务器。这是使用您需要安装的FastCGI完成的。幸运的是,HHVM提供了一个shell脚本来设置它。运行以下...
sudo /usr/share/hhvm/install_fastcgi.sh
确保HHVM在启动时启动,运行此...(可选)
sudo update-rc.d hhvm defaults
配置HHVM和Apache虚拟主机
安装脚本将要求您重新启动HHVM和Apache。还没有,否则您的网站访问者将会看到一些404行动。相反,打开hhvmproxyfcgi.conf并注释其中的单个ProxyPassMatch行。
sudo emacs /etc/apache2/mods-available/hhvm_proxy_fcgi.conf
# ProxyPassMatch ^/(.+\.(hh|php)(/.*)?)$ fcgi://127.0.0.1:9000/v
这会阻止所有PHP / Hack脚本通过FastCGI进行路由,这将允许您选择要通过HHVM发送的Web应用程序。如果您只在网络服务器根目录中运行单个网络应用程序,则不需要这样做,但无论如何,我觉得这是一个聪明的举动。
目前HHVM正在运行,但无法将脚本传递给它。我们需要将ProxyPassMatch配置添加到我们希望HHVM供电的Web应用程序的虚拟主机配置中。将其添加到每个配置文件中的每个虚拟主机实例(以下示例中介绍的安全和非安全流量。)。
sudo nano /etc/apache2/sites-available/hhvm.example.com.conf
#HHVM示例 - hhvm.example.com
<VirtualHost *:80>
ServerName hhvm.example.com
DirectoryIndex index.php
DocumentRoot /var/www/sites/hhvm.example
ProxyPassMatch ^/(.+\.(hh|php)(/.*)?)$ fcgi://127.0.0.1:9000/var/www/sites/hhvm.example/$1
</VirtualHost>
<VirtualHost *:443>
ServerName hhvm.example.com
DirectoryIndex index.php
DocumentRoot /var/www/sites/hhvm.example
SSLEngine On
SSLCertificateFile /etc/ssl/certs/hhvm.crt
SSLCertificateKeyFile /etc/ssl/private/hhvm.key
SSLCACertificateFile /etc/ssl/certs/hhvm.ca.crt
ProxyPassMatch ^/(.+\.(hh|php)(/.*)?)$ fcgi://127.0.0.1:9000/var/www/sites/hhvm.example/$1
</VirtualHost>
如果您希望快速A / B测试性能提升,您还可以指定另一个端口来明确使用HHVM。为此,只需在/etc/apache2/ports.conf
Listen 8080
然后在您的虚拟主机配置中,使用指定的新端口创建另一个实例,并将ProxyPassMatch配置添加到您要在其上运行HHVM的配置。
<VirtualHost *:80>
...
</VirtualHost>
<VirtualHost *:8080>
...
ProxyPassMatch ^/(.+\.(hh|php)(/.*)?)$ fcgi://127.0.0.1:9000/var/www/$1
</VirtualHost>
重启Apache和HHVM
现在,我们已准备好迎接Apache和HHVM。重启两个服务......
sudo service apache2 restart
sudo service hhvm restart