繁体   English   中英

为archlinux配置hhvm和apache

[英]configure hhvm and apache for archlinux

首先,我从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"

有什么建议?

可以办到。 这是我的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应用程序。 如果您只在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 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM