疯狂创客圈 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 调试 - 死磕相关推荐

  1. nginx lua 调试bug

    前提:     lua中开启bug:     daemon off;     master_process off;     worker_rlimit_core 500M;      working ...

  2. 死磕Nginx系列转载

    https://www.cnblogs.com/biglittleant/p/8979966.html 死磕nginx系列--nginx入门 死磕nginx系列--nginx配置文件 死磕nginx系 ...

  3. 调试一段代码两个小时都没搞定,继续死磕还是寻找其他方式?

    hi-好久不见,在家办公的你们还好吗? 听闻有人克服着网络不好.工作环境嘈杂的困难,已经连续待机 20 几个小时了.没办法,疫情当前,这点困难不算啥,该克服的还是要克服.实在不行,试试番茄工作法,提高 ...

  4. 第一章 安装OpenResty(Nginx+Lua)开发环境

    首先我们选择使用OpenResty,其是由Nginx核心加很多第三方模块组成,其最大的亮点是默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用.借助于Nginx的事件驱动模型 ...

  5. 【精选】Nginx模块Lua-Nginx-Module学习笔记(一)Nginx Lua API 接口详解

    源码地址:https://github.com/Tinywan/Lua-Nginx-Redis 一.介绍 各种* _by_lua,* _by_lua_block和* _by_lua_file配置指令用 ...

  6. 揭开netty神秘面纱_Netty 源码(ChannelHandler 死磕)

    疯狂创客圈   经典图书 : <Netty Zookeeper Redis 高并发实战>    面试必备 +  面试必备 + 面试必备 疯狂创客圈   经典图书 : <SpringC ...

  7. 死磕苹果,小米飘了?

    来源 | 深燃(shenrancaijing) 作者 | 金玙璠 编辑 | 魏佳 12月28日晚,iPhone 13在小米12系列手机发布会上,被cue了20余次. "小米正式对标苹果,向苹 ...

  8. Nginx + Lua 搭建网站WAF防火墙

    Nginx + Lua 搭建网站WAF防火墙 一.目的 二.前期环境准备 (一).更新下yum源 (二).编译安装Nginx (三).端口放行 (四).验证安装 (五).lua编译安装 (六).端口冲 ...

  9. 专访 iOS 技术专家孙源:开发者的成长始于“死磕”

    小编语 本文为 DevLink 专访系列,本期采访嘉宾是 iDev 苹果开发者大会<链接器:Linker 与 Loader 的前世今生>的讲师--孙源.在即将到来的 iDev 大会上,他将 ...

最新文章

  1. golang 中的sort 包
  2. sql的加减乘除运算_小白学sql(一)
  3. 神舟电脑装linux双系统,个人windows10和Ubuntu18.04游戏笔记本uefi双磁盘双系统安装过程...
  4. 182. 查找重复的电子邮箱
  5. sinr是什么意思_明明是满格信号,可是却不如两三格,这是什么情况?
  6. 在Vmware下linux与ARM开发板的NFS系统搭建【ZT】
  7. java读取文件中的数组中_使用java中的数组从文本文件中读取关键字
  8. 2.7_single_link_list_单链表
  9. 不用加号实现两整数相加
  10. 剑灵灵动区服务器位置,盘点国服剑灵灵动内测4大玩家人气玩法(2)
  11. Android-----使用Button特效selector+shape
  12. Java获取文本文件编码
  13. 帮你自动化办公的python - 自动提取pdf指定页(项目概述)
  14. Java 相关的技术摘要
  15. 手机做证件照的方法是什么
  16. 教你学会u盘重装win10系统,u盘系统盘安装win10
  17. 《自控力》直面自身欲望,但不要付诸行动
  18. 【mac】【转发】Mac系统升级后,按大小写键没反应了,切换大小写的灯不亮了
  19. 如何解决 使用matplotlib.finance获取雅虎财经网站股票数据 报错?
  20. 浏览器判断麦克风和摄像头权限

热门文章

  1. 浅谈大数据:如何成为大数据企业?
  2. C语言random6,Random怎么用(c语言random怎么用)
  3. 生成男女体重的随机二维数据
  4. 网易考拉API开发系列:item_search-根据关键词取商品列表API 返回值说明
  5. 新库上线 | CnOpenData食品安全抽检数据
  6. SIT1028是一款内部集成高压LDO稳压源的本地互联网络(LIN)物理层收发器 TJA 1028T
  7. 【DS】3.顺序表链表万字全总结!
  8. js禁止浏览器后退/返回
  9. 内存分配器 mysql_MySQL内存管理,内存分配器和操作系统的示例分析
  10. JVM之垃圾回收机制