nginx lua 调试 - 死磕
疯狂创客圈 Java 高并发【 亿级流量聊天室实战】实战系列 【博客园总入口 】
架构师成长+面试必备之 高并发基础书籍 【Netty Zookeeper Redis 高并发实战 】
前言
Crazy-SpringCloud 微服务脚手架 &视频介绍:
Crazy-SpringCloud 微服务脚手架,是为 Java 微服务开发 入门者 准备的 学习和开发脚手架。并配有一系列的使用教程和视频,大致如下:
高并发 环境搭建 图文教程和演示视频,陆续上线:
中间件 | 链接地址 |
---|---|
Linux Redis 安装(带视频) | Linux Redis 安装(带视频) |
Linux Zookeeper 安装(带视频) | Linux Zookeeper 安装, 带视频 |
Windows Redis 安装(带视频) | Windows Redis 安装(带视频) |
RabbitMQ 离线安装(带视频) | RabbitMQ 离线安装(带视频) |
ElasticSearch 安装, 带视频 | ElasticSearch 安装, 带视频 |
Nacos 安装(带视频) | Nacos 安装(带视频) |
疯狂创客圈 经典图书 : 《Netty Zookeeper Redis 高并发实战》 面试必备 + 面试必备 + 面试必备
简介:
这里使用 Openresty 代替 nginx,使用基础nginx调试lua,方法也是一样的。
Openresty是基于nginx与lua的高性能web框架,继承了大量的高质量的lua库、第三方模块以及大多数依赖项。
目前对于lua主流开发工具有vscode+lua插件、IntelliJ IDEA+EmmyLua、ZeroBrane Studio、还有其他的一些文本编辑软件等。
lua作为一种脚本语言,除了开发简洁,性能优越之外,还应该具备调试功能,对于开发者才能算得上更加友好。
1 ZeroBrane 简介
ZeroBrane Studio已被用于调试各种Lua引擎 – 游戏框架(如Corona,Gideros,Moai,Love2d),家庭自动化设备,wirehark 脚本,Adobe Lightroom插件等 – 但是已经有几种Lua环境没有尝试过。其中一个是OpenResty / Nginx Lua脚本。OpenResty是一个基于nginx的网络应用服务器,一个非常快速的Web服务器,它提供了具有各种后端(Redis,Memcached,MySQL,HTTP服务器等)的非阻塞IO,并支持Lua作为其脚本语言。
ZeroBrane的特点:
小巧,可移植,开源和跨平台(Windows,macOS和Linux);
自动完成功能,关键字和自定义API;
110多种语言和文件格式的语法高亮和折叠;
具有自动刷新功能的项目视图,能够从列表中隐藏文件和目录;
交互式控制台,用于测试本地和远程执行的Lua代码片段;
集成调试器,支持本地和远程调试,包括跨平台和设备上调试;
使用Lua, LÖVE, Gideros, Moai, Corona,GSL-Shell和其他Lua引擎进行实时编码 ;
多语言支持,翻译为法语,西班牙语,俄语,德语,中文,世界语,意大利语,保加利亚语和巴西葡萄牙语语言和文档,以添加您自己的语言;
50+扩展包在包库 ;
模糊搜索的文件,符号,和库函数,函数的轮廓,和更多。
下载地址: https://studio.zerobrane.com/
疯狂创客圈的网盘,也提供本实例配置的版本下载。 疯狂创客圈网盘入口
2 调试的环境介绍
包括以下三个方面:
openresty 的环境
project工程的环境
ZeroBrane Studio 的环境
lua 调试依赖包的配置
2.1 openresty 的环境
这里使用的是 openresty-1.13.6.2-win32 ,具体的安装和启动脚本,请参见 下面的博客:
windows openresty 死磕:安装和启动脚本
但是,一定要换成32位的版本。 然后,修改 openresty-start.bat 中对应的两个配置项。
修改完成后,使用openresty-start.bat 脚本,进行启动。
openresty-restart.bat 脚本,开发过程中会经常用到,因为每修改一次lua脚本,需要重新启动openresty/nginx ,重新进行加载。
2.2:lua project 工程的环境
大致按照下面的结构,组织 lua脚本的工程。 或者说nginx web项目的工程。
工程的目录,会在两个地方用到:
(1) openresty的 openresty-start.bat 脚本中
具体请参见网盘的 openresty-start.bat 脚本 源码。
(2) 也会在 ZeroBrane Studio 的环境 用到
会作为 ZeroBrane Studio 的工程目录。
2.3 ZeroBrane Studio 的工程目录
通过ZeroBrane Studio的file > new 菜单,打开 lua project 工程 所在的目录。
2.4 lua 调试依赖包的配置
将lua的依赖包路径,配置到 工程的 conf/nginx.conf 文件下:
(1) 项目的lua脚本路径
(2) ZeroBraneStudio-1.80 的lua脚本路径
(3) nginx的lua脚本路径
大致如下:
# for windowslua_package_path "C:/dev/refer/LuaDemoProject/src/?.lua;E:/tool/ZeroBraneStudio-1.80/lualibs/?/?.lua;E:/tool/ZeroBraneStudio-1.80/lualibs/?.lua;E:/tool/openresty-1.13.6.2-win32/lualib/?.lua;;";lua_package_cpath "E:/tool/ZeroBraneStudio-1.80/bin/clibs/?.dll;E:/tool/openresty-1.13.6.2-win32/lualib/?.dll;;";
如果是linux环境,需 要进行相应的 路径,和文件类型的修改。上面的dll,在liux环境,需要改成so。
2.5 准备调试脚本
调试的脚本为:luaScript/test.lua
--- 启动调试local mobdebug = require("luaScript.initial.mobdebug");
mobdebug.start("192.168.0.5");ngx.say("hello world.");
ngx.say("<hr>");
ngx.say(package.path);local i=100;
ngx.say("<hr>");
ngx.say("i="..i);mobdebug.done();
在conf/nginx.conf 文件, 配置好 luaScript/test.lua 对应的路径:
location /test {
default_type 'text/html';
charset utf-8;
content_by_lua_file luaScript/test.lua;
}
3 开始调试 lua
3.1 启动调试的服务器
启动ZeroBrane Studio(zbstudio.exe或zbstudio.sh)并启动调试服务器 ,菜单为 Project | Start Debugger Server。
3.2 启动调试的服务器
在浏览器输入lua脚本所配置的地址,如果: http://localhost/test
location /test {
default_type 'text/html';
charset utf-8;
content_by_lua_file luaScript/test.lua;
}
ZeroBrane Studio会进入绿色箭头对应行的代码
3.3 查看运行时的变量值
使用watch工具,将需要查看的变量, 填入。 然后开始单步执行。 具体如下图
3.4 调试后的结果
程序调试完成后,可以在浏览器看到预期的结果。
3.5 调试快捷键
- F10 下一行
- Shift+F10 跳过调试
- Ctrl +F10 跳过当前function
- Shift + F5 终止运行
- F6 运行
- F5 debug运行
3.6 问题 :module socket.core 加载失败
如果出现以下问题:
2019/12/28 17:09:57 [error] 14568#13196: *1 lua entry thread aborted: runtime error: error loading module 'socket.core' from file 'E:/tool/ZeroBraneStudio-1.80/bin/clibs/socket\core.dll'
用一种可能就是使用了的64位的OpenResty,换成32位的OpenResty 即可。
疯狂创客圈的网盘,本文所涉及有的工具的安装文件,都有提供。
具体,请关注 Java 高并发研习社群 【博客园 总入口 】
最后,介绍一下疯狂创客圈:疯狂创客圈,一个Java 高并发研习社群 【博客园 总入口 】
疯狂创客圈,倾力推出:面试必备 + 面试必备 + 面试必备 的基础原理+实战 书籍 《Netty Zookeeper Redis 高并发实战》
疯狂创客圈 Java 死磕系列
- Java (Netty) 聊天程序【 亿级流量】实战 开源项目实战
Netty 源码、原理、JAVA NIO 原理
Java 面试题 一网打尽
疯狂创客圈 【 博客园 总入口 】
R0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTQ4NTM5OC8yMDE5MDgvMTQ4NTM5OC0yMDE5MDgyMjIyNTE1NjQyNy05NTY0MjQxMjQuanBn?x-oss-process=image/format,png)
nginx lua 调试 - 死磕相关推荐
- nginx lua 调试bug
前提: lua中开启bug: daemon off; master_process off; worker_rlimit_core 500M; working ...
- 死磕Nginx系列转载
https://www.cnblogs.com/biglittleant/p/8979966.html 死磕nginx系列--nginx入门 死磕nginx系列--nginx配置文件 死磕nginx系 ...
- 调试一段代码两个小时都没搞定,继续死磕还是寻找其他方式?
hi-好久不见,在家办公的你们还好吗? 听闻有人克服着网络不好.工作环境嘈杂的困难,已经连续待机 20 几个小时了.没办法,疫情当前,这点困难不算啥,该克服的还是要克服.实在不行,试试番茄工作法,提高 ...
- 第一章 安装OpenResty(Nginx+Lua)开发环境
首先我们选择使用OpenResty,其是由Nginx核心加很多第三方模块组成,其最大的亮点是默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用.借助于Nginx的事件驱动模型 ...
- 【精选】Nginx模块Lua-Nginx-Module学习笔记(一)Nginx Lua API 接口详解
源码地址:https://github.com/Tinywan/Lua-Nginx-Redis 一.介绍 各种* _by_lua,* _by_lua_block和* _by_lua_file配置指令用 ...
- 揭开netty神秘面纱_Netty 源码(ChannelHandler 死磕)
疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 面试必备 + 面试必备 疯狂创客圈 经典图书 : <SpringC ...
- 死磕苹果,小米飘了?
来源 | 深燃(shenrancaijing) 作者 | 金玙璠 编辑 | 魏佳 12月28日晚,iPhone 13在小米12系列手机发布会上,被cue了20余次. "小米正式对标苹果,向苹 ...
- Nginx + Lua 搭建网站WAF防火墙
Nginx + Lua 搭建网站WAF防火墙 一.目的 二.前期环境准备 (一).更新下yum源 (二).编译安装Nginx (三).端口放行 (四).验证安装 (五).lua编译安装 (六).端口冲 ...
- 专访 iOS 技术专家孙源:开发者的成长始于“死磕”
小编语 本文为 DevLink 专访系列,本期采访嘉宾是 iDev 苹果开发者大会<链接器:Linker 与 Loader 的前世今生>的讲师--孙源.在即将到来的 iDev 大会上,他将 ...
最新文章
- golang 中的sort 包
- sql的加减乘除运算_小白学sql(一)
- 神舟电脑装linux双系统,个人windows10和Ubuntu18.04游戏笔记本uefi双磁盘双系统安装过程...
- 182. 查找重复的电子邮箱
- sinr是什么意思_明明是满格信号,可是却不如两三格,这是什么情况?
- 在Vmware下linux与ARM开发板的NFS系统搭建【ZT】
- java读取文件中的数组中_使用java中的数组从文本文件中读取关键字
- 2.7_single_link_list_单链表
- 不用加号实现两整数相加
- 剑灵灵动区服务器位置,盘点国服剑灵灵动内测4大玩家人气玩法(2)
- Android-----使用Button特效selector+shape
- Java获取文本文件编码
- 帮你自动化办公的python - 自动提取pdf指定页(项目概述)
- Java 相关的技术摘要
- 手机做证件照的方法是什么
- 教你学会u盘重装win10系统,u盘系统盘安装win10
- 《自控力》直面自身欲望,但不要付诸行动
- 【mac】【转发】Mac系统升级后,按大小写键没反应了,切换大小写的灯不亮了
- 如何解决 使用matplotlib.finance获取雅虎财经网站股票数据 报错?
- 浏览器判断麦克风和摄像头权限
热门文章
- 浅谈大数据:如何成为大数据企业?
- C语言random6,Random怎么用(c语言random怎么用)
- 生成男女体重的随机二维数据
- 网易考拉API开发系列:item_search-根据关键词取商品列表API 返回值说明
- 新库上线 | CnOpenData食品安全抽检数据
- SIT1028是一款内部集成高压LDO稳压源的本地互联网络(LIN)物理层收发器 TJA 1028T
- 【DS】3.顺序表链表万字全总结!
- js禁止浏览器后退/返回
- 内存分配器 mysql_MySQL内存管理,内存分配器和操作系统的示例分析
- JVM之垃圾回收机制