好久没有玩OpenResty,这段时间机会难得,赶紧实践一下。下面是我在rMBP的CentOS 6.9 x86_64虚拟机上安装目前最新版OpenResty 1.13.6.1的笔记。

OpenResty的下载地址是

https://openresty.org/cn/download.html

openresty 依赖库下载 openresty/1.13.6.1_nginx

下面按照步骤说明如下:


1.安装依赖包

yum -y install readline-devel pcre-devel openssl-devel gcc gcc-c++ perl curl 

openresty 依赖库下载 openresty/1.13.6.1_html_02


2.安装Drizzle Nginx模块的依赖库

这是一个通过libdrizzle直连MySQL或Drizzle数据库的nginx upstream模块。默认不包含在nginx发行包中,如果要启用的话,你需要在configure时添加--with-http_drizzle_module选项。
下面按照其依赖库libdrizzle7,采用了春哥提交的旧版本,目前官网的最新版编译不成功。因为是C++源码包,需要安装有gcc-c++库来编译。

wget http://openresty.org/download/drizzle7-2011.07.21.tar.gz
tar zxvf drizzle7-2011.07.21.tar.gz 
cd drizzle7-2011.07.21
./configure --without-server
make libdrizzle-1.0 
make install-libdrizzle-1.0

openresty 依赖库下载 openresty/1.13.6.1_配置文件_03

openresty 依赖库下载 openresty/1.13.6.1_html_04

openresty 依赖库下载 openresty/1.13.6.1_nginx_05

参考文献
https://github.com/openresty/drizzle-nginx-module#known-issues https://openresty.org/cn/drizzle-nginx-module.html
http://blog.sina.com.cn/s/blog_4f9fc6e10101868j.html


3.安装Postgres Nginx模块的依赖库
该模块默认未启用,可以在configure时添加--with-http_postgres_module来启用它。该模块需要使用外部libpq库,使用下面的命令安装
yum -y install postgresql-libs
yum -y install postgresql-devel
这两个都安装一下,不冲突,库版本号目前是8.4

参考文献
https://www.postgresql.org/ https://github.com/FRiCKLE/ngx_postgres


4.编译安装OpenResty

这次将未启用的模块也编译进来,以便后面的demo更顺利。

wget https://openresty.org/download/openresty-1.13.6.1.tar.gz
tar zxvf openresty-1.13.6.1.tar.gz
cd openresty-1.13.6.1
./configure --prefix=/opt/openresty --with-http_drizzle_module --with-http_postgres_module --with-http_iconv_module
gmake
gmake install

注意,OpenResty 1.5.8.1+之后的版本默认使用LuaJIT组件,在configure时无须使用--with-luajit编译选项
编译中发现默认使用的是LuaJIT 2.1版本

openresty 依赖库下载 openresty/1.13.6.1_OpenResty_06

openresty 依赖库下载 openresty/1.13.6.1_OpenResty_07

openresty 依赖库下载 openresty/1.13.6.1_html_08

编译完成之后的目录结构如下:

openresty 依赖库下载 openresty/1.13.6.1_OpenResty_09


5.设置环境变量
为了后面启动OpenResty的命令简单一些,不用在OpenResty的安装目录下面进行启动,我们设置环境变量来简化操作。

需要将OpenResty中的nginx可执行程序的路径添加到系统可搜索目录下面:

vim /etc/profile

在末尾添加

export PATH=/opt/openresty/nginx/sbin:$PATH

保存退出之后,使之生效

source /etc/profile

可以使用echo $PATH来查看是否已经生效

openresty 依赖库下载 openresty/1.13.6.1_html_10



将刚才安装的动态库libdrizzle.so生效

vim /etc/ld.so.conf

开头添加

/usr/local/lib

保存退出之后,执行刷新

ldconfig

执行下面的命令查看

ldconfig -p | grep --color libdrizzle

openresty 依赖库下载 openresty/1.13.6.1_nginx_11




6.配置

为了不相互干扰,我们将安装目录和开发目录分开存放,创建新目录来存放配置文件

mkdir -p ~/or_test/{conf,logs}

在~/or_test/conf/nginx.conf配置中添加如下内容

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {
    server {
        listen 20000;
        location / {
            default_type text/html;
            content_by_lua '
                ngx.say("<p>hello, world</p>")
            ';
        }
    }
}




下面了解一下OpenResty的选项


-p 设置prefix


-c 设置配置文件路径


-t 测试配置文件并退出


-s 发送指定信号给master进程


查看nginx版本号

openresty 依赖库下载 openresty/1.13.6.1_OpenResty_12



校验配置文件合法性


nginx -p ~/or_test


nginx -p ~/or_test -t


openresty 依赖库下载 openresty/1.13.6.1_openresty 依赖库下载_13


重启


nginx -p ~/or_test -s reload



查看nginx是否正常开启。

openresty 依赖库下载 openresty/1.13.6.1_配置文件_14

在目前的配置下,执行nginx命令需要每次都加上-p ~/or_test选项,否则就会变成OpenResty的默认安装路径/opt/openresty了。



7.测试


在命令行输入


curl -i http://localhost:20000


openresty 依赖库下载 openresty/1.13.6.1_nginx_15

在火狐浏览器中的效果

openresty 依赖库下载 openresty/1.13.6.1_配置文件_16


8.性能测试Benchmark
ab -c10 -n50000 http://localhost:20000/
对测试结果,我们只关心这项指标
Requests per second:    17797.10 [#/sec] (mean)

openresty 依赖库下载 openresty/1.13.6.1_nginx_17


openresty 依赖库下载 openresty/1.13.6.1_配置文件_18

对比春哥官网上的数据
https://openresty.org/cn/benchmark.html

openresty 依赖库下载 openresty/1.13.6.1_openresty 依赖库下载_19


17k+ r/s vs 20k+ r/s

略有逊色一丢丢,但是考虑到我使用的是虚拟机,而且公司网络的原因,结果还是令人满意的。