介绍
本文将通过对一个在Ubuntu 13.10安装HHVM所需的步骤走数字海洋 VPS。 本文还将说明如何使用HHVM创建:
PHP中的命令行“Hello World”脚本
基于Web的“Hello World”脚本,由PHP编写,由HHVM服务器提供
先决条件
本教程的唯一前提是安装了Ubuntu 13.10 64位VPS。 请注意,HHVM不支持任何32位操作系统,他们没有计划添加对32位操作系统的支持。
您将需要从命令行执行命令,您可以通过以下两种方式之一执行:
使用SSH访问Droplet。
使用Digital Ocean Droplet管理面板中的“控制台访问”
什么是HHVM?
HipHop Virtual Machine(HHVM)是发达,开放被Facebook来源可以处理和执行用PHP编写的程序和脚本的虚拟机。 Facebook开发HHVM是因为常规的Zend + Apache组合不能高效地为PHP内置的大型应用程序提供服务。
根据他们的网站,HHVM已经意识到了在Web请求的吞吐量及以上的内存消耗5倍降低为Facebook与Zend的PHP引擎+ APC(这是承载大部分的PHP应用程序的当前方式)相比,9倍的增加 。
安装HHVM
安装HHVM非常简单,不应超过几分钟。 从命令行执行以下4个命令将安装并准备好HHVM:
wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | apt-key add -
echo deb http://dl.hhvm.com/ubuntu saucy main | tee /etc/apt/sources.list.d/hhvm.list
apt-get update
apt-get install hhvm
要确认已安装HHVM,请键入以下命令:
hhvm --help
这将显示如何在细节hhvm
命令可以在命令行中使用。 这里是一个示例截图,说明了这一点:
在PHP中使用HHVM从命令行测试“Hello World”脚本
在命令行上键入以下命令:
cat > hello_world.php
这将创建一个文件名为hello_world.php
,并允许你输入的内容。 键入(或复制并粘贴)以下代码,然后按Ctrl + D
保存文件。
<?php
echo "\nHello World\n\n";
注意: 如果你熟悉像编辑nano
或vim
,你可以使用这些来创建并保存此文件。
一旦这个文件被创建, hhvm
可用于使用以下命令来执行它:
hhvm hello_world.php
这里是一个截图来说明这个Hello World脚本的创建和执行:
在PHP中测试“Hello World”脚本使用HHVM服务器(可从浏览器访问)
首先创建一个目录( public
),将作为公共文件夹,并包含PHP文件。 请注意,您可以命名该目录任何东西,任何地方放置 。 执行以下命令创建此目录并输入:
mkdir public
cd public
现在在命令行上键入以下命令:
cat > hello.php
这将创建一个文件名为hello.php
在public
目录,并允许您输入的内容。 键入(或复制并粘贴)以下代码,然后按Ctrl + D
保存文件。
<?php
echo '<h1>Hello World</h1>';
注意: 如果你熟悉像编辑nano
或vim
,你可以使用这些来创建并保存此文件。
一旦该文件已经创建, hhvm
可以通过命令行用于启动以下面的方式在服务器:
hhvm -m server
这里是一个截图来说明这个Hello World脚本的创建和执行:
此命令将启动服务器(端口80)和hello.php
文件现在可以从浏览器访问。 如果Droplet的IP地址为128.199.212.7,则可以在以下位置访问此新创建的文件:
http://128.199.212.7/hello.php
注意: 更换128.199.212.7
与您Droplet所使用的IP地址或域名。
访问此网址应显示与以下屏幕截图中类似的网页:
将您的PHP应用程序移植到HHVM
为了开始在端口80(网站的标准端口)上使用HHVM而不是Zend / Apache来提供PHP应用程序,需要停止Apache服务。 这可以使用以下命令完成:
service apache2 stop
此命令将停止Apache并释放端口80供HHVM使用。 下一步是启动HHVM 服务器PHP应用程序的根目录 。 在Ubuntu这个根目录的最常见的位置是/var/www
。
使用以下命令切换到此目录:
cd /var/www
一旦你在这个目录中,所有你需要做的是启动HHVM服务器:
hhvm -m server
此命令将启动HHVM服务器,将从当前目录开始为您的PHP应用程序提供服务。
在FastCGI模式下使用HHVM
从V3.0开始,HHVM不能再在服务器模式下使用。 本节将帮助您在FastCGI模式下使用Apache和Nginx服务器配置HHVM。
与Apache
使用Apache配置HHVM在FastCGI模式下工作非常简单。 所有你需要做的是执行以下脚本:
/usr/share/hhvm/install_fastcgi.sh
运行此脚本配置Apache以开始使用HHVM来处理PHP代码。 它还将重新启动Apache服务器,所以你不必做任何其他事情。
用Nginx
如果您使用Nginx与PHP-FPM,您必须修改配置文件以禁用PHP-FPM的使用。 此文件通常位于/etc/nginx/sites-available/default
查找以下部分,确保它的所有评论(通过添加#
在每一行开头)
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# fastcgi_index index.php;
# include fastcgi_params;
#}
执行此操作后,请执行以下脚本:
/usr/share/hhvm/install_fastcgi.sh
执行此脚本配置Nginx开始使用HHVM来处理PHP代码。 它也将重新启动Nginx服务器,所以你不必做任何其他事情。
确认Apache / Nginx正在使用HHVM
将服务器配置为开始使用HHVM之后,始终最好确认服务器(Apache或Nginx)确实使用HHVM处理PHP。
您可以通过创建一个测试PHP文件做到这一点,让我们说info.php
,并把它在你的服务器(通常的公用文件夹/var/www
Apache和/usr/share/nginx/html
为Nginx的)。 现在将以下内容放在此文件中:
<?php
echo defined('HHVM_VERSION')?'Using HHVM':'Not using HHVM';
现在如果一切设置正常,当您在浏览器中访问此文件,您应该看到以下消息:
使用HHVM
重要的提示
HHVM已经并入了许多常用的PHP扩展,使得轻松地移植大量应用程序而不会有太大的麻烦。 但是,如果应用程序使用尚未并入的PHP扩展,选择HHVM将会中断应用程序。 已经移植到HHVM PHP扩展的完整列表,可以发现这里
最后的话
如果你已经到达这里,你现在已经准备好开始使用HHVM服务您的PHP基于网站。 比普通的Zend PHP引擎+ APC组合效率高几倍,HHVM可以帮助您以更低的硬件要求为您的网站提供更多的访问者!