关注Server领域很久了,各种工具层出不穷,C的h2o,java的vert.x,php的swoole,go的fasthttp-postgresql,都是各自领域性能极强的http server,也符合行业新规范和特性。

此前,Swoole已经用在实际项目中了,效果的确惊人。当我还没有从惊叹中回过神,又来了一个H2o,根据TechEmpower的Web Framework Benchmarks测试结果,特别想一探究竟,这个H2o为何如此之快!

于是就有了下列教程,废话不多说,Let's do it.

root账户下的安装,中间如果出现了没有安装某种工具的提示,请自行安装。

第一步:先更新系统

yum install epel-release -y
yum clean all && sudo yum update -y

第二步:配置所需要的源,并安装H2O

vim /etc/yum.repos.d/bintray-h2o-rpm.repo将此段代码加入文件中
[bintray-h2o-rpm]
name=bintray-h2o-rpm
baseurl=https://dl.bintray.com/tatsushid/h2o-rpm/centos/$releasever/$basearch/
gpgcheck=0
repo_gpgcheck=0
enabled=1保存文件后执行安装命令
yum install h2o -y

第三步:给H2O创建用户组和账户

groupadd -g 101 h2o
useradd -d /etc/h2o -g 101 -M -s /sbin/nologin -u 101 h2o

接下来,就要配置H2O的conf文件了(桥黑板,划重点)

第四步:

cd /etc/h2o/
mv h2o.conf h2o.conf.original
vim h2o.conf

把下面的配置文件写入h2o.conf

listen:port: 80
access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.html','index.php' ]
hosts:"www.test.cn":paths:/:file.dir: /www/web/tests/basic/web  # 网站的运行目录redirect:url: /index.php/ # 我的Yii2用到的重写规则internal: YES  # 内部执行status: 307
file.custom-handler:extension: .phpfastcgi.connect:port: /run/php-fpm-7.2.socktype: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:HTTP_PROXY: ""
user: h2o # 刚才分配的用户,改成你自定义的

然后,执行以下命令:

systemctl enable h2o
systemctl start h2o

记得将你的程序放入配置的目录中。

如果遇到了不能连接或者网站无法访问的情况,记得修改防火墙配置;

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload

第五步:安装PHP7.2

安装教程不再写了,网上很多,只写安装完成后的操作。

安装完成后,找到php-fpm安装目录,修改php-fpm.conf和www.conf,记得备份一份!!

php-fpm文件内容include=/etc/opt/remi/php72/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-7.2-error.log
pid = /var/run/php-fpm-7.2.pid
process_control_timeout = 10s
www.conf文件[www]
group = h2o
listen = /var/run/php-fpm-7.2.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o

然后修改php.ini文件

[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/var/opt/remi/php72/lib/php/session/"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

保存后,需要将session目录授权给h2o用户

chown root.h2o /var/opt/remi/php71/lib/php/session/

启动php-fpm

systemctl enable php72-php-fpm
systemctl start php72-php-fpm

最后:

以daemon模式启动h2o,并且加载/etc/h2o/h2o.conf配置文件

启动命令

h2o -m daemon -c /etc/h2o/h2o.conf

停掉服务的命令是:

kill -TERM `cat /var/run/h2o/h2o.pid`

PS: 如果有朋友遇到Yii2各种报错,但是扩展命名已经装了,记得让php-fpm重新加载配置,方法:

ps aux|grep php-fpm  找到mater进程的pid,

然后kill -USR2 pid,通过进程信号告知php-fpm重新加载

命令参考:

“TERM 立刻终止
QUIT 平滑终止
USR1 重新打开日志文件
USR2 平滑重载所有worker进程并重新载入配置和二进制模块”

运行成功,路由成功解析,报错请无视,因为Oauth2认证需要带Authorization头标签。

速度的确很快,对比结果没有贴出,因为是用实际项目测试的,没保存。。。持续研究中,对于Go的fasthttp-postgresql,我也有较高期待,等待进一步探索。

CentOS7下安装H2o的经历(How did I install the h2o in centos7?)相关推荐

  1. Centos7下安装Docker

    Centos7下安装Docker(详细的新手装逼教程) 参考: https://www.cnblogs.com/qgc1995/archive/2018/08/29/9553572.html 早就听说 ...

  2. linux 安装redis2.8.3,centos7下安装Redis2.8版本步骤

    Redis 简介 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zs ...

  3. linux Centos7下安装python3及pip3

    linux Centos7下安装python3及pip3 先去python官网下载python3安装包 执行命令: wget https://www.python.org/ftp/python/3.6 ...

  4. 学习笔记(1)centos7 下安装nginx

    学习笔记(1)centos7 下安装nginx 这里我是通过来自nginx.org的nginx软件包进行安装的. 1.首先为centos设置添加nginx的yum存储库 1.通过vi命令创建一个rep ...

  5. centos7下安装mariadb

    centos7下安装mariadb 参考: http://www.cnblogs.com/Netsharp/p/5875474.html https://downloads.mariadb.org/m ...

  6. CentOS7下安装nginx1.99

    文章目录 1.前期准备 1.1 安装gcc 1.2 安装其他依赖包 1.3 下载安装包 2.安装nginx 2.1 解压nginx 2.2 编译安装 2.3 启动 2.4 常用命令 3.Nginx配置 ...

  7. CentOS7下安装GUI图形界面

    1.如何在centOS7下安装GUI图形界面 当你安装centOS7服务器版本的时候,系统默认是不会安装GUI的图形界面程序,这个需要手动安装CentOS7 Gnome GUI包. 2.在系统下使用命 ...

  8. 在CentOS7下安装MySQL8数据库

    在CentOS7下安装MySQL8数据库 一 准备Linux环境 默认已安装:Linux虚拟机+ CentOS 笔者用的是如下版本: VMware15:VMware-workstation-full- ...

  9. Redis基础2(Centos7 下 安装redis)

    Centos7 下 安装redis redis是一个软件,帮助开发者对一台机器的内存进行操作. 1.安装redis 第一步:下载redis安装包 命令 :wget http://download.re ...

  10. 阿里云服务器——centos7下安装MySQL,并且实现远程连接

    centos7下安装MySQL,并且实现远程连接 1.先查看MySQL是否安装 rpm -qa|grep mysql 2.更新yum源 wget https://dev.mysql.com/get/m ...

最新文章

  1. vs2010的基础设置
  2. Android零基础入门第89节:Fragment回退栈及弹出方法
  3. 年前最后一期!知识图谱理论与实战(线下集训)
  4. jQuery遇见的转化关联数组为json的坑
  5. 智能家居设备_您的智能家居设备正在监视您吗?
  6. 数据结构五——二叉树
  7. pythonjam可以画图吗_GitHub - jamfs/pyecharts: Python Echarts Plotting Library
  8. UI设计为什么要使用Figma?
  9. 人人都是产品经理 笔记
  10. 【dfs+简单贪心】Leaf Sets【Codeforces Round #510 (Div. 2)】
  11. uni-ap开发开发小程序 怎么使用阿里云播放器
  12. Windows 7和Windows10 修改文件、文本文档后缀时不显示后缀名真么办?
  13. Qt系列文章之 QMessageBox
  14. CORTEX-M4F基本知识
  15. 《元宇宙2086》亮相金鸡奖中国首部元宇宙概念院线电影启动
  16. 夜神模拟器之burp抓包
  17. 递归求第五个人的年龄
  18. 只用显示器连接云服务器,显示器连接云服务器
  19. main函数的argc与arg
  20. 《React极简教程》第一章 Hello,World!

热门文章

  1. 建立AI智能系统智商评测体系,开展世界人工智能智商评测
  2. Linux 字体存放位置及字体安装
  3. 如何用MATLAB读取大文本文件
  4. 【光线追踪系列五】漫反射(Diffuse)
  5. revel MySQL_Revel 教程
  6. 服务器443端口响应代码,使用443端口远程服务器
  7. ACdream 1069 无耻的出题人 无聊写着玩的题
  8. S32K144(12)FTM
  9. 基于Harry Potter的数据可视化
  10. scp 传目录_目录传输命令scp