HHvm建站环境搭建方法:Nginx,Mariadb,hhvm及lnmp/lamp安装部署

VPS主机   2015年07月02日 17:55  

HHvm建站环境搭建方法:Nginx,Mariadb,hhvm及lnmp/lamp安装部署

HHVM起源于Facebook公司,是一个开源的PHP虚拟机,使用JIT的编译方式以及其他技术,让PHP代码的执行性能大幅提升。HHVM提升PHP性能的途径,采用的方式就是替代Zend引擎来生成和执行PHP的中间字节码(HHVM生成自己格式的中间字节码)。

HHvm可以很大程度上提高PHP的性能,能够让同等配置的服务器承受更多的流量。HHvm建站环境搭建起来有点复杂,之前的HHVM安装使用教程HHvm Apache 2.4 Nginx建站环境因为要依赖于编译,各种代码执行,会出现各种莫名的问题,安装HHvm成功率比较低。

本篇文章就来为大家介绍一下在CentOS上实现Nginx,Mariadb,hhvm及lnmp/lamp快速安装部署的方法,让你轻松用上HHvm建站环境,体验HHvm极致性能。想要尝试更多的服务器web组件搭配的,可以试试:

HHvm建站环境搭建方法:Nginx,Mariadb,hhvm及lnmp/lamp安装部署

一、 HHvm建站环境安装前准备

1、本文以 CentOS 6.5 X86_64 为例,同时请各位使用 64 位系统安装 hhvm,VPS 内存不大的孩子们(128M 这种)、还是放弃吧,HHVM 太折腾。

2、执行如下命令,添加源:


rpm -ivh https://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum -y install https://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
wget -O /etc/yum.repos.d/hop5.repo https://www.hop5.in/yum/el6/hop5.repo 

3、除了上面的三个,我们还需要添加一下 MariaDB 的源:vim /etc/yum.repos.d/MariaDB.repo ,然后在文件中加入如下内容:


[mariadb]
name = MariaDB 
baseurl = https://yum.mariadb.org/5.5/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1 

4、至此,要用的源都有了。顺便执行一下 yum clean all;yum makecache 。如果出现问题的话,将如下 hosts 加入到你的 VPS(这是我暂时反代的,如果反代失效了你就自己反代一个然后加 hosts):


192.243.116.132 www.hop5.in
192.243.116.132 nginx.org 

二、安装Nginx、Mariadb、hhvm

1、安装 nginx,执行命令:yum install nginx -y ,然后可以选择删除相应的文件目录:rm -rf /etc/nginx/conf.d/

2、安装 mariadb ,执行命令:yum install MariaDB-server MariaDB-client MariaDB-devel -y

3、在安装完毕后启动 mysql 并执行一下配置向导,命令如下:


service mysql start 
mysql_secure_installation 

4、第一个要求输入密码的直接按回车(因为默认安装密码为空),然后跟着向导走。如图(点击放大):

HHvm建站配置数据库

3、安装 hhvm 所需要的依赖环境:


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 

4、安装完上面的杂碎,然后就正式开始安装 hhvm,命令:yum install hhvm -y

5、如果出现“hhvm: error while loading shared libraries: liblcms2.so.2: cannot open shared object file: No such file or directory”错误,执行如下命令:


yum -y install https://pkgrepo.linuxtech.net/el6/release/x86_64/liblcms2-2.4-1.el6.x86_64.rpm 

6、安装成功的话,下载 linuxeye 的启动文件替换原来的:


wget -O /etc/init.d/hhvm https://cdn.zntec.cn/store/tools/vhost_hhvm/hhvm
chmod +x /etc/init.d/hhvm 

4、安装 memcached(可选,不过我建议如果是 WordPress 的话还是安装吧):yum install memcached -y

三、配置并运行HHvm建站环境

1、首先,设为开机启动是必须的:


chkconfig nginx on
chkconfig mysql on
chkconfig hhvm on
chkconfig memcached on 

2、给 hhvm 单独新建个配置,方便日后使用:vi /etc/nginx/hhvm.conf ,然后在里面加入如下内容:


location ~ [^/]\.php(/|$) {
fastcgi_keep_conn on;
fastcgi_pass   unix:/var/run/hhvm/sock;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
include        fastcgi_params;
} 

3、然后删掉原先的配置文件自己新建 hhvm 配置:


rm -rf /etc/hhvm/*
vi /etc/hhvm/server.ini 

4、在其中加入如下内容:


; php options
pid = /var/run/hhvm/pid

; hhvm specific
;hhvm.server.port = 9001
hhvm.server.file_socket = /var/run/hhvm/sock
hhvm.server.type = fastcgi
hhvm.server.default_document = index.php
hhvm.log.use_log_file = true
hhvm.log.file = /var/log/hhvm/error.log
hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc

5、然后编辑:vi /etc/hhvm/config.hdf ,加入如下内容:


ResourceLimit {
  CoreFileSize = 0          # in bytes
  MaxSocket = 10000         # must be not 0, otherwise HHVM will not start
  SocketDefaultTimeout = 5  # in seconds
  MaxRSS = 0
  MaxRSSPollingCycle = 0    # in seconds, how often to check max memory
  DropCacheCycle = 0        # in seconds, how often to drop disk cache
}

Log {
  Level = Info
  AlwaysLogUnhandledExceptions = true
  RuntimeErrorReportingLevel = 8191
  UseLogFile = true
  UseSyslog = false
  File = /var/log/hhvm/error.log
  Access {
    * {
      File = /var/log/hhvm/access.log
      Format = %h %l %u % t \"%r\" %>s %b
    }
  }
}

MySQL {
  ReadOnly = false
  ConnectTimeout = 1000      # in ms
  ReadTimeout = 1000         # in ms
  SlowQueryThreshold = 1000  # in ms, log slow queries as errors
  KillOnTimeout = false
}

Mail {
  SendmailPath = /usr/sbin/sendmail -t -i
  ForceExtraParameters =
}

6、新建站点配置: vi /etc/nginx/conf.d/xxxxx.conf ,加入如下配置:


server {
	listen 80;
	server_name xxxxx;
	index index.html index.htm index.php;
	root  /home/wwwroot/xxxxx;

	#include wordpress.conf;
	include hhvm.conf;

	location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
		expires      30d;
	}

	location ~ .*\.(js|css)?$ {
		expires      12h;
	}

	access_log  /home/wwwlogs/xxxxx.log;
}

7、然后记得给自己生成个日志文件和相关的目录:


mkdir /home/wwwroot
mkdir /home/wwwlogs
touch /home/wwwlogs/xxxxx.log

8、请把如上内容中的 “xxxxx” 改为你的域名,然后把网站文件放在 /home/wwwroot/xxxxx 下即可搭建网站(lnmp 用习惯了,目录习惯改不掉了)

9、注意:如果你的站点是 wordpress,就把上面配置代码中的 include wordpress.conf 前的“#”号去掉,然后编辑:vi /etc/nginx/wordpress.conf ,加入如下内容:


location / {
        try_files $uri $uri/ /index.php?$args;
}

# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

10、重启一下 nginx 看看可否启动: service nginx restart 。如果启动的时候说端口被占用了,就看看 netstat -anp | grep hhvm ,估计你得到的结果就 hhvm 占用了 80 端口。 执行命令: pkill hhvm

11、然后再重新启动 nginx 就会显示 OK 了。最后晒个探针图(点击放大):

HHvm建站PHP探针

12、 这样配置的阿里云,使用 hhvm 用探针做性能测试的话,如下图(点击放大):

HHvm建站测试性能

13、利用上文介绍的搭建hhvm 的方法,管理数据库之类的可以使用 phpmyadmin ,在线管理文件可以使用 kodexplorer ,如果是再次新建站点的时候就直接执行:


cp /etc/nginx/conf.d/xxxxx.conf /etc/nginx/conf.d/xxx.conf 

四、LNMP+HHVM建站环境配置

1、在目前的国人网络里面,可以说、建站用的最多的就是 CentOS 6 和军哥的 lnmp 一键包了。这里再介绍一如何在 CentOS 6 使用 lnmp 一键包中加入 HHVM。首先在 CentOS 6 下安装好 lnmp 一键包。参考:LNMP新版VPS主机控制面板安装和VPSMate小众化的VPS面板使用

2、使用linuxeye的一键包安装并稍微配置 hhvm。


wget https://mirrors.linuxeye.com/lnmp.tar.gz
tar zvxf lnmp.tar.gz
cd lnmp
./install.sh

3、按照下图操作,我们只安装 hhvm 就够了(点击放大)。

HHvm建站直接安装LNMP

4、然后修改部分文件,先修改 /etc/hhvm/server.ini,保持为如下内容。


; php options
pid = /var/run/hhvm/pid

; hhvm specific
;hhvm.server.port = 9001
hhvm.server.file_socket = /var/run/hhvm/sock
hhvm.server.type = fastcgi
hhvm.server.default_document = index.php
hhvm.log.use_log_file = true
hhvm.log.file = /var/log/hhvm/error.log
hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc

5、然后修改 /etc/hhvm/config.hdf,保持为如下内容。


ResourceLimit {
  CoreFileSize = 0          # in bytes
  MaxSocket = 10000         # must be not 0, otherwise HHVM will not start
  SocketDefaultTimeout = 5  # in seconds
  MaxRSS = 0
  MaxRSSPollingCycle = 0    # in seconds, how often to check max memory
  DropCacheCycle = 0        # in seconds, how often to drop disk cache
}

Log {
  Level = Info
  AlwaysLogUnhandledExceptions = true
  RuntimeErrorReportingLevel = 8191
  UseLogFile = true
  UseSyslog = false
  File = /var/log/hhvm/error.log
  Access {
    * {
      File = /var/log/hhvm/access.log
      Format = %h %l %u % t \"%r\" %>s %b
    }
  }
}

MySQL {
  ReadOnly = false
  ConnectTimeout = 1000      # in ms
  ReadTimeout = 1000         # in ms
  SlowQueryThreshold = 1000  # in ms, log slow queries as errors
  KillOnTimeout = false
}

Mail {
  SendmailPath = /usr/sbin/sendmail -t -i
  ForceExtraParameters =
}

6、下载 linuxeye 现成的启动文件并设为开机启动。


wget -O /etc/init.d/hhvm https://cdn.zntec.cn/store/tools/vhost_hhvm/hhvm
chmod +x /etc/init.d/hhvm
chkconfig hhvm on

7、至此为止,HHVM 算是安装也配置好了。下载zntec.cn博主基于 lnmp 中 vhost 脚本修改后的 hhvm 虚拟主机脚本:


wget -O /root/vhost_hhvm.sh https://cdn.zntec.cn/store/tools/vhost_hhvm/vhost_hhvm.sh
chmod +x ~/vhost_hhvm.sh

8、然后创建 HHVM 主机的时候就使用 ~/vhost_hhvm.sh 命令。

五、lnmp、lamp、lnmpa+HHvm一键安装

1、上面在安装LNMP+HHvm时,我们已经用到了linuxeye.com开发的lnmp、lamp、lnmpa+HHvm一键安装包。官方网站:

  • 1、项目首页:https://blog.linuxeye.com/31.html
  • 2、Github地址:https://github.com/lj2007331/lnmp

2、lnmp/lamp/lnmpa(Linux、Nginx/Tengine、MySQL/MariaDB/Percona、PHP),适用于CentOS 5~7(包括redhat)、Debian 6~8、Ubuntu 12.04~15.04的32位和64位。

3、lnmp、lamp、lnmpa+HHvm一键安装包最大的特点就可以让你一键安装Nginx/Tengine、Apache、PHP、Redis、memcached,同时提供ZendOPcache、xcache、apcu、eAccelerator及php加解密工具ionCube、ZendGuardLoader一键安装。

4、不会安装的可以直接使用lnmp、lamp、lnmpa+HHvm一键安装包,支持CentOS 6、7下HHVM安装。执行命令:


yum -y install wget screen #for CentOS/Redhat
#apt-get -y install wget screen # for Debian/Ubuntu
wget https://aliyun-oss.linuxeye.com/lnmp-full.tar.gz #阿里云内网下载
wget https://mirrors.linuxeye.com/lnmp-full.tar.gz # 包含源码,国内外均可下载
wget https://mirrors.linuxeye.com/lnmp.tar.gz # 不包含源码,建议仅国外主机下载
tar xzf lnmp-full.tar.gz
#tar xzf lnmp.tar.gz
cd lnmp # 如果需要修改目录(安装、数据存储、Nginx日志),请修改options.conf文件
screen -S lnmp # 如果网路出现中断,可以执行命令`screen -r lnmp`重新连接安装窗口
./install.sh # 请勿sh install.sh或者bash install.sh这样执行

5、 根据你的需要,你可以选择lnmp、lamp、lnmpa任意搭配,Apache、PHP、MysqL等都可以选择不同的版本。(点击放大)

HHvm LNMP一键安装

6、同时你也可以选择相应的组件,例如ZendOPcache、xcache、apcu、eAccelerator等等。(点击放大)

HHvm LNMP选择安装组件

7、添加虚拟主机时请直接使用以下命令:


cd ~/lnmp # 必须进入lnmp目录下执行
./vhost.sh

8、你可以设置网站的目录、绑定域名、防盗链、静态规则、访问日志等。如果你安装了HHvm,你创建虚拟主机时会让你选择是使用PHP还是HHvm。(点击放大)

HHvm LNMP创建网站

六、 HHVM 建站环境小结

1、在使用HHVM过程中我们经常会遇到服务器502错误。 如果你使用的是军哥的LNMP一键安装包,在lnmp 中已经有现成的解决方案可供参考。


yum install crontabs -y
cp lnmp1.1-full/check502.sh ~/
vim ~/check502.sh

2、把脚本中相应的内容修改为下图方框所示:

HHvm建站解决502错误

3、修改完之后执行如下命令导入到定时任务:


echo "* * * * * /root/check502.sh" /var/spool/cron/root

4、HHvm建站环境对于提升PHP的性能是非常有帮助的,但是当前有不少的PHP程序对于HHvm还不是完美兼容,已知Wordpress在HHvm中运行没有任何问题,国内的Discuz!论坛在HHvm上有部分问题。

文章出自小蒋博客博主,由部落编辑整理。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

十个便宜VPS主机分享-VPS服务器建站和搭建应用服务体验
2014年六大免费VPS主机-免费VPS申请、使用和点评

您或许对下面这些文章有兴趣:                    本月吐槽辛苦排行榜

在这个部落村庄里,已经有61 位神马家族成员冒出泡来在农场开始干活了
  • ne

    HHvm对于Wordpress最好了,其它的程序有或多或少的问题。

    longskay 回复:

    @ne, 插一插

    烟花易冷 回复:

    @ne, 除了wordpresstypecho也还行,可以自己写一个兼容的博客就好了

    qi 回复:

    @烟花易冷, typecho也能正常运行在HHvm吗?

    wordpress优化 回复:

    @qi, 可以的

    这是农场的第 1 块农田,部落批准 [ne] 在[2015-7-2 20:13]开垦完成.
  • 可惜没有Windows的,不管是cygwin还是vc都编译不出来。最近再做一个windows上的项目,发现hhvm和php7都不能用、

    烟花易冷 回复:

    @快乐家园, 当然叻目前php7还不能运行在win,到时候发布了就可以啦。。PHP5.6吧。。我平板也在用也不错了

    快乐家园 回复:

    @烟花易冷, 然后我下载了php5.6,运行失败。5.5,失败。最后只好用5.4,做完才发现他们的服务器是windows2003,不支持php5.5及以上版本。亏我花了那么多时间编译php

    快乐家园 回复:

    @烟花易冷, 刚看了下,php7 windows alpha2出来了。可以正常在win8运行。现在在编译windows tengine。

    qi 回复:

    @快乐家园, windows 运行PHP不是很麻烦吗?

    快乐家园 回复:

    @qi, 所以、我做那个项目配置了整整一天的环境、他们的机子上还有php5.2,mysql5.0.0,iis6然后要做一个WNMP共存… :arrow:

    babytomas 回复:

    @烟花易冷, 土豪用 windows 平板

    这是农场的第 2 块农田,部落批准 [快乐家园] 在[2015-7-2 20:15]开垦完成.
  • 完了跟不上第一名了

    这是农场的第 3 块农田,部落批准 [longskay] 在[2015-7-2 20:59]开垦完成.
  • 现在@qi的文章技术含量越来越高了

    qi 回复:

    @longskay, 投稿博主的功劳。

    这是农场的第 4 块农田,部落批准 [longskay] 在[2015-7-2 21:00]开垦完成.
  • Kung 23

    我去。。突然就更新了- –

    这是农场的第 5 块农田,部落批准 [Kung] 在[2015-7-2 21:15]开垦完成.
  • 确实,技术含量太高,我只能上来签签到了。

    这是农场的第 6 块农田,部落批准 [总有刁民想害朕] 在[2015-7-2 22:28]开垦完成.
  • 学习了。

    这是农场的第 7 块农田,部落批准 [南国羽] 在[2015-7-2 22:34]开垦完成.
  • 亡月帝 7

    什么时候写个wordpress整合html富文本编辑器的教程~~

    qi 回复:

    @亡月帝, 不知道有没有这样的插件。

    babytomas 回复:

    @亡月帝, 现在 wordpress 自带的编辑器就可以呀 。。。

    亡月帝 回复:

    @babytomas, 发现更好的编辑器,可是没找到集成的教程….连思路都没,求思路

    qi 回复:

    @亡月帝, 现在不都是用离线编辑器吗?

    亡月帝 回复:

    @qi, 只是想研究一下,最近都没什么东西好写

    qi 回复:

    @亡月帝, 喜欢的话可以折腾一下。

    这是农场的第 8 块农田,部落批准 [亡月帝] 在[2015-7-3 06:59]开垦完成.
  • 文章都没看先评论,还是没抢到前排。

    这是农场的第 9 块农田,部落批准 [Python Swift] 在[2015-7-3 08:43]开垦完成.
  • 国外VPS就用不着反代那一步了吧?

    qi 回复:

    @Python Swift, 是的,国外的可以,添加Hosts主要是针对国内的VPS主机,下载不成功。

    这是农场的第 10 块农田,部落批准 [Python Swift] 在[2015-7-3 08:50]开垦完成.
  • 这是个好东西,只是要运行在64位的机器上,好蛋疼啊好蛋疼。。。
    蛋疼实验室准备要改全静态了

    qi 回复:

    @不认识, 全静态改起来比较麻烦,改完了还会遇到各种各样的问题。

    这是农场的第 11 块农田,部落批准 [不认识] 在[2015-7-3 11:33]开垦完成.
  • 我的整数运算和浮点运算都是0.007秒。呵呵!搭建在openshift上。

    qi 回复:

    @lihaolanlhl,openshift的机子本身也不错的。

    这是农场的第 12 块农田,部落批准 [lihaolanlhl] 在[2015-7-3 18:32]开垦完成.
  • 128MB内存的vps是可以安装hhvm的,并且还不错,如果觉得配nginx费内存的话就换lighttpd,我很久之前128的内存安装之后只占用了70+内存,现在暂时不研究这个啦,我写的一键安装ghost博客的脚本差不多啦正在准备入新vps测试~~~

    qi 回复:

    @烟花易冷, 期待博主的一键安装脚本。HHvm官方不是说要大内存才能发挥它的作用吗?

    这是农场的第 13 块农田,部落批准 [烟花易冷] 在[2015-7-3 18:32]开垦完成.
  • 用过一段时间,不稳定

    qi 回复:

    @Andrew, 有程序不兼容,内存经常会爆掉。

    这是农场的第 14 块农田,部落批准 [Andrew] 在[2015-7-3 22:38]开垦完成.
  • 一直在使用hhvm,运行wordpress完美

    qi 回复:

    @wordpress优化, 是呀,你的都是秒开。

    longskay 回复:

    @wordpress优化, 速度确实快 放国内了吗

    wordpress优化 回复:

    @longskay, 嗯,腾讯云

    这是农场的第 15 块农田,部落批准 [wordpress优化] 在[2015-7-4 15:45]开垦完成.
  • 正打算使用 hhvm ,不过貌似略复杂啊

    qi 回复:

    @便宜vps推荐, 有些复杂。

    wordpress优化 回复:

    @便宜vps推荐, 用AMH面板安装很方便

    这是农场的第 16 块农田,部落批准 [便宜vps推荐] 在[2015-7-4 15:55]开垦完成.
  • oww 2

    博主网站可以友链吗?

    这是农场的第 17 块农田,部落批准 [oww] 在[2015-7-5 00:08]开垦完成.
  • 现在没钱玩vps了!

    这是农场的第 18 块农田,部落批准 [黄良钵博客] 在[2015-7-5 10:12]开垦完成.
  • babytomas

    :cool: 阿里云、腾讯云、青云,目前主流的国内云用这个 epel 源都安装成功了。

    不过国外的一个 ovz 反倒安装失败了,国外 VPS 的孩子可以试试把 epel 源换成 fedora 的、或许会更好。

    qi 回复:

    @babytomas, 看到博主的一键安装包了。

    这是农场的第 19 块农田,部落批准 [babytomas] 在[2015-7-5 12:07]开垦完成.
  • 上次用一键包没有装好,还是老老实实的用了lnmp

    qi 回复:

    @正版软件爱分享, 这次又出一个一键安装包:https://www.zntec.cn/archives/centos6-lnmh.html

    这是农场的第 20 块农田,部落批准 [正版软件爱分享] 在[2015-7-5 20:48]开垦完成.
  • 对于x86(32位)系统,没有啥用,装都装不了。
    nginx+fastcgi对于vps已经足够,兼容性也够好。
    hhvm的优点有一点值得称道,它可以避免PHP官方版总是爆出bug和漏洞的缺点。

    这是农场的第 21 块农田,部落批准 [王琪亮] 在[2015-7-8 16:14]开垦完成.
  • 有时间折腾下

    这是农场的第 22 块农田,部落批准 [WordPress主题] 在[2015-7-15 01:40]开垦完成.
  • 小z 6

    AMH5.0好像支持HHVM,安装也比较简单,不过需要收费。

    qi 回复:

    @小z, 是的,AMH是不是支持Apache?

    这是农场的第 23 块农田,部落批准 [小z] 在[2015-7-16 15:54]开垦完成.
  • 山猫 1

    lighttpd+hhvm+typecho+sqlite,内存占用35M左右。

    qi 回复:

    @山猫, hhvm不是说是占内存大户吗?

    山猫 回复:

    @qi, 没感觉到喵,我VPS上用着还不错,不过我上次用centos6.5装hhvm,1g内存刚装上就跑满,问大神说是内存泄露,这次用的debian8没有问题 :mrgreen:

    qi 回复:

    @山猫, hhvm官方说建议安装在2GB内存上,说这样才能发挥出hhvm的性能。

    山猫 回复:

    @qi, 官方都比较保守,只要比php性能好就可以了。听说php7的性能已经接近hhvm了,以后兼容ok了就可以直接用php7了 :idea:

    qi 回复:

    @山猫, php7在测试中确实相当好。性能上有提升,同时又可以兼容PHP程序。

    山猫 回复:

    @qi, 暂时不敢用php7,兼容这个坑太大了 :?:

    qi 回复:

    @山猫, 后续应该有不少的程序会跟进吧。

    这是农场的第 24 块农田,部落批准 [山猫] 在[2015-7-19 10:14]开垦完成.
看贴要回贴有N种理由!看帖不回贴的后果你懂得的!


(Ctrl + Enter提交)   

部落快速搜索栏

热门点击排行榜

网站导航栏

X
返回顶部