前言

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目录包含以下内容

  • htdocs
  • luasrc
  • Makefile
  • po
  • root
  • src

(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目录包含以下内容

  • htdocs
  • luasrc
  • Makefile
  • src

由此可以看出,LUCI的文件框架都是以luci-base目录为基础,其他主题及模式都是在此基础之上进行增减。

/www目录结构

1、/www目录下主要包含以下内容

  • cgi-bin
  • index.html
  • luci-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字段决定当前使用的主题及语言。

OPENWRT-LUCI开发总结-LUCI目录结构介绍相关推荐

  1. Kettle教程(二):Kettle目录结构介绍

    文章目录 前言 一.Kettle的Spoon/Pan/Kitchen/Carte 简介 1.Spoon 2.Pan 3.Kitchen 4.Carte 二.Kettle的目录结构介绍 三.总结 前言 ...

  2. 【Vue】—项目的目录结构介绍

    [Vue]-项目的目录结构介绍

  3. Linux常用命令(本篇包括,Linux目录结构介绍、Linux Shell介绍、9个常见命令介绍、文件的概念、文件的操作(20个)、目录的操作、文件和目录的权限、文件压缩及解压缩)

    Linux常用命令(本篇包括,Linux目录结构介绍.Linux Shell介绍.9个常见命令介绍.文件的概念.文件的操作(20个).目录的操作.文件和目录的权限.文件压缩及解压缩)         ...

  4. Flutter 基础目录结构介绍、入口自定义widget、等相关组件使用

    提示:此文章为前端学习flutter过程,如有歧义期望各位大大的宝贵意见 学习Dart 基础知识 移步这里 安装flutter环境相关 移步这里 flutter基础组件使用相关 移步这里 文章目录 一 ...

  5. 帝国cms目录结构介绍

    帝国CMS目录结构介绍 / 系统根目录 ├d/            附件和数据存放目录 (data) │├file/       附件存放目录 │├js/         JS调用生成目录 │└tx ...

  6. go-ethereum环境搭建及目录结构介绍

    go-ethereum代码阅读环境搭建 Ubuntu 16.04 64bit/Mac 安装GO 配置环境变量(GOROOT, GOPATH, GOBIN) 下载源码: $ cd $GOPATH; $ ...

  7. Android系统源码学习——源码目录结构介绍

    2019独角兽企业重金招聘Python工程师标准>>> Android 4.0源码目录结构: 本文介绍Android源码目录结构,以便读者理清Android编译系统核心代码在Andr ...

  8. Vue项目目录结构介绍(三)

    前言 本章我们会对一个 Vue 项目的目录结构进行讲解,解释各子目录以及文件的作用,前端的模块化,Vue 单文件组件规范等. 1.基础目录和文件介绍 在上一章,我们通过 vue-cli 创建了一个新的 ...

  9. Lichee(一)­­ lichee目录结构介绍和编译命令

    经过繁琐的环境搭建和漫长的代码下载的等待,我们终于可以开始我们的lichee之旅了,由于内容很繁杂,涉及面比较广,接下来就针对linux uboot modules等是如何被打包到固件这条主线来分析, ...

  10. 小程序开发(1)-之目录结构和文件说明

    #以下图片是小程序的目录结构,建议所有的目录都使用小写字母,不使用驼峰格式 #组件 components是自定义组件目录,对一些常用的组件的封装 #配置文件 config是配置文件,存有一些常用的字段 ...

最新文章

  1. typec扩展坞hdmi没反应_typec扩展坞转hdmi/vga多功能网口usb转换器苹果华为电脑matebook6元优惠券券后价26.8元...
  2. (68)FPGA面试题-使用不同的代码实现2:1 MUX ?使用assign语句
  3. Python:IPython性能度量
  4. 信息安全产业爆发在即 十三五年均增长将达20%以上
  5. eclipse如何导入okhttp 2.x源码
  6. 开源BI框架对比选择 Superset-Redash-Metabase
  7. 第三方支付业务流程介绍
  8. Android技术分享| 实现视频连麦直播
  9. Seismic Unix安装
  10. 【动态规划】字符串编辑距离(Levenshtein距离)算法
  11. 中国石油大学计算机评估排名,中国石油大学华东学科评估结果及排名情况怎样...
  12. centos使用xfreerdp登录报错
  13. 程序设计思维与实践 Month3 模拟
  14. 纯干货:优秀程序员和普通程序员的差距就在这7个关键点
  15. 02-蘑菇街爬虫mw-sign参数破解
  16. html5弹性盒子的作用,flexbox弹性盒子,真正意义上的布局样式
  17. Spring Security入门到实践(一)HTTP Basic在Spring Security中的应用原理浅析
  18. springboot项目调用阿里云短信接口(包括短信上行)
  19. Jpush之如何利用HttpClient实现消息推送到手机
  20. php融云开源sdk使用im,融云 IM SDK 集成 --- 刷新会话界面和会话列表界面

热门文章

  1. 开源词典软件-GoldenDict
  2. 只有A2L文件如何连接INCA
  3. 安卓手机管理_北斗ERP进销存管理(销存管理工具)V2.2.4 安卓手机版
  4. 可视化GDP动态图表EXCEL也能搞定,如何用Excel做动态图表
  5. 笔记本 关闭/开启 自带键盘
  6. php格林威治时间,时间戳与格林威治时间互相转换
  7. [设计模式]创建模式-建造者(C++描述)
  8. 湿化学清洗过程中晶片污染控制方法
  9. JavaSE_05【数组】拓展练习
  10. 自学总结:非科班转行前端拿到字节跳动 offer?看我是如何一步一步做到的?