OpenResty 快速入门

简介

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

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

OpenResty® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。

安装

以下安装基于Centos 7,并且采用OpenResty 官方提供的预编译包进行安装。

  1. 添加官方仓库
sudo yum install yum-utils
sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
  1. 安装 OpenResty
sudo yum install openresty
  1. 安装命令行工具
sudo yum install openresty-resty

Hello World

  1. 新建目录

mkdir /home/www
cd /home/www
mkdir logs/ conf/
  1. 添加配置文件 conf/nginx.conf
worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {
    server {
        listen 8080;
        location / {
            default_type text/html;
            content_by_lua_block {
                ngx.say("<p>hello, world</p>")
            }
        }
    }
}
  1. 添加环境变量
    ` bash
    vim /etc/profile

PATH=/usr/local/openresty/nginx/sbin:$PATH
export PATH

4. 启动 nginx

``` bash
nginx -p `pwd`/ -c conf/nginx.conf

openresty + lua 项目化

上面的例子我们是直接在配置文件中写 lua 的脚本,当脚本代码越来越多的时候会非常难进行维护。所以我们需要将其项目化。其项目的结构如下:

example
  - lua 
      - example.lua
  - conf
      - example.conf #
  - lualib
      - *.lua
      - *.so

其中,lua 目录下放置我们自定义的 lua 代码 ,conf 放置 该项目的 nginx 配置,lualib 放置 lua 依赖的库和第三方模块。其中把lualib放到项目中以后可以一起部署,防止有的服务器忘记复制依赖而造成缺少依赖的情况。

我是把 example 项目放置在 opt/openresty/ 目录下面。

  1. 拷贝 lualib 包

把 openresty 下的 lualib 拷贝到项目 example 目录下。

cp -r /usr/local/openresty/lualib /opt/openresty/example
  1. exampleconf 目录下新增 examle.conf 配置文件
server {
    listen 80;
    server_name _;

    location /example {
        defalut_type 'text/html';
        lua_code_cache on;
        content_by_lua_file /opt/openresty/example/lua/example.lua;
    }
}
  1. examplelua 目录下新增 example.lua 脚本。

该脚本用于写我们的业务逻辑。

ngx.say("Hello World, OpenResty");
  1. 修改 /usr/local/openresty/nginx/conf/nginx.conf 配置文件
vim /usr/local/openresty/nginx/conf/nginx.conf

... 省略 ...
http {
    include       mime.types;
    default_type  application/octet-stream;
    lua_package_path "/opt/openresty/example/lualib/?.lua;;"; # lua 模块
    lua_package_cpath "/opt/openresty/example/lualib/?.so;;"; # c 模块
    include "/opt/openresty/example/conf/example.conf"; # 项目的 nginx 配置
}
... 省略 ...

http 部分增加了三行内容,分别是 lua_package_pathlua_package_cpathinclude

  1. 启动和测试
nginx
curl http://ip/example # 其中 ip 输入自己服务器上的 IP 地址

输出以下内容表示成功:

Hello World, OpenResty
  1. 查看日志

日志默认在 usr/local/openresty/nginx/logs 目录下。


   转载规则


《OpenResty 快速入门》 孤独如梦 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
【dubbo系列】 07-Dubbo 协议 【dubbo系列】 07-Dubbo 协议
前言Dubbo 支持的协议有很多,可以通过 dubbo:protocol 来配置不同的协议。包括以下几种: dubbo: 是Dubbo的默认协议。 rmi: 采用 JDK 标准的 java.rmi.* 实现,采用阻塞式短连接和 JDK 标
2019-06-14
下一篇 
【dubbo系列】 06-java SPI 机制 【dubbo系列】 06-java SPI 机制
前言该篇主要是为了后面讲解 dubbo SPI 机制做个铺垫。要想了解 dubbo SPI 机制,首先需要了解 java SPI 机制。 什么是 SPI ?SPI 全称为 Service Provider Interface,是一种服务发现
2019-06-12
  目录