可以办到。这是我的 Ubuntu 网络服务器示例:
您需要一种将 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 应用程序。如果您只在 Web 服务器根目录中运行单个 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