在 CentOS 上安装 HHVM 的详细步骤与常见问题解答
一、HHVM简介
HHVM(HipHop Virtual Machine)是由 Facebook 开发的高性能 PHP 虚拟机,通过即时(JIT)编译将 PHP 代码转换为高度优化的机器码,从而大幅提升执行效率,HHVM 支持多种运行模式,包括 Eval 模式和 FastCGI 模式,能够显著提高 PHP 应用的性能。

二、HHVM 安装步骤
1. 系统准备
确保你的 CentOS 系统是最新的,并且满足 HHVM 对资源的要求,建议使用 CentOS 7 及以上版本。
sudo yum update y
2. 安装 EPEL 仓库
HHVM 需要 EPEL (Extra Packages for Enterprise Linux) 仓库中的依赖库,安装 EPEL 仓库:
sudo yum install epelrelease y
3. 安装必要的依赖库
HHVM 依赖于多个第三方库,这些库可以通过以下命令安装:

sudo yum groupinstall "Development Tools" y sudo yum install gcc gccc++ cmake git libmemcacheddevel boostdevel jemallocdevel libeventdevel libxsltdevel libicudevel tbbdevel bzip2devel openldapdevel readlinedevel elfutilslibelfdevel libdwarfdevel libcapdevel libyamldevel libeditdevel unixODBCdevel ImageMagickdevel y
4. 下载并安装 Google glog 和 Oniguruma
HHVM 需要 Google glog 和 Oniguruma 库,这两个库不在默认的 EPEL 仓库中,需要手动下载和安装。
安装 Google glog wget https://googleglog.googlecode.com/files/glog0.3.3.tar.gz tar xvzf glog0.3.3.tar.gz cd glog0.3.3 ./configure make sudo make install 安装 Oniguruma wget http://www.geocities.jp/kosako3/oniguruma/archive/onig5.9.5.tar.gz tar xvzf onig5.9.5.tar.gz cd onig5.9.5 ./configure make sudo make install
5. 下载并编译 HHVM
从官方 GitHub 仓库下载并编译 HHVM:
下载 HHVM 源码 git clone https://github.com/facebook/hhvm.git b master recursive cd hhvm 编译 HHVM mkdir dist && cd dist cmake .. make j2 sudo make install
6. 配置 HHVM 服务
为了方便管理 HHVM,可以将其设置为 systemd 服务。

创建 systemd 服务文件 sudo vi /usr/lib/systemd/system/hhvm.service
在文件中添加以下内容:
[Unit] Description=HHVM HipHop Virtual Machine (FCGI) After=network.target nginx.service mariadb.service [Service] ExecStart=/usr/local/bin/hhvm config /etc/hhvm/server.ini user wwwdata mode daemon vServer.Type=fastcgi vServer.FileSocket=/var/run/hhvm/hhvm.sock Restart=always [Install] WantedBy=multiuser.target
注意:请根据实际的 HHVM 安装路径调整ExecStart 中的路径。
7. 启动并启用 HHVM 服务
sudo systemctl daemonreload sudo systemctl start hhvm sudo systemctl enable hhvm
8. 配置 Nginx 以使用 HHVM
编辑 Nginx 配置文件,使其支持通过 FastCGI 使用 HHVM,创建或修改配置文件/etc/nginx/conf.d/hhvm.conf:
sudo vi /etc/nginx/conf.d/hhvm.conf
在文件中添加以下内容:
location ~ \.(hh|php)$ {
root /usr/share/nginx/html;
index index.php index.html index.htm;
fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
}9. 重启 Nginx
sudo systemctl restart nginx
三、常见问题解答(FAQs)
Q1:如何更改 HHVM 的版本?
A1:要更改 HHVM 的版本,可以按照以下步骤操作:
1、删除旧版本:如果已经安装了旧版本的 HHVM,可以通过以下命令删除:
sudo systemctl stop hhvm sudo systemctl disable hhvm sudo rm rf /usr/local/bin/hhvm /etc/hhvm /var/run/hhvm /var/log/hhvm /usr/lib/systemd/system/hhvm.service
2、安装新版本:然后按照上述步骤重新编译和安装新版本的 HHVM。
Q2:HHVM 无法启动,提示缺少共享库怎么办?
A2:HHVM 可能依赖某些未安装的共享库,可以使用ldd /usr/local/bin/hhvm 命令检查所需的共享库,并确保它们都已安装,如果提示缺少libonig.so.2,可以通过以下命令安装:
sudo yum install onigurumadevel y
然后为共享库创建符号链接(如果有需要):
sudo ln s /usr/local/lib/libonig.so.5 /usr/lib/libonig.so.2
