Python Tech

ajenti的安装及插件制作

ajenti是Web方式的服务器管理平台,包含一系列常用运维工具,例如文件操作、服务管理、流量/磁盘空间实时监控等。这些工具本身倒是没什么亮点,我自己都写过。使用ajenti主要因为它是Python写的,修改扩展非常简单,我给它加了几个插件,省掉许多以前需要ssh连服务器进行操作。其次是它的界面交互做得不错,非专业人员也能使用,如果以后有多人管理的需求也能用上。本文分享安装和插件制作的步骤。

Install

ajenti支持Ubuntu、Debian、REHL、CentOS、FreeBSD这5种Linux发行版,我是在两台Ubuntu和一台FreeBSD上安装的,流程都很简单,以Ubuntu为例:

$ wget http://repo.ajenti.org/debian/key
$ sudo add-key key # 如果提示找不到命令,请使用 sudo apt-key add key
$ sudo echo “deb http://repo.ajenti.org/ng/debian main main ubuntu” >> /etc/apt/sources.list
$ sudo apt-get update
$ sudo apt-get install ajenti
$ sudo service ajenti restart
Stopping Ajenti:
* not running
Starting Ajenti:
* started

用浏览器打开:https://127.0.0.1:8000 (证书根据需要设置)就能看到ajenti的界面了:

Plugin

例如这台服务器的8001/8002端口上都有站点,我希望打开ajenti时能看到这些站点是否正常,所以制作一个名为monitor的插件,返回这两个站点的状态码。

ajenti的插件目录是/var/lib/ajenti/plugins/,目录结构自然是跟Python其他包一样,需要包含__init__.py文件。插件主要逻辑一般是写在main.py里,用xml文件定义布局,静态文件放在content目录下,因此基本的插件目录结构如下:

monitor/
├── content/
├── layout/
│   ├── main.xml
│   └── widget.xml
├── __init__.py
├── widget.py
└── main.py

content文件本例中不会用到,只介绍其他文件。首先是__init__.py文件,主要用来申明插件的名称、图标、依赖等信息。

然后是layout/main.xml文件,定义界面,包括Site1(8001端口的站点)/Site2(8002端口的站点)状态码如何显示。本例中,Site1是加载时直接显示,Site2是点击按钮后显示:

最后是main.py文件,用Python自带的库请求Site1/Site2,返回状态码:

插件执行如下图:

Widget

Dashboard里可以添加插件附带的Widget(点击右上方的“添加小部件”按钮弹出列表),把一些常用操作/信息放在Dashboard,省掉了点导航菜单的操作。上面的代码在__init__.py文件里import了widget,也创建了widget.xmlwidget.py文件,用来实现一个很简单的Widget,以下是代码:

Afterword

ajenti在github的repo地址是:https://github.com/Eugeny/ajenti ,开发插件时主要是参考源码。

相比同类产品来说,ajenti很突出:界面交互上比webmin好太多,免费开源,又把Cpanel和DA比下去了。没找到它具体的授权协议,但对于个人用户是“Completely free”,目前是可以放心使用的。硬件提供商需要申请“Special licensing conditions apply”,想省钱就请期待山寨产品出现吧。

Leave a Reply

Your email address will not be published. Required fields are marked *