今天闲来无事折腾下朋友新推荐的HHVM
下面这张是HHVM的探针图:
HHVM是在HPHPc的基础上构建,它会将PHP代码转换成高级别的字节码(一种中间语言),在运行时即时(JIT)编译器会将这些字节码翻译成机器码。
下面是一些关于字节码、机器码和即时(JIT)编译器的概念,快速的浏览以下概念,可以清楚这些概念在HHVM所处的角色。
字节码:是一种人类无法阅读的代码,专门用来给编译器高效执行的。当HHVM首次加载项目时,它会将所有的PHP代码转换成字节码;字节码的生成是与平台无关的。
机器码:是一系列供CPU执行的指令。用过汇编的都应该清楚机器码,估计没人喜欢用汇编编程。通过编译器就可以把汇编转成机器码,然后供CPU处理。
JIT(即时)编译器:即时编译是个软件优化技术,指在运行时才会去编译字节码。字节码会存放在内存中,然后JIT编译器会根据需要加载并编译所涉的字节码。
通过以上技术,HipHop和HHVM获得了性能的提升。
最近,HHVM已经更新到了3.0版本,HHVM几乎已经完全支持PHP 5.5了,但还是有不少bug,所以不是所有应用程序都可以运行。因此,Facebook准备让最流行的20个开源PHP项目能够运行在HHVM上。第一个已经支持的项目就是Wordpress。不过对于国内的Discuz兼容还不太完美。
下面我们开始正式搭建HHVM
服务器操作系统:Debian7 x64
搭建LNMH架构
HHVM官网(已被墙):http://www.hhvm.com
HHVM Github:https://github.com/facebook/hhvm
安装HHVM并采用Fastcgi与Nginx结合
现在我将开始介绍如何快速安装HHVM并采用Fastcgi与Nginx相结合,以方便添加虚拟主机。
我们这里选用的系统是debian,用debian有个好处添加完apt源以后可以快速安装HHVM。注意选择系统的时候一定要选择64位的系统不然无法安装。
首先我们要先进行一些安装前的步骤:
接下来我们添加HHVM的apt源,并安装HHVM:
|
wget http://dl.hhvm.com/conf/hhvm.gpg.key
sudo apt-key add hhvm.gpg.key
echo "deb http://dl.hhvm.com/debian wheezy main">> /etc/apt/sources.list
sudo apt-get update
sudo apt-get install -y hhvm
|
这个过程大概几分钟即可完成
会有Selecting Unpacking ,用时比较长
看到以下界面说明安装成功
P.S.
如果是国内的主机请添加下面这个apt源,官方的apt源因为某些原因被墙了。
|
wget http://dl.hiphop-php.com/conf/hhvm.gpg.key
sudo apt-key add hhvm.gpg.key
echo "deb http://dl.hiphop-php.com/debian wheezy main">> /etc/apt/sources.list
sudo apt-get update
sudo apt-get install -y hhvm
|
接着我们运行这条命令安装Fastcgi
|
sudo /usr/share/hhvm/install_fastcgi.sh #安装Fastcgi
sudo update-rc.d hhvm defaults #添加到开机启动
sudo service hhvm restart #重启HHVM
|
接着我们查看一下端口开启没有:
OK~当我们完成上面步骤的时候已经安装完成了HHVM并开启了Fastcgi模式。
接下来将介绍安装Nginx并与HHVM相结合搭建LNMH架构,并添加虚拟主机。
首先我们先安装好Nginx,我们这里选用的是LinuxEye博客推出的lnmp一键包。
|
wget http://blog.linuxeye.com/lnmp.tar.gz
#wget http://blog.linuxeye.com/lnmp-full.tar.gz # 包含源码(官方下载太慢)
tar xzf lnmp.tar.gz
cd lnmp
#如果需要修改目录(安装、数据存储、Nginx日志),请修改options.conf文件
./install.sh
|
我们只用安装Nginx和memcached即可,其他不用安装,Mysql数据库我们后面选择用apt安装。
当我们安装完成了Nginx后,备份lnmp目录下的vhost.sh文件,然后手动修改vhost.sh让nginx添加虚拟机时自带Fastcgi。找到下面这段:(大约在314行)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
[ ! -d $web_install_dir/conf/vhost ] && mkdir $web_install_dir/conf/vhost
cat > $web_install_dir/conf/vhost/$domain.conf << EOF
server {
listen 80;
server_name $domain$moredomainame;
$N_log
index index.html index.htm index.jsp index.php;
include $rewrite.conf;
root $vhostdir;
#error_page 404 /404.html;
if ( \$query_string ~* ".*[\;'\<\>].*" ){
return 404;
}
$anti_hotlinking
`echo -e $ngx_pagespeed`
location ~ .*\.(php|php5)?$ {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
......
|
把它修改成下面这样:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
[ ! -d $web_install_dir/conf/vhost ] && mkdir $web_install_dir/conf/vhost
cat > $web_install_dir/conf/vhost/$domain.conf << EOF
server {
listen 80;
server_name $domain$moredomainame;
$N_log
index index.html index.htm index.jsp index.php;
include $rewrite.conf;
root $vhostdir;
#error_page 404 /404.html;
if ( \$query_string ~* ".*[\;'\<\>].*" ){
return 404;
}
$anti_hotlinking
`echo -e $ngx_pagespeed`
location ~ .*\.(php|php5)?$ {
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
......
|
这样当我们添加虚拟主机时候就自动开启了Fastcgi。
可能有人又会问了,为什么我用IP访问的时候无法直接访问IP目录下面的PHP文件和程序?
因为我们还没有修改默认的nginx.conf文件,接下来我们就要修改这个文件,让我们访问IP的时候可以直接访问PHP程序。
|
vi /usr/local/nginx/conf/nginx.conf
|
我们找到下面这段:
|
###################pureftpd AND phpmyadmin############################
......
location ~ .*\.(php|php5)?$ {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
......
|
将它修改为下面这样:
|
###################pureftpd AND phpmyadmin############################
......
location ~ .*\.(php|php5)?$ {
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
......
|
接下来我们重启Nginx看看效果如何:
如果出现当配置好后,打开探针出现502。请在安装一次hhvm并开启Fastcgi。
下面我们安装mysql数据库,很简单只要一条命令:
|
apt-get install mysql-server
|
中间只要输入一次密码就可以了。
到此,安装结束
以下是测试探针地址,大家可以看看。
http://174.140.168.169/tz.php
本文也同时发布到Freehao123中,欢迎扔砖~
困
我这两天都快睡成猪了。。。。
P.S.
本文真心原创,麻烦各位转载的大大们带个链接吧,小弟混口饭吃不容易啊。。。
折腾:HHVM+Nginx+FastCGI 【原创Deamwork】
文章链接:http://www.deamwork.com/archives/toss-hhvmnginxfastcgi.orz6
(责任编辑:IT) |