Alpine 配置框架设计
Alpine 配置框架 (ACF) 是一个 MVC 风格的应用程序,用于配置 Alpine Linux 设备。主要 focus 是一个 Web 界面 - 一个轻量级的 MVC "webmin"。
安装
安装 ACF 非常简单。只需在您的终端中输入以下命令,并按照说明设置 ACF
setup-acf
上面的脚本安装 mini-httpd,创建证书,以 HTTPS 模式启动 mini-httpd 并安装一些基本的 acf-packages。要查看 ACF,只需浏览到您的机器 https://<hostname>/
或者,您的现有 Web 服务器可以按如下方式使用
- 安装 软件包 acf-core 和 acf-alpine-baselayout,软件包将安装到 /usr/share/acf。
- 配置您的 Web 服务器以访问 /usr/share/acf/www 并从 /usr/share/acf/www/cgi-bin 运行 cgi 脚本,您应该能够查看 ACF。
ACF packages 页面详细介绍了可用的 ACF 模块及其状态。前往 Managing ACF 页面以了解如何管理您的 ACF 安装。
为什么选择 Haserl + Lua
该领域中的其他竞争者包括 Webmin、Ruby on Rails、带有模板的 PHP。
一个完整的 webmin (Perl)、RoR 或 PHP 实现各自需要几 MB 的已安装代码,并且可能具有非常慢的启动时间,尤其是在以 "cgi" 模式使用时。在评估了许多选项后,我们发现 Lua 具有以下优势
- 它很小(通常约为 200KB 的编译代码)
- 它的编译和运行速度比 PHP, Perl[死链接] 或 Ruby 快得多
- 它提供了一种 "正常" 的脚本语言,其 功能 类似于 PHP、perl、java、awk 等。
Haserl + Lua 提供了一个 '足够好' 的工具集来构建一个功能齐全的 Web 应用程序。
为什么 ACF 是 MVC
MVC 设计模式用于将表示信息与控制逻辑分离。我们所说的 MVC 是指
- 模型 - 读取/写入配置文件、启动/停止守护程序或执行其他修改路由器工作的代码。
- 视图 - 格式化数据以进行输出的代码
- 控制器 - 将两者粘合在一起的代码
请注意缺少诸如 HTML、XML、OO、AJAX 等词语。ACF 的 MVC 的目的仅仅是将配置逻辑与输出的表示形式分离。
单个事务的流程是
开始 -> 在控制器中执行请求的函数,可选择使用模型中的函数读取/写入文件 -> 执行视图以格式化输出 -> 结束
每个事务都遵循此模式。对于 ACF 开发者来说,重点应该放在获得一个能够正确地将配置文件抽象成可用实体的模型,然后构建一个基于该模型呈现可用 "actions" 的控制器。表示层应该是优先级列表中的最后一位。
当然,与所有 MVC 设计一样,ACF MVC 设计并非完全 '纯粹' 的 MVC,并且随着时间的推移而发展。大多数控制器功能由框架代码处理。如果没有定义视图,框架代码还将自动为 HTML、JSON 和其他一些视图类型生成视图。此外,许多模型函数在辅助库中实现。我们已尝试尽可能简化开发新的 ACF 模块。
有关 ACF 尝试做什么的良好背景信息,请参阅 Terence Parr 的论文 "Enforcing Strict Model-View Separation in Template Engines",网址为 https://www.cs.usfcs.edu。
ACF 开发者指南
- mvc.lua 参考 - mvc.lua 是 ACF 的核心
- mvc.lua 示例 - 构建一个简单的(命令行)应用程序
- acf www-controller 参考 - ACF www 应用程序函数
- acf www-controller 示例 - 将上述示例 Web 化
- ACF 编写指南 - 编写 ACF 模块的逐步指南
- ACF 核心原则 - 应用程序中通用的标准
- LPOSIX - Lua Posix 函数的文档
- ACF 库 - 文档化库和常用函数
- 编写 ACF 视图 - 编写视图的指南
- 编写 ACF 控制器 - 编写控制器的指南
- 编写 ACF 模型 - 编写模型的指南
如何贡献
ACF 支持多种皮肤。一些可用的示例皮肤是
- /usr/share/acf/www/skins/alps/
- /usr/share/acf/www/skins/cloud/
- /usr/share/acf/www/skins/ice/
- /usr/share/acf/www/skins/snow/
- /usr/share/acf/www/skins/wik/
欢迎为 ACF 编程 css 样式表做出贡献。
- 创建一个新的皮肤文件夹。
# mkdir -p /etc/acf/skins/myskin
- 创建一个与文件夹同名的 css 文件。
# touch /etc/acf/skins/myskin/myskin.css
现在您可以开始编辑您的 myskin.css。
如果您的计算机上正在运行 ACF,您可以浏览到 https://<hostname>/cgi-bin/acf/acf-util/skins/read 并切换到您的新皮肤(名为 myskin),以查看更改结果。
打包您的 myskin 文件夹,其中包含您的 css 文件(以及图像,如果有)。
将此补丁发送至 acf@lists.alpinelinux.org (注意:在发送补丁之前,请不要忘记 订阅)