`

lua项目模块化编程(一)

阅读更多

 一,工程模块化

    在上一章节HelloWorld脚本中,我们是将lua脚本代码直接放在项目配置lua.conf文件中的,当项目代码量比较大时,会显得整个代码结构特别凌乱,没有模块化。导致代码不易阅读和管理。所以一般在项目开发中,是将lua脚本代码单独剥离存放的。

   下面介绍OpenResty模块化编程(OpenResty安装目录:/usr/local/):

#在/usr/local/nginx/下建立项目部署目录webapps
cd /usr/local/nginx/
mkdir webapps

#在webapps目录下新建项目名称example
cd /usr/local/nginx/webapps/
mkdir example

#新建项目配置文件example.conf
cd /usr/local/nginx/webapps/example
touch example.conf

#新建脚本存放目录lua
cd /usr/local/nginx/webapps/example
mkdir lua

#新建lua依赖库及第三方依赖目录
cd /usr/local/nginx/webapps/example
mkdir lualib

    ps : 其中我们把lualib也放到项目中的好处就是以后部署的时候可以一起部署,防止有的服务器忘记复制依赖而造成缺少依赖的情况。

 

二,lua_code_cache作用

    默认情况下lua_code_cache 是开启的,即缓存lua代码,每次lua代码变更必须reload nginx才生效,如果在开发阶段可以通过lua_code_cache  off;来关闭缓存,这样调试时每次修改lua代码不需要reload nginx;但是正式环境一定记得开启缓存,以提升程序运行效率。  

#example.conf配置
server {  
     listen       802;  
     server_name  example-lua;   
    
     location /example {  
          default_type 'text/html';  
          lua_code_cache off;  
          content_by_lua_file webapps/example/lua/test.lua;//相对路径,也可以使用绝对路径
     }     
}

   text.lua代码:

#hello world脚本代码
ngx.say("hello world");

   ps: 相对路径是相对于nginx安装目录/usr/local/nginx/而言的。当然也可以写成绝对路径/usr/local/nginx/webapps/example/lua/test.lua

 

三,全局nginx.conf配置

    修改全局/usr/local/nginx/conf/nginx.conf配置文件。

#修改/usr/local/nginx/conf/nginx.conf中的http部分
http {
    include       mime.types;
    default_type  application/octet-stream;
	
    #example工程配置
    lua_package_path "/usr/local/nginx/webapps/example/lualib/?.lua;;";
    lua_package_cpath "/usr/local/nginx/webapps/example/lualib/?.so;;";
    include    /usr/local/nginx/webapps/example/example.conf;

    #其他配置
    ..............    
}

    重启nginx:/usr/local/nginx/sbin/nginx  -s reload

 

四,程序错误日志

    如果运行过程中出现错误,请不要忘记查看错误日志。

tail -f /usr/local/nginx/logs/error.log

 

  • 大小: 12.8 KB
分享到:
评论

相关推荐

    xmake:一个基于Lua的轻量级跨平台自动构建工具

    xmake是一个开源、轻量级且高效的构建工具,使用Lua脚本语言进行项目配置。它旨在简化构建过程,支持跨平台构建、自动依赖管理和并行编译。...模块化设计:支持模块化配置,便于管理大型项目和代码复用。

    typedlua, 一种可选的Lua类型系统.zip

    typedlua, 一种可选的Lua类型系统 类型的Lua 注意:请注意,键入的Lua没有被积极维护,因为我们现在正在使用Titan编程语言 。 类型化Lua是编译成纯Lua的Lua类型的超集。 它通过定义类。接口和模块来提供可选的类型...

    Lua中模块以及实现方法指南

    从Lua 5.1开始,我们可以使用require和module函数来获取和创建Lua中的模块。从使用者的角度来看,一个模块就是一个程序库,可以通过require来加载,之后便得到一个类型为table的全局变量。

    LUA5.1 脚本语言 编译执行源码

    年在巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro in Brazil)诞生了一门编程语言,发明者是该校的三位研究人员,他们给这门语言取了个浪漫的名字——Lua,在葡萄牙语里代表美丽的...

    LuaStudio v9.8.6.zip

    LuaStudio是一款快速的、轻量级的、可扩展的lua脚本编辑器软件。软件最大特点就是可以注入到宿主程序内对lua脚本进行调试,还可以设置断点观察变量的值,此外,软件还具有编辑、工程管理、调试、远程调试、等各种...

    LuaBind 源码 (Lua增强库)

    LuaBind 是一个帮助你绑定C++和Lua的库.她有能力暴露 C++ 函数和类到 Lua . 她也有 能力支持函数式的定义一个Lua类,而且使之继承自C++或者Lua. Lua类可以覆写从 C++ 基类 继承来的虚函数. 她的目标平台是Lua 5.0 ,不...

    用于嵌入式应用的模块化和可配置操作系统_C语言_代码_相关文件_下载

    许多可用的编程语言:Python、Lisp、Java(音素)、TCL、Ruby、Lua 基于 Dropbear 项目的 SSHD Mesa3d Quake3 zeromq, qpid 主要特征 符合 POSIX 标准 C++ 支持 文件系统:FAT、ext2/3/4、... TCP/IP:BSD 套接字;...

    learning_torch:使用“ Torch”和其他有用的库学习在Lua中编程

    使用“ Torch”和其他有用的库学习在Lua中编程 是LuaJIT的科学计算框架。 为什么要学习火炬? 带有ML,CV等由社区驱动的大型软件包生态系统 易于使用和高效 可以构建神经网络的任意图,并以有效的方式在CPU和GPU...

    棋牌的胡牌算法。实现 lua 、c++ 、c# 、golang 、js 、java 、python 版本.zip

    这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这对于开发需要高并发性能的应用程序(如服务器端应用、网络应用等)非常重要。 自动内存...

    java安卓辅助源码-CocosGame:基于cocos2dx-lua游戏框架,致力于多分包,自动化游戏编程

    提供游戏对象预加载、加载及卸载精确控制模型,帮助你模块化管理游戏对象的生命周期以优化内存使用。 提供部分游戏自动化工具,主要运用于原始资源到游戏资源的转化、打包游戏资源、安装游戏资源、上传游戏资源到...

    棋牌的胡牌算法。实现 lua 、c++ 、c# 、golang 、js 、java 、python 版本。.zip

    这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这对于开发需要高并发性能的应用程序(如服务器端应用、网络应用等)非常重要。 自动内存...

    关于机器人三_六考试软件及语言说明+-+V1.0.pdf

    三级考试分为理论考试和实操考试,理论考试中有关模块化编程的考题,统一采用 Mixly图形化软件编写。在实操考试中,编程软件不做具体要求,以完成实操考题所要求的电路搭设及功能为准。 Q:四~六级考试的编程语言是...

    embox:适用于嵌入式应用程序的模块化和可配置操作系统

    Embox Embox是为资源受限和嵌入式系统设计的可配置RTOS。 Embox的主要思想是在没有Linux的... 流行的编程语言:java,python,lua,tcl,lisp,ruby 联络人 邮件列表: 主要(英文): 俄语: 电报聊天: 主要

    dmc-objects:Corona SDK OOP 的高级面向对象模块

    它提供: 面向对象编程的经典模型一个用于创建/初始化/销毁 Lua 对象的简单结构类 getter 和 setter 多重继承支持混合增强对 super 的方法访问类似于 Corona 显示对象的对象 API 通过结构和优化快速执行尽管它不仅...

    基于SpringBoot+Hadoop+Vue开发的企业级网盘分布式系统源码+项目说明(本科毕设).zip

    在首页顶部的位置有个欢迎用户功能,此模块会根据用户登录的时间,人性化的对用户进行打招呼,比如用户深夜的时候登陆系统,该提示语会提醒“已经深夜了,你还在加班吗,请注意休息!”。当用户点击我的网盘模块后,...

    易用脚本语言

    <br>她有着类似C语言一样的外观 ,吸取各种语言的精华,让代码易读易写,函数式编程让你可以回味结构化编程语言的简洁。 她又有像VB一样易读懂的代码风格,对初学者也不难为. 她可以跨平台使用(易语言...

    像计算机科学家一样思考Python(第2版).pdf

    业余时,作为一个编程语言爱好者,对D、Kotlin、Lua、Clojure、Scala、Julia、Go等语言均有了解,但至今仍为Python独特的风格、简洁的设计而惊叹。 目录 · · · · · · 第1章 程序之道 1 1.1 什么是程序 1 ...

    cubix:用于多语言转换的Cubix框架。 在OOPSLA 2018论文“一种工具,多种语言”中进行了解释

    什么是Cubix?... 在那个展览中,“ Cubix”是由模块化零件组成的机器人,可以将其重组用于多种用途。 目前,它支持C,Java,JavaScript,Lua和Python。 OOPSLA 2018论文描述了Cubix系统本身以及通用的增量

    Cocos2D-X游戏开发技术精解

    作者介绍刘剑卓 有点文艺的IT男,会做美食的运动男,喜欢电影的80后。拥有八年的游 戏开发经验,精通移动平台...15.4.4 脚本化编程 399 15.4.5 可视化的操作界面 400 15.5 会不会有Cocos3D? 401 15.6 本章小结 403

Global site tag (gtag.js) - Google Analytics