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

猜你喜欢

转载自pandan-xyz.iteye.com/blog/2282351
今日推荐