关于HHVM的介绍

http://en.wikipedia.org/wiki/HipHop_Virtual_Machine

http://www.hhvm.com/

https://github.com/facebook/hhvm

在CentOS6.2上安装

目前,对ubuntu、Debian等Linux支持到位(https://github.com/facebook/hhvm/wiki/Prebuilt%20Packages%20for%20HHVM)。

You can install a prebuilt package or compile from source.

事实上,rpm包安装就已经很麻烦了,源码编译更是伤不起(可以参考:http://www.xuebuyuan.com/642409.html),所以还是以yum来配置较好。

1.添加合适的源

  cd /etc/yum.repos.d/
wget http://www.hop5.in/yum/el6/hop5.repo
yum makecache

注意,不要和你当前的repo源冲突,尤其是一些共有的包,所以适时只选其一。

2.预先安装部分依赖

先不用急着安装hhvm,你会发现一堆依赖。所以我们需要yum安装或rpm手动安装如下的包。

升级gcc到4.6

yum install gcc.x86_64 —setopt=protected_multilib=false

安装一些依赖

yum -y install libmcrypt-devel glog-devel jemalloc-devel tbb-devel libdwarf-devel mysql-devel \
libxml2-devel libicu-devel pcre-devel gd-devel boost-devel sqlite-devel pam-devel \
bzip2-devel oniguruma-devel openldap-devel readline-devel libc-client-devel libcap-devel \
libevent-devel libcurl-devel libmemcached-devel

一些版本的包,centos对应源中是没有的,特别是ImageMagick相关的东东。

所以单独还安装了以下包,可能会有一些冲突提示,我们就直接rpm -ivh --replacefiles *.rpm了

fftw-3.2.1-3.1.el6.x86_64.rpm
libjpeg-turbo-1.2.1-3.el6_5.x86_64.rpm
libmcrypt-2.5.8-9.el6.x86_64.rpm
zlib-1.2.3-29.el6.x86_64.rpm
libjpeg-6b-38.x86_64.rpm
liblcms2-2.4-1.el6.x86_64.rpm
xz-5.2.1

至此,可以执行终极Boss命令了:

yum install hhvm

结果如下:

看看相关命令行:

2. Run HHVM

写一个php脚本,我们将在多种模式下运行

<?php
echo "hello world\n";
phpinfo();

2.1 命令行run下

2.2 Server模式

hhvm安装默认的配置在/etc/hhvm/下,默认是server.hdf,还有php.ini。

这里我们下修改下server.hdf,如下:

PidFile = /var/run/hhvm/pid

Server {
Port = 9090
SourceRoot = /data/lebyzhao/test/
DefaultDocument = test.php
} Log {
Level = Warning
AlwaysLogUnhandledExceptions = true
RuntimeErrorReportingLevel = 8191
UseLogFile = true
UseSyslog = false
File = /data/log/hhvm/error.log
Access {
* {
File = /data/log/hhvm/access.log
Format = %h %l %u % t \"%r\" %>s %b
}
}
} Repo {
Central {
Path = /var/log/hhvm/.hhvm.hhbc
}
} # 以下内容省略...

执行/etc/init.d/hhvm start,

注意:这是一个wrapper脚本,实际是执行了:hhvm --mode server --user root --config /etc/hhvm/server.hdf ,hdf里面的配置是可以在命令行直接写的:hhvm --mode server -vServer.Type=fastcgi -vServer.Port=9090

OK,这便是运行了一个支持HTTP的PHP Server。你当前可以用Nginx代理或Curl来访问。

这里我们修改现有的nginx配置,让其转发到hhvm server上即可

        location ~ .*\.php$ {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:9090;
}

从Nginx上测试一把:

2.3 FastCGI模式

我们可以用如下命令来启动:

hhvm --mode server -vServer.Type=fastcgi -vServer.Port=
## 后台运行
hhvm --mode daemon -vServer.Type=fastcgi -vServer.Port=

此时,是用了Fastcgi协议的(HTTP不能在请求到了,比如可能提示:FastCGI protocol: received an invalid record),

相应修改Nginx对应的FastCGI配置:

       location ~ .*\.php$ {
fastcgi_pass 127.0.0.1:9090;
include fastcgi.conf;
}

自配置fastcgi.conf如下:

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 REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 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; # PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;

重新加载Nginx配置后,再次请求Nginx,curl看到的结果与HHVM在server模式下,Nginx代理的结果完全一致。

参考: http://hhvm.com/blog/1817/fastercgi-with-hhvm

---------

http://www.tuicool.com/articles/uaqYFr

CentOS6.2 试用PHP HHVM的更多相关文章

  1. ***OneinStack交互安装FAQ和管理服务常用命令

    转自: https://oneinstack.com/install/  自动生成oneinstack安装连接: https://oneinstack.com/auto/ (进入linux系统后复杂上 ...

  2. lnmp、lamp、lnmpa一键安装包(Updated: 2016-4-12)

    lnmp.lamp.lnmpa一键安装包(Updated: 2016-4-12)   文章目录 脚本特性 安装步骤 如何添加虚拟主机? 如何删除虚拟主机? 如何管理ftp账号? 数据备份 如何管理服务 ...

  3. centos6.5下yum安装lnmp(适合刚入职的新手的方法)

    新入职的员工,开始的时候都是让配环境,本地写代码用的wamp,在lnmp或lamp测试,除非有些土豪公司 用的是(果机). 另外安装时,把整个流程在脑子里先过一篇(记不全也没关系,一回生二回熟),重在 ...

  4. 实战MySQL集群,试用CentOS 6下的MariaDB-Galera集成版

    说起mysql的集群估计很多人会首先想起mysql自带的replication或者mysql-mmm.mysql-mmm其实也是基于mysql自带的replication的,不过封装的更好用一些,但是 ...

  5. docker下PHP+Nginx+HHVM运行环境

    Dockerfile 准备开始,我们创建一个 Dockerfile —— Dockerfile 包含如何创建所需镜像的指令. FROM    centos:centos6MAINTAINER Mike ...

  6. HHVM 是如何提升 PHP 性能的?

    背景 HHVM 是 Facebook 开发的高性能 PHP 虚拟机,宣称比官方的快9倍,我很好奇,于是抽空简单了解了一下,并整理出这篇文章,希望能回答清楚两方面的问题: HHVM 到底靠谱么?是否可以 ...

  7. U盘安装CentOS6.x报错:Missing ISO 9660 Image

    以前都是DVD安装CentOS,这次因为装固态硬盘,然后把光驱给卸载了.所以就尝试用U盘引导安装CentOS,结果安装时竟然出现了Missing ISO 9660 Image的错误. 解决方案: 将C ...

  8. linux基础-系统安装教程篇(centos6.5)

    一.linux系统简介: Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程 ...

  9. CentOS6 安装并破解Jira 7

    CentOS6 安装并破解Jira 7 JIRA软件是为您的软件团队的每个成员构建的,用来规划,跟踪和发布优秀的软件. https://confluence.atlassian.... 最低硬件要求及 ...

随机推荐

  1. const的全面理解

    const关键字用来作甚?const是一个类型修饰符.常见的类型修饰符有哪些? short long unsigned signed static autoextern register 定义一个变量 ...

  2. 日志基本概念/rSyslog

    日志是纯文本的,在var/log/ linux系统下的日志类型: 内核信息   服务信息    应用程序信息

  3. python 第三方库 chardet

    chardet是一个非常优秀的编码识别模块.chardet 是python的第三方库,需要下载和安装,放在python安装根目录\Lib\site-packages下面 import chardet ...

  4. mysql 与 oracle 比较(一)group by 容易产生的误解

    注:本文并不是列举出两者之间的所有不同,而是在实际应用中发现的不同的功能点或者处理模式,之所以记录下来,就是为了提醒自己,勿忘 group by : (1)oracle 中,总所周知,select ( ...

  5. druid简介

    Druid首先是一个数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser. 支持的数据库 Druid支持所有JDBC兼容 ...

  6. C# 调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配

    在dllimport中加入CallingConvention参数就行了,[DllImport(PCAP_DLL, CharSet = CharSet.Auto, CallingConvention = ...

  7. 通过一个Thinkphp完成多个项目

    1.单独取压缩包中的Thinkphp文件夹 2.在单独的项目内创建一个引入文件 3.通过浏览器访问该index.php 会创建相应的目录

  8. Python运算符与表达式

    Python运算符包括赋值运算符.算术运算符.关系运算符.逻辑运算符.位运算符.成员运算符和身份运算符. 表达式是将不同类型的数据(常亮.变量.函数)用运算符按照一定得规则连接起来的式子. 算术运算符 ...

  9. 学习php前需要了解的知识

    1.静态网站与动态网站 A)静态网站: 不支持数据交互的网站(后缀:   .html  .htm) B)动态网站: 支持数据交互的网站,动态网站可以放静态网页的 i.实现动态网站的技术 1.Asp   ...

  10. vim1

    Vim模式介绍 几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数的编辑器使用了与Vim接入不同的方式:命令目录(鼠标或者键盘驱动),组合键(CTRL和ALT组成)或鼠标输入.Vim和vi一样, ...