gpt4 book ai didi

php - 为 archlinux 配置 hhvm 和 apache

转载 作者:可可西里 更新时间:2023-10-31 23:40:49 26 4
gpt4 key购买 nike

首先,我从 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 网络服务器的方法。这是使用您需要安装的 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

关于php - 为 archlinux 配置 hhvm 和 apache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21740532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com