早在上个月的时候我就发过了《 CentOS 下军哥 LNMP 安装 HHVM》,但是有许多人和我一样并不喜欢编译安装的方式来搭建环境。

CentOS 下 yum 搭建 nginx、mariadb、hhvm 高效环境在 debian/ubuntu 下搭建 lnmh 环境简直是易如反掌,反之、在 CentOS 上却有各种问题,各种缺乏支持库、各种奇葩。今天就来写一篇如何以正确姿势安装的文章吧。

注意事项:

1、本文以 CentOS 6.5 X86_64 为例。

2、同时请各位使用 64 位系统安装 hhvm。

3、VPS 内存不大的孩子们(128M 这种)、还是放弃吧,HHVM 太折腾。


一、添加源

执行如下命令,添加源:

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

除了上面的三个,我们还需要添加一下 MariaDB 的源:

vim /etc/yum.repos.d/MariaDB.repo

在文件中加入如下内容:

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

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

192.243.116.132 www.hop5.in
192.243.116.132 nginx.org

二、安装软件

1、安装 nginx

yum install nginx -y
#rm -rf /etc/nginx/conf.d/

2、安装 mariadb

yum install MariaDB-server MariaDB-client MariaDB-devel -y

在安装完毕后启动 mysql 并执行一下配置向导:

service mysql start
mysql_secure_installation

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

CentOS 下 yum 搭建 nginx、mariadb、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

安装完上面的杂碎,然后就正式开始安装 hhvm:

yum install hhvm -y

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

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

安装成功的话,下载 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

三、配置软件

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

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

1、给 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;
}

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

rm -rf /etc/hhvm/*
vi /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

然后:

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 =
}

3、新建站点配置:

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;
}

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

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

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

如果你的站点是 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;

重启一下 nginx 看看可否启动:

service nginx restart

如果启动的时候说端口被占用了,就看看 netstat -anp | grep hhvm ,估计你得到的结果就 hhvm 占用了 80 端口。

执行命令:

pkill hhvm

然后再重新启动 nginx 就会显示 OK 了。最后晒个探针图:

CentOS 下 yum 搭建 nginx、mariadb、hhvm 高效环境这样配置的阿里云,使用 hhvm 用探针做性能测试的话,如下图:

CentOS 下 yum 搭建 nginx、mariadb、hhvm 高效环境使用 php 的话,配置比它高 3 倍,性能跟得上这样么?

使用技巧:

1、管理数据库之类的可以使用 phpmyadmin

2、在线管理文件可以使用 kodexplorer

3、再次新建站点的时候就 cp /etc/nginx/conf.d/xxxxx.conf /etc/nginx/conf.d/xxx.conf


小结

文章教程图片不是很多,因为我觉得不需要。

如果你想折腾 hhvm、可是你看不懂我的文章,请不要联系我。

感谢,因为我认为自己写的足够详细了。

下一篇文章,你们想我写什么?

目前有9条回应
Comment
Trackback
Loading ....
  • Andrew 回应于2015/07/03 22:40 回复TA

    期待一键安装包

  • 免费资源部落 回应于2015/06/29 17:42 回复TA

    博主的一键安装代码呢?

    • Tomas 回应于2015/07/01 14:14 回复TA

      折腾了个 CentOS 的,还没准备发出来 。。因为我就是直接把 yum 命令写在了一个脚本里 。。

  • 不给力的面条 回应于2015/06/29 13:16 回复TA

    之前实在 Ubuntu 上边搭建的一模一样的环境类似环境,不过用的是 Tenginx

    • Tomas 回应于2015/07/01 14:14 回复TA

      感觉 tengine 还不如 nginx 官方来的方便 。。而且我觉得 tengine 也没有传说中的那么神奇 。。。。。。不过动态加载是挺实用的

  • 吴细鸠 回应于2015/06/27 16:00 回复TA

    爸爸好!

  • 吴细鸠 回应于2015/06/27 15:56 回复TA

    爸爸,我来回复你文章啦!

    • Tomas 回应于2015/06/27 16:10 回复TA

      儿子啊,不要那么客气,好歹我是你亲爸。

  • 本篇文章没有Trackback
你目前的身份是游客,请输入昵称和电邮!