前言
LUCI作为openWRT的CGI程序,与uhttpd web server服务器一起搭配使用。uhttpd的开机启动脚本为/etc/init.d/uhttpd,配置文件为/etc/config/uhttpd,启动命令如下,其中-h指定web server服务器的根目录/www/;-x指定CGI URL路径,默认为/www/cgi-bin/。所以,在介绍LUCI启动流程之前,先介绍下各个目录的功能。
/usr/sbin/uhttpd -f -h /www -r OpenWrt -x /cgi-bin -u /ubus -t 60 -T 30 -k 20 -A 1 -n 3 -N 100 -R -p 0.0.0.0:80 -p [::]:80
本篇整理分为以下几个部分
版本机目录结构/www目录结构/usr/lib/lua目录结构
版本机目录结构
1、在make menuconfig->LuCI->2.modules下可以看到默认选中luci-base,luci-mod-admin-full两个模型,这两个模型包含了网页的基本功能。
(1)luci-base目录
luci-base目录包含以下内容
htdocsluasrcMakefileporootsrc
(a)htdocs(html+docs):此目录存放HTML相关文件,主要包含以下两个目录,当烧录到硬件设备后,将拷贝到/www根目录下
cgi-bin:存放luci启动脚本luci-static:存放HTML相关文件,包含CSS、JS及网页图片等文件
(b)luasrc(lua+src):此目录存放系统功能的LUA文件及M(model)、V(view)、C(controller)文件夹,当烧录到硬件设备后,将拷贝到/usr/lib/lua/luci目录下
C(controller):控制器,生成页面的菜单栏并定义各个页面的调用方法M(model):数据模型,根据底层UCI配置文件生成页面V(view):视图,HTML页面
(c)Makefile:定义luci-base的编译方法
(d)po:定义页面的语言风格
(e)root:存放配置文件,该目录下的所有文件将拷贝到硬件设备根目录下
(f)src:生成所需要的库文件及LUA脚本
(2)luci-mod-admin-full目录
luci-mod-admin-full目录包含以下内容
htdocsluasrcMakefilesrc
由此可以看出,LUCI的文件框架都是以luci-base目录为基础,其他主题及模式都是在此基础之上进行增减。
/www目录结构
1、/www目录下主要包含以下内容 cgi-binindex.htmlluci-static(1)cgi-bin:此文件从luci-base下拷贝过来的,存放luci启动脚本
(2)index.html:http请求的主页面,默认是/www/index.html,这个文件里显示了登录时常看见的那句话“LuCI - Lua Configuration Interface”,同时也指定了href链接/cgi-bin/luci
(3)luci-static:存放HTML相关文件,包含CSS、JS及网页图片等文件。不同主题的htdocs/luci-static都将拷贝到这个目录下
/usr/lib/lua/目录结构
1、/usr/lib/lua/路径,顾名思义,存放了与LUA相关的文件,在LUA脚本中,通过require命令引用的脚本及函数,起始路径都是该目录。同时,不同模型及主题的luasrc文件夹都拷贝到/usr/lib/lua/luci目录下,通过/etc/config/luci中的mediaurlbase字段决定当前使用的主题及语言。