Alpine Linux 配置框架设计

来自 Alpine Linux

Alpine Linux 配置框架 (ACF) 是一个 mvc 风格的应用程序,用于配置 Alpine Linux 设备。主要侧重于 Web 界面 - 一个轻量级的 MVC 'webmin'。

安装

安装 ACF 非常简单。只需在您的终端中输入以下命令,并按照说明设置 ACF

setup-acf

上述脚本会安装 mini-httpd,创建证书,在 HTTPS 模式下启动 mini-httpd,并安装一些基本的 acf-packages。要查看 ACF,只需浏览到您的机器 https://<hostname>/

或者,您可以按如下方式使用您现有的 Web 服务器

  • 安装 acf-core acf-coreacf-alpine-baselayout 软件包,软件包将安装到 /usr/share/acf
  • 配置您的 Web 服务器以允许访问 /usr/share/acf/www,并从 /usr/share/acf/www/cgi-bin 运行 cgi 脚本,您应该能够查看 ACF。

ACF 软件包页面详细介绍了可用的 ACF 模块及其状态。请前往 管理 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 是指

  • 模型 (Model) - 读取/写入配置文件、启动/停止守护进程或执行其他修改路由器工作的代码。
  • 视图 (View) - 格式化数据以供输出的代码
  • 控制器 (Controller) - 将两者粘合在一起的代码

请注意,这里没有提到 HTML、XML、OO、AJAX 等词汇。ACF 的 MVC 的目的只是将配置逻辑与输出的表示形式分离。

单个事务的流程是

开始 -> 在控制器 (Controller) 中执行请求的函数,可选择使用模型 (Model) 中的函数读取/写入文件 -> 执行视图 (View) 以格式化输出 -> 结束

每个事务都遵循此模式。对于 ACF 开发者来说,重点应该放在获得一个模型,该模型能够正确地将配置文件抽象成可用的实体,然后构建一个控制器,该控制器基于模型呈现可用的“操作”。表示层应该是优先级列表中最后考虑的。

当然,与所有 MVC 设计一样,ACF MVC 设计并非完全“纯粹”的 MVC,并且随着时间的推移而发展。大多数控制器 (Controller) 功能由框架代码处理。如果没有定义视图 (View),框架代码还会自动为 HTML、JSON 和其他一些视图类型生成视图。此外,许多模型 (Model) 函数是在辅助库中实现的。我们已尽力使开发新的 ACF 模块尽可能容易。

要获得关于 ACF 试图做什么的良好背景信息,请参阅 Terence Parr 的论文 'Enforcing Strict Model-View Separation in Template Engines',网址为 https://www.cs.usfcs.edu。

ACF 开发者指南

  1. mvc.lua 参考 - mvc.lua 是 ACF 的核心
  2. mvc.lua 示例 - 构建一个简单的(命令行)应用程序
  3. acf www-controller 参考 - ACF www 应用程序函数
  4. acf www-controller 示例 - 将上述示例 Web 化
  5. ACF 编写指南 - 编写 ACF 模块的分步指南
  6. ACF 核心原则 - 应用程序中通用的标准
  7. LPOSIX - Lua Posix 函数的文档
  8. ACF 库 - 文档化库和常用函数
  9. 编写 ACF 视图 - 编写视图的指南
  10. 编写 ACF 控制器 - 编写控制器的指南
  11. 编写 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 (注意:在发送补丁之前,请不要忘记订阅)

参见