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组件搭配的,可以试试:
- 1、Lighttpd:Lighttpd与HHVM快速搭建方法-让小内存VPS主机体验极致PHP性能
- 2、负载均衡:免费空间+便宜VPS和OpenResty,Ngx_lua,Redis搭建系统负载均衡环境
- 3、Tengine:淘宝基于Nginx高效稳定针对大访问请求的Tengine服务器快速搭建方法
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、第一个要求输入密码的直接按回车(因为默认安装密码为空),然后跟着向导走。如图(点击放大):
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 了。最后晒个探针图(点击放大):
12、 这样配置的阿里云,使用 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 就够了(点击放大)。
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等都可以选择不同的版本。(点击放大)
6、同时你也可以选择相应的组件,例如ZendOPcache、xcache、apcu、eAccelerator等等。(点击放大)
7、添加虚拟主机时请直接使用以下命令:
cd ~/lnmp # 必须进入lnmp目录下执行
./vhost.sh
8、你可以设置网站的目录、绑定域名、防盗链、静态规则、访问日志等。如果你安装了HHvm,你创建虚拟主机时会让你选择是使用PHP还是HHvm。(点击放大)
六、 HHVM 建站环境小结
1、在使用HHVM过程中我们经常会遇到服务器502错误。 如果你使用的是军哥的LNMP一键安装包,在lnmp 中已经有现成的解决方案可供参考。
yum install crontabs -y
cp lnmp1.1-full/check502.sh ~/
vim ~/check502.sh
2、把脚本中相应的内容修改为下图方框所示:
3、修改完之后执行如下命令导入到定时任务:
echo "* * * * * /root/check502.sh" /var/spool/cron/root
4、HHvm建站环境对于提升PHP的性能是非常有帮助的,但是当前有不少的PHP程序对于HHvm还不是完美兼容,已知Wordpress在HHvm中运行没有任何问题,国内的Discuz!论坛在HHvm上有部分问题。
HHvm建站环境搭建方法:Nginx,Mariadb,hhvm及lnmp/lamp安装部署的更多相关文章
- HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客
HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客 VPS主机 2014年06月02日 17:20 评论» 文章目录 Debian上安装 Ce ...
- LNMP环境搭建:Nginx安装、测试与域名配置
Nginx作为一款优秀的Web Server软件同时也是一款优秀的负载均衡或前端反向代理.缓存服务软件 2.编译安装Nginx (1)安装Nginx依赖函数库pcre pcre为“perl兼容正则表达 ...
- XE6移动开发环境搭建之IOS篇(2):安装虚拟机(有图有真相)
XE6移动开发环境搭建之IOS篇(2):安装虚拟机(有图有真相) 2014-08-15 22:04 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的内容.傻瓜式的表 ...
- 512MB内存VPS服务器安装宝塔WEB客户端建站 - 环境部署篇
原本以为我们很多网友用VPS搭建网站不会用WEB面板,而采用一键包或者自己部署编译环境,但是最后发现其实目前我们使用WEB面板的还是挺多的,无论是免费还是付费的都有不少人使用.比如当初一直免费的AMH ...
- LNMP小项目搭建,Centos7.6环境搭建Linux+nginx+mysql+php,wordpress个人博客的搭建(完整搭建步骤)
一.LNMP搭建,基于nginx服务器搭建wordpress个人博客 准备环境:centos7.6环境下web服务器(nginx+php):主机名:web01,ip:192.168.248.172my ...
- Linux学习之十--.Net Core环境搭建以及Nginx的搭建
一.Centos7下.Net Core 环境安装: 链接:https://www.microsoft.com/net/core#linuxcentos 按照步骤来: yum install libun ...
- windows下vue+webpack前端开发环境搭建及nginx部署
一.开发环境搭建 1.前端框架一般都依赖nodejs,我们首先要安装node.js.请参考http://www.cnblogs.com/wuac/p/6381819.html. 2.由于许多npm的源 ...
- 【Spark】Spark必不可少的多种集群环境搭建方法
目录 Local模式运行环境搭建 小知识 搭建步骤 一.上传压缩包并解压 二.修改Spark配置文件 三.启动验证进入Spark-shell 四.运行Spark自带的测试jar包 standAlone ...
- opencv在vc2010 express下环境搭建方法笔记+空白通用工程(已编译测试通过)(提供下载)
opencv在VC2010 express版本下的环境搭建可以参见下面的wiki,这里面讲的非常清楚. http://wiki.opencv.org.cn/index.php/VC_2010_Expr ...
随机推荐
- 双向链表-java完全解析
原文:https://blog.csdn.net/nzfxx/article/details/51728516 "双向链表"-数据结构算法-之通俗易懂,完全解析 1.概念的引入 相 ...
- 「SHOI2015」自动刷题机
/* 有理有据的二分答案 因为在过程中最多减到零 所以n越小显然就能刷更多的题 无解时就是无论如何也无法得到k , 这个特判一下即可 */ #include<cstdio> #includ ...
- mysql监控以及调优
mysql 优点: 简单易用,成本低,易扩展,复制功能领先 mysql的生命周期: Mysql服务器监听3306端口>验证访问用户>创建mysql线程>检查内存(Qcache)> ...
- Python - Django - 登录页面
登录页 login.html: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta char ...
- 3.纯 CSS 创作一个容器厚条纹边框特效
原文地址:3.纯 CSS 创作一个容器厚条纹边框特效 没有啥好点子呀,不爽 HTML代码: <div class="box"> <div class=" ...
- smfony设置量表之间的关系
设置量表之间的关系 验证是否ok 查看我们定义是否有问题 数据库操作 http://www.2cto.com/database/201504/387197.html 设置时间段数据库自动插入时间 不 ...
- Redis hash数据结构
1, 新增一个 hash 或者 新增数据 => hset key field value 2, 获取某个字段值 => hset key field 3, 获取所有字段值 => hge ...
- remote Request
import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; ...
- DrawDib 使用例子<转>
#include<vfw.h>#pragma comment(lib,"Vfw32.lib") BITMAPINFOHEADER biHeader; memset(&a ...
- eclipse在运行main方法时在console里面报内存溢出的错误解决办法
修改JVM的配置. window-->preferences-->Java-->installedJres选中使用的jdk/jre版本 点击右边的edit在弹出的对话框中的[Defa ...