使用 apache 和 hhvm

使用 apache 和 hhvm

我曾尝试测试 hhvm(在我的本地机器上),但未能使其正常工作。

重要提示:我需要同时运行 mod_php 和 fcgi。对我来说,放弃 mod_php 是不可能的(至少目前还不可能)。

使用 Debian 7.8

我设法通过 fcgi 安装了一个可以运行的 php 版本,而我现有的 mod_php 仍然在运行。它们都在运行 - 一个使用Server API: Apache 2.0 Handler ,另一个使用Server API: CGI/FastCGI

然后我安装了 hhvm(一个预编译包)。没问题。(预编译是因为我不想浪费时间编译)。我启动了服务器,但我没有使用 hhvm - 仍然使用 php(fcgi)。

我读过脚本 /usr/share/hhvm/install_fastcgi.sh 并尝试过。它给出了以下输出:

Checking if Apache is installed
Detected Apache installation
Looking for custom proxy configuration
No custom proxy configuration found
Checking for enabled proxy_fcgi.load
Not found
Checking for enabled fastcgi.load
Not found
Checking for enabled fcgid.load
Found, checking for loading directives
Detected enabled fcgid.load configuration, setting up integration
Force enabling module hhvm_fcgid.conf
WARNING: Unsupported hhvm_fcgid, not configuring
Restarting apache
Apache is running, restarting
[ ok ] Restarting web server: apache2 ... waiting .
Finished restarting
Finished restarting apache
Checking if Nginx is installed
Nginx not found

因此配置不起作用。

对于 fcgid,我使用以下 apache vhost 文件:

<VirtualHost *:8000>

<IfModule mod_fcgid.c>
FcgidBusyTimeout 3600
</IfModule>

ServerAdmin webmaster@localhost
ServerAlias h.path1.local

DocumentRoot /var/www/path1
#SuexecUserGroup user1 user1

#ScriptAlias /awstats/ /usr/lib/cgi-bin/
#we want specific log file for this server


#ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/path1/$1

<Directory "/var/www/path1">
   FcgidWrapper /var/www/path1_conf_hhvm .php
    <FilesMatch \.php$>
      SetHandler fcgid-script
    </FilesMatch>
    Options +ExecCGI
    Order allow,deny
    Allow from all
    AllowOverride FileInfo All
</Directory>

</VirtualHost>

端口是 8000,因为 apache 位于 varnish 后面。

不,我正在使用 fcgi 的包装文件。这仅包含:

#!/bin/sh
 export PHPRC="/etc/php5/cgi"
 exec /usr/bin/php5-cgi

我猜我需要在这里做些改动,以便使用 hhvm 而不是 php。所以我尝试使用 exec /usr/bin/hhvm - 但不起作用。我得到了

[warn] [client 127.0.0.1] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
[error] [client 127.0.0.1] Premature end of script headers: test.php

现在我迷路了。如何告诉 fcgid 使用 hhvm 而不是 php?我需要更改包装器脚本吗(或者完全放弃它并使用其他脚本)?

任何帮助均感激不尽。

答案1

我必须转到 apache 2.4 才能获得缺少的模块(fastcgi)

sudo apt-get install libapache2-mod-fastcgi

但是升级到 2.4 版后,apache 无法使用 libapache2-mod-php5,所以我不得不使用 php-fpm。我按照这个教程操作(抱歉,是法语的)

http://www.grafikart.fr/formations/serveur-linux/php-fpm

在此之后,我按照这里描述的方式安装了 hhvm

https://docs.hhvm.com/hhvm/installation/linux

最后,我运行命令

 sudo hhvm -daemon -c server.ini -p 8080

如果一切正常,在某处调用 phpinfo() 它应该用 hhvm 替换你的 php 配置

希望它能有所帮助也许比Naver晚

相关内容