如何在Ubuntu13.10VPS上安装HHVM(HipHop虚拟机)
介绍
本文将介绍在 Digital Ocean VPS 上的 Ubuntu 13.10 上安装 HHVM 所需的步骤。 本文还将说明如何通过创建来使用 HHVM:
- PHP 中的命令行“Hello World”脚本
- 用 PHP 编写并由 HHVM 服务器提供的基于 Web 的“Hello World”脚本
先决条件
本教程的唯一先决条件是安装了 Ubuntu 13.10 x64 的 VPS。 请注意,HHVM 不支持任何 32 位操作系统,并且他们没有计划添加对 32 位操作系统的支持。
您将需要从命令行执行命令,您可以通过以下两种方式之一执行:
- 使用 SSH 访问 Droplet。
- 使用 Digital Ocean Droplet 管理面板中的“控制台访问”
什么是 HHVM?
HipHop Virtual Machine (HHVM) 是由 Facebook 开发和开源的虚拟机,用于处理和执行用 PHP 编写的程序和脚本。 Facebook 开发 HHVM 是因为常规的 Zend+Apache 组合在为 PHP 构建的大型应用程序提供服务时效率不高。
根据他们的网站,与 Zend PHP 引擎 + APC(这是当前托管大多数 PHP 应用程序的方式)。
安装 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
命令的详细信息。 这是一个示例屏幕截图,说明了这一点:
使用 HHVM 从命令行测试 PHP 中的“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 脚本的创建和执行:
使用 HHVM 服务器在 PHP 中测试“Hello World”脚本(可从浏览器访问)
首先创建一个目录 (public
) 作为公共文件夹并包含 PHP 文件。 请注意,您可以将此目录命名为任何名称并将其放置在任何位置。 执行以下命令创建该目录并进入:
mkdir public cd public
现在在命令行中输入以下命令:
cat > hello.php
这将在 public
目录中创建一个名为 hello.php
的文件,并允许您输入其内容。 输入(或复制并粘贴)以下代码,然后按 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 地址或域名。
访问此 URL 应显示类似于以下屏幕截图中的网页:
将您的 PHP 应用程序移植到 HHVM
为了在端口 80(网站的标准端口)上使用 HHVM 而不是 Zend/Apache 开始为 PHP 应用程序提供服务,需要停止 Apache 服务。 这可以使用以下命令完成:
service apache2 stop
此命令将停止 Apache 并释放端口 80 供 HHVM 使用。 下一步是在 PHP 应用程序 的根目录中启动 HHVM 服务器 。 这个根目录在 Ubuntu 上最常见的位置是 /var/www
。
使用以下命令切换到该目录:
cd /var/www
进入此目录后,您需要做的就是启动 HHVM 服务器:
hhvm -m server
此命令将启动 HHVM 服务器,它将开始从当前目录为您的 PHP 应用程序提供服务。
在 FastCGI 模式下使用 HHVM
从 3.0 版本开始,HHVM 不能再在服务器模式下使用。 本节将帮助您在 FastCGI 模式下使用 Apache 和 Nginx 服务器配置 HHVM。
与阿帕奇
将 HHVM 配置为使用 Apache 在 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
并将其放在服务器的公共文件夹中(通常是 Apache 的 /var/www
和 Nginx 的 /usr/share/nginx/html
)。 现在将以下内容放入此文件中:
<?php echo defined('HHVM_VERSION')?'Using HHVM':'Not using HHVM';
现在,如果一切设置正常,当您在浏览器中访问此文件时,您应该会看到以下消息:
使用 HHVM
重要的提示
HHVM 集成了很多常用的 PHP 扩展,可以轻松移植大量应用程序而无需大惊小怪。 但是,如果应用程序使用尚未合并的 PHP 扩展,则选择 HHVM 将破坏应用程序。 已移植到 HHVM 的 PHP 扩展的完整列表可以在 here 中找到
最后一句话
如果您已经达到了这一步,那么您现在已经准备好开始使用 HHVM 来为您的基于 PHP 的网站提供服务了。 HHVM 比常规 Zend PHP 引擎 + APC 组合的效率高出数倍,可以帮助您以更低的硬件要求为网站的更多访问者提供服务!