Openresty安装

        最近需要构建一个API SERVER,所以接触了Openresty,本文记录我与Openresty的第一次。

        环境:CentOS 8

 

1. 什么是Openresty?

        OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

        OpenResty通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速      构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。

 

2. 安装

2.1  依赖包

$ yum install -y pcre-devel openssl-devel gcc curl

2.2 通过Openresty源码安装

$ cd /usr/local/src
$ wget https://openresty.org/download/openresty-1.17.8.2.tar.gz
$ tar zxvf openresty-1.17.8.2.tar.gz
$ mv openresty* openresty
$ cd openresty
$ ./configure --with-luajit \
            --without-http_redis2_module \
            --with-http_iconv_module
$ gmake
$ gmake install

说明,缺省安装目录/usr/local/openresty,可以用--prefix=XXX指定安装路径,./configure --help 寻求帮助

如果您的电脑支持多核 make 工作的特性, 您可以这样编译:

 $ make -j2

2.3配置环境变量

$ vi /etc/profile
 
export PATH=/usr/local/openresty/nginx/sbin:$PATH
$ source /etc/profile

3. Hello World

 

3.1 创建工作目录

        OpenResty 安装之后就有配置文件及相关的目录的,为了工作目录与安装目录互不干扰,顺便学下简单的配置文件编写,我另外创建一个 OpenResty 的工作目录来练习。我选择在根目录下创建 openresty-test 目录,并在该目录下创建 logs 和 conf 子目录分别用于存放日志和配置文件。请注意:OpenResty使用nobody用户起工作进程,所以工作目录应该对nobody有权限。

$ cd /
$ mkdir openresty-test openresty-test/logs/ openresty-test/conf/

3.2 创建配置文件

        在上一步建立的 conf 目录下创建一个文本文件作为配置文件,命名为 nginx.conf,文件内容如下:

events {
    worker_connections 1024;
}

http {
    server {
        listen 6000;
    location / {
        default_type text/html;
 
        content_by_lua_block {
                ngx.say("HelloWorld")
            }
        }
    }
}

启动服务

$ nginx -p /openresty-test

这时,在命令行输入curl http://localhost:6000 -i试试

或者,打开浏览器输入:localhost:6000

你看见什么了?

 

4. HTTP客户端

        刚才的实例实在简单,下面写一个Lua,做点深入的事情

4.1 下载Lua客户端模块

        Openresty没有提供默认的Http客户端,需要下载第三方的http客户端。

$ cd /usr/local/openresty/lualib/resty/
$ wget https://raw.githubusercontent.com/pintsized/lua-resty-http/master/lib/resty/http_headers.lua 
$ wget https://raw.githubusercontent.com/pintsized/lua-resty-http/master/lib/resty/http.lua

客户端站点:https://github.com/pintsized/lua-resty-http

4.2 http_test.lua脚本

$ cd /openresty-test/
$ mkdir lua
$ cd lua
vim http_test.lua

脚本内容:

local http = require("resty.http") 
                               
local httpc = http.new()       
 
local resp, err = httpc:request_uri("http://s.taobao.com", { 
    method = "GET",            
    path = "/search?q=hello",  
    headers = {                
        ["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" 
    }
})

                             
if not resp then 
    ngx.say("request error :", err) 
    return 
end

ngx.status = resp.status                         
for k, v in pairs(resp.headers) do  
    if k ~= "Transfer-Encoding" and k ~= "Connection" then 
        ngx.header[k] = v 
    end
end
                                    
ngx.say(resp.body)         

4.3 nginx.config

修改配置文件内容为下:

worker_processes  1;                                                                                                                                                                                                                                                          
error_log logs/error.log;

events {
    worker_connections 1024;
}


http {
    lua_package_path "lualib/?.lua;;"; 
    lua_package_cpath "lualib/?.so;;";

    server {
        listen 6000;
        location / { 
            default_type text/html;
            lua_code_cache off;
            content_by_lua_file lua/index.lua;
        }   
        location /lua_http {
            resolver 8.8.8.8;
            default_type text/html;
            lua_code_cache off;
            content_by_lua_file lua/http_test.lua;
        }   
    }   
}

     重起nginx服务,然后浏览器重新访问localhost:6000试试

你可能感兴趣的:(OpenResty,&,nginx,&,Lua)