我曾尝试测试 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晚