一,工程模块化
在上一章节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