openresty及lor入门教程

  • 一、开发环境准备
    • 1、openresty安装
    • 2、eclipse安装lua插件
    • 3、环境配置说明
  • 二、Lor框架基本使用
    • 1、分配置文件dev.conf介绍
    • 2、main入口文件介绍
    • 3、router文件介绍
    • 4、action文件夹介绍
    • 5、service文件夹介绍
    • 6、filter文件夹介绍
    • 7、综述
  • 三、补充
    • 1、调式
    • 2、代码中调式

一、开发环境准备

1、openresty安装

下载openresty-1.13.6.1-win32.zip,解压到本地任一目录

2、eclipse安装lua插件

eclipse–>help–>eclipse marketplace–>输入lua,只能查到一个,下载并安装

3、环境配置说明

打开openresty的目录,找到conf文件夹下的nginx.conf

找到http下的server部分,listen对应的是端口号,可以修改。
增加 include 语句,引入分配置文件,对应的是自己lua项目中的配置文件,以后只需要对应自己工程中修改,不需要在改openresty中的conf配置文件。
注:该路径要写绝对路径。

双击openresty目录下的nginx.exe可以启动openresty。

在cmd中用命令tasklist /fi "imagename eq nginx.exe可以看是否启动成功。

上面的情况就代表启动成功。
关闭openresty可以用命令taskkill /pid 3128 /F 启动成功后,可以在浏览器中访问到openresty的默认页面。localhost:8077(上面nginx.conf中配置的端口号)

openresty环境装成功后,继续编写分配置文件中的conf文件,也就是include中对应的配置文件。

  1. Eclipse中新建一个lua项目,可以建一个文件夹放对应的配置文件。

  1. 从上图看出dev.conf是nginx中配置文件引入的分配置文件地址,这个配置文件中,只有一个端口号,还有一个是lua文件的入口,也需要用绝对路径。Lua入口文件的地址要用lua_package_path引入。

  1. Main.lua中只是简单的写了一句hello world,重启openresty服务。出现以下页面,则调用lua脚本成功。

二、Lor框架基本使用

Lor是一个运行在OpenResty上的使用Lua编写的Web框架。
具体资料见:http://lor.sumory.com/guide/
以下介绍以lor_demo工程为例,下面是lor_demo工程目录结构图。

1、分配置文件dev.conf介绍

nginx的conf要引入该路径,下面对配置文件中的逐一解释:

  1. 第4行是lua_package_path是引入lua文件的路径,主要包括两部分,app下面是自己的业务逻辑用到的,lualib是lua中常用的一些架包。配绝对路径 。
  2. 第5行是lua_package_cpath是引入c的文件的写法,没有可以不写 。
  3. 第10行listen的是工程启动后访问的端口号 。
  4. 第11-15行是对应前端工程的对应配置,其中root 后面是前端对应的文件夹地址,index是对应目录下,前端页面的入口地址。配绝对路径。
    按上面的配置localhost:8080/index.html即可访问对应的前端
  5. 第20行是引入lua入口文件的地址。配绝对路径
  6. 第6-8行及22-29行是对应于springboot服务工程的相关配置,上下文及对应ip的配置config文件中主要是放一些配置项,如登录白名单,mysql,redis,调用其它服务的路径等等。

2、main入口文件介绍

首先说明, require加载了对应的模块。可以理解为引入对应的包或者类,重点关注以下几句:

local lor = require("lor.index")
local app = lor()
local router = require("router")
local check_login = require("filter.check_login")
app:use(check_login(whitelist))
router(app)
app:run()

上面是lor框架的最简单加载过程,初始化一个app,也就是lor(),然后调用app里面的函数,router是一个路由,user后的check_login是一个拦截,最后run运行。

3、router文件介绍

local xs_router = require("k12.action.xs_action")
app:use("/xxkj/xs", xs_router())

该文件主要配置访问接口的路径的前缀部分,具体的router中再对应实现接口。

4、action文件夹介绍

放具体的接口路径,出入参的验证等处理。
先申明一个router: local xsxx_router = lor:Router()

  1. 定义get接口
xsxx_router:get("/xsxq", function(req, res, next)      #业务逻辑
end)
  1. 定义post接口
xsxx_router:post("/scxs", function(req, res, next)     #业务逻辑
end)    

前半部分是路径,和前面router文件中的前半部分拼起来是全路径。 function中可以处理出入参,req可以取到入参相关,res可以定义出参相关。
常用到req.body, req.query, res:json

5、service文件夹介绍

供action调用,处理具体的业务逻辑,如调用外部接口等。
介绍两种调用外部接口方式 :

  1. 用工具类使用全路径调用
local result=httpUtil:get(url.."/xs/cxxslb"..param)
local result=httpUtil:post(url.."/xs/scxs",cjson.encode(post_param))
  1. 用ngx的原生方法调用,这个时候用分配置文件中的相对路径调用
  • 调单个接口
local result=ngx.location.capture("/xs/xsxq?id="..id)
  • 同时调多个接口
local res1,res2=ngx.location.capture_multi({{"/xs/xsxq?id="..xsid},{"/bj/bjxq?id="..bjid}})

6、filter文件夹介绍

主要写登录拦截的相关逻辑,可以暂时不关注。

7、综述

按照上面编写完接口后,可以根据分配置文件中的端口号,router文件中的路径前缀,action文件中的路径及接口类型(get/post)去访问调试接口了http://localhost:8080/xxkj/xs/xsxq?id=1100000000000000019

三、补充

1、调式

openresty不能单步执行,调式的时候,只能看log下的error.log文件中的日志。

2、代码中调式

一般写log语句查看对应的变量。

ngx.log(ngx.ERR, cjson.encode(req.body))
ngx.log(ngx.ERR,"error")

openresty及lor入门教程相关推荐

  1. Kafka入门教程与详解

    1 Kafka入门教程 1.1 消息队列(Message Queue) Message Queue消息传送系统提供传送服务.消息传送依赖于大量支持组件,这些组件负责处理连接服务.消息的路由和传送.持久 ...

  2. 【CV】Pytorch一小时入门教程-代码详解

    目录 一.关键部分代码分解 1.定义网络 2.损失函数(代价函数) 3.更新权值 二.训练完整的分类器 1.数据处理 2. 训练模型(代码详解) CPU训练 GPU训练 CPU版本与GPU版本代码区别 ...

  3. python tornado教程_Tornado 简单入门教程(零)——准备工作

    前言: 这两天在学着用Python + Tornado +MongoDB来做Web开发(哈哈哈这个词好高端).学的过程中查阅了无数资料,也收获了一些经验,所以希望总结出一份简易入门教程供初学者参考.完 ...

  4. python向量计算库教程_NumPy库入门教程:基础知识总结

    原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...

  5. mysql query browswer_MySQL数据库新特性之存储过程入门教程

    MySQL数据库新特性之存储过程入门教程 在MySQL 5中,终于引入了存储过程这一新特性,这将大大增强MYSQL的数据库处理能力.在本文中将指导读者快速掌握MySQL 5的存储过程的基本知识,带领用 ...

  6. python tensorflow教程_TensorFlow入门教程TensorFlow 基本使用T

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 TensorFlow入门教程 TensorFlow 基本使用 TensorFlow官方中文教程 TensorFlow 的特点: 使用图 (graph) 来 ...

  7. air调用java,AIR2.0入门教程:与Java应用交互

    在之前的一篇文章中,我介绍了如何使用AIR2.0新增的NativeProcess类与本地进程进行交互和通讯,在那个例子里面我们使用了C++ 的代码,实际上只要是基于命令行的标准输入输出,AIR2.0的 ...

  8. 【Arduino】开发入门教程【一】什么是Arduino

    Arduino Arduino 是一款便捷灵活.方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE).它适用于艺术家.设计师.爱好者和对于"互动 ...

  9. python 三分钟入门_Cython 三分钟入门教程

    作者:perrygeo 译者:赖勇浩(http://laiyonghao.com) 原文:http://www.perrygeo.net/wordpress/?p=116 我最喜欢的是Python,它 ...

最新文章

  1. 指针:自定义函数sumDiff(),调用它来求两个数的和、差
  2. 【操作系统】—线程概念和多线程模型
  3. linux下实现getch()函数的功能,Linux下实现getch()函数功能
  4. php币对人民币汇率_php汇率(php等于多少人民币)
  5. 微积分总结(数列与无穷级数)
  6. 泰灏咨询的使命及愿景
  7. goland 注释模板_论文写作标准格式模板
  8. 微信 心理测试 软件,敢不敢做一份微信版心理测试?
  9. 服务器资源下载简单实现
  10. 爱奇艺又涨价?注定想追剧就要成为SSSSVIP
  11. oceanbase安装记录
  12. 这个年龄计算程序相当不科学,体验还是差差哒
  13. 刀片服务器型号规格,刀片服务器是什么,刀片服务器规格统一好不好
  14. 计算机表格中如何计算数据透视表,如何在EXCEL数据透视表中进行计算 |
  15. 使用copy con命令创建批处理文件
  16. 干货!从0到1教你运营抖音
  17. 0x800703e3复制文件错误
  18. 数据溢出与除数为0错误
  19. 一套全开源的智慧园区管理系统源码
  20. pako 压缩lottie动效资源方案

热门文章

  1. matlab:使用4阶龙格库塔方法求微分方程组的值
  2. nit计算机考试题目,计算机nit考试试题
  3. 列式存储和行式存储的真正区别
  4. 企业云盘哪个最好用?
  5. CorelDRAW生成条码后,条码为什么不能编辑
  6. python前端开发和后端开发工程师_一文看懂前端和后端开发
  7. 烟雨黑帽SEO程序演示:AI智能模板在线制作制作神器-单域名版+多域名版-一键批量制作黑帽程序所使用的单页模板
  8. [转][001] [STM32] 如何下载STM32原厂资料
  9. vue和表格和饼状图的渲染
  10. 开源轻量级的定时器调度器 | SmartTimer