欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

lua项目模块化编程(一)

程序员文章站 2022-04-19 19:37:37
...

 一,工程模块化

    在上一章节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项目模块化编程(一)
 

二,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

 

相关标签: lua->基础