mirror of
https://github.com/HackPlan/RootPanel.git
synced 2026-01-13 07:01:20 +08:00
Update DOC
This commit is contained in:
50
DOC/DEV/PLUGGABLE.md
Normal file
50
DOC/DEV/PLUGGABLE.md
Normal file
@@ -0,0 +1,50 @@
|
||||
## 实现插件化
|
||||
以下部分用『RP3』指代 RP3 的核心部分。
|
||||
|
||||
### 服务
|
||||
每个服务插件,需要提供以下的功能(hook), 以下以 MySQL 举例:
|
||||
|
||||
* 启用 - 为 MySQL 添加一个用户
|
||||
* 暂停 - 删除 MySQL 的用户
|
||||
* 删除 - 删除这个用户所有的数据库
|
||||
* 默认配置 - 密码默认为禁用
|
||||
* 修改配置 - 修改密码
|
||||
* 显示状态 - 如显示 MySQL 数据库磁盘占用
|
||||
* 监控资源 - 如监控 MySQL 数据库磁盘占用
|
||||
|
||||
### Hook
|
||||
插件可以注册 RP3 提供的 Hook 来对 RP3 的数据和逻辑进行修改。
|
||||
|
||||
如 `rendering.navbar` 表示正在渲染 HTML 输出中的导航条部分。
|
||||
|
||||
插件可以注册自己的处理程序,接收一个参数(目前的导航条条目), 返回一个值(处理后的).
|
||||
|
||||
### 数据储存
|
||||
插件与 RP3 使用同一数据库,插件所使用的集合名需添加 `plugin.name` 的前缀,如 `plugin.ssh.info`.
|
||||
|
||||
### 路由
|
||||
插件可以注册或覆盖 RP3 的路由。
|
||||
|
||||
### UI
|
||||
插件可以在用户的面板添加区块来显示信息。
|
||||
|
||||
插件在修改配置时需要提供一段 HTML 表单。
|
||||
|
||||
### 资源监控
|
||||
需要监控的资源有:
|
||||
|
||||
* CPU 时间 - 单位 秒(s)
|
||||
* 内存占用 - 单位 百万字节每小时(MiB/h)
|
||||
* 磁盘空间 - 单位 MiB
|
||||
* 外网流量 - 可以延后实现
|
||||
* 磁盘 OI - 可以延后实现
|
||||
|
||||
当然并非每个服务都能精确地监控这些资源,这其中有很多困难,总之尽力而为吧,以下以 SSH 服务的资源监控为例:
|
||||
|
||||
插件可以向 RP3 注册监控程序,如:
|
||||
|
||||
* 每 30s 运行 CPU 监控程序
|
||||
* 每 60s 运行内存监控程序
|
||||
* 每 6h 运行磁盘监控程序
|
||||
|
||||
监控程序定时向 RP3 返回几种资源的使用情况,RP3 进行汇总统计。
|
||||
146
DOC/DEV/PLUGINS.md
Normal file
146
DOC/DEV/PLUGINS.md
Normal file
@@ -0,0 +1,146 @@
|
||||
## 插件
|
||||
### 运行时
|
||||
RP3 会安装下列语言的运行时
|
||||
|
||||
* PHP
|
||||
* Python
|
||||
* Golang
|
||||
* Node
|
||||
|
||||
### 服务
|
||||
|
||||
* MySQL
|
||||
|
||||
使用 MariaDB 实现,只监听本地端口,支持引擎:
|
||||
|
||||
* MyISAM (默认)
|
||||
* XtraDB(InnoDB)
|
||||
|
||||
需要提供一个类似 phpMyAdmin 的 GUI
|
||||
|
||||
* 权限控制
|
||||
|
||||
每个用户对『以自己的用户名为前缀的数据库』有操作权限
|
||||
例如 jysperm 可以访问 jysperm_db
|
||||
|
||||
* 面板操作
|
||||
|
||||
* 设置 MySQL 密码
|
||||
|
||||
* 资源监控
|
||||
|
||||
* 磁盘占用
|
||||
* 查询数量(折合为 CPU 时间,延后实现)
|
||||
* XtraDB 的使用情况(折合为内存使用), 因为 XtraDB 比较消耗内存,延后实现
|
||||
|
||||
|
||||
* MongoDB
|
||||
|
||||
MongoDB 开启 --auth 选项
|
||||
权限控制:每个用户对『以自己的用户名为前缀的数据库』有操作权限
|
||||
|
||||
* 面板操作:
|
||||
|
||||
* 新建数据库
|
||||
* 重置数据库权限
|
||||
* 删除数据库
|
||||
|
||||
* 资源监控
|
||||
|
||||
* 磁盘占用
|
||||
* 其他指标,延后实现
|
||||
|
||||
* SSH
|
||||
|
||||
* 面板操作:
|
||||
|
||||
* 设置 SSH 密码
|
||||
* 结束所有进程
|
||||
* 重置文件权限
|
||||
|
||||
* 资源监控
|
||||
|
||||
* 进程使用的 CPU 时间
|
||||
* 进程使用的内存
|
||||
* home 目录的磁盘空间
|
||||
|
||||
* Nginx
|
||||
|
||||
该插件直接对输入的 Nginx 配置文件进行解析,进行安全性检查。
|
||||
然后将配置文件写入 Nginx, 重新加载 Nginx.
|
||||
|
||||
配置文件以站点为单位,每个站点可以暂时启用和禁用
|
||||
|
||||
* 同时提供一个 GUI 辅助用户编写配置文件
|
||||
* [支持的配置文件指令](https://gist.github.com/jysperm/6479965)
|
||||
|
||||
* 面板操作
|
||||
|
||||
* 新建/修改/删除站点
|
||||
|
||||
* 资源监控
|
||||
|
||||
可以靠根据日志来统计,或者编写 Nginx 模块
|
||||
|
||||
* 请求数
|
||||
* 流量
|
||||
|
||||
* PHP-FPM
|
||||
|
||||
为每个用户跑一个 PHP-FPM 进程池,并通过 Unix Socket 连接
|
||||
该功能只是默认的 PHP 支持,用户完全可以运行自己的 PHP-FPM 实现深度定制。
|
||||
|
||||
* 面板操作
|
||||
|
||||
* 启用/关闭 PHP-FPM
|
||||
|
||||
* 资源监控
|
||||
|
||||
纳入 SSH 资源监控
|
||||
|
||||
* ShadowSocks
|
||||
|
||||
为每个用户使用单独的端口和密码。
|
||||
|
||||
* 面板操作
|
||||
|
||||
* 启用/关闭 ShadowSocks
|
||||
* 设置密码
|
||||
|
||||
* 资源监控
|
||||
|
||||
可能需要修改其源代码
|
||||
|
||||
* 流量
|
||||
|
||||
* PPTP VPN
|
||||
|
||||
* 面板操作
|
||||
|
||||
* 设置密码
|
||||
|
||||
* 资源监控
|
||||
|
||||
可能需要修改其源代码
|
||||
|
||||
* 流量
|
||||
|
||||
* Memcached
|
||||
|
||||
为每个用户跑一个 Memcached, 并通过 Unix Socket 连接
|
||||
|
||||
* 面板操作
|
||||
|
||||
* 启用/关闭 Memcached
|
||||
* 设置缓存内存大小
|
||||
|
||||
* 资源监控
|
||||
|
||||
纳入 SSH 资源监控
|
||||
|
||||
### 功能插件
|
||||
|
||||
* 用户手册
|
||||
* 用户剩余时长计数器
|
||||
* Bitcoin 支付
|
||||
* 支付宝担保交易
|
||||
254
README.md
254
README.md
@@ -1,34 +1,10 @@
|
||||
## RootPanel3
|
||||
|
||||
## 目标
|
||||
RP 3 是一个插件化的 Linux 虚拟主机管理和销售系统。
|
||||
RP3 是一个插件化的 Linux 虚拟主机管理和销售系统。
|
||||
|
||||
所谓虚拟主机就是指在同一个物理服务器(或 VPS)上,划分给多个用户使用,使其互不干扰。
|
||||
相比于 VPS, 虚拟主机实现的是应用级别的虚拟化,而不是操作系统级别的虚拟机。
|
||||
虚拟主机大概介于 PaaS(GAE, SAE) 和 IaaS 之间。
|
||||
|
||||
RP3 就是要做一个针对 Linux 的特点深度定制的虚拟主机管理和销售系统,所谓 Linux 的特点,比如:
|
||||
|
||||
* 用户机制
|
||||
* Unix Socket
|
||||
* SSH 和 SFTP
|
||||
|
||||
### 类似产品
|
||||
市面上有很多类似的虚拟主机管理系统,他们都不符合 RP3 的目标
|
||||
|
||||
* Usermin - 太复杂,UI 太原始,perl 太冷门
|
||||
|
||||
国内的几款:
|
||||
|
||||
* AMH - 没有用户系统
|
||||
* WDCP
|
||||
* LuManager - 非自由软件
|
||||
|
||||
除此之外的共同特点:
|
||||
|
||||
* 对 Nginx 功能支持有限
|
||||
* 只支持 PHP
|
||||
|
||||
### 功能
|
||||
|
||||
RP3 的核心功能包括:
|
||||
@@ -37,24 +13,23 @@ RP3 的核心功能包括:
|
||||
* 工单系统
|
||||
* 管理员面板
|
||||
|
||||
其他功能均以插件实现。
|
||||
其他功能均以插件实现,包括 SSH, Nginx, PHP-FPM, MySQL, ShadowSocks 等等。
|
||||
|
||||
除此之外,RP3 要实现:
|
||||
除此之外,RP3 支持:
|
||||
|
||||
* 非侵入式的安装
|
||||
|
||||
可以定制相关配置文件的路径,可以与其他面板共存,可以同时手工管理。
|
||||
|
||||
|
||||
* 国际化
|
||||
|
||||
支持多语言,如果有人翻译的话
|
||||
|
||||
|
||||
## 技术构成
|
||||
|
||||
* 前端:Bootstrap3, jQuery, jade, less
|
||||
* 后端:express, Coffee
|
||||
* 数据库:mongodb, memcache
|
||||
* 前端:Bootstrap3, jQuery, Jade, Less
|
||||
* 后端:Express, Coffee
|
||||
* 数据库:MongoDB, Memcache
|
||||
|
||||
操作系统支持,按推荐程度排序:
|
||||
|
||||
@@ -62,218 +37,3 @@ RP3 的核心功能包括:
|
||||
* Ubuntu
|
||||
* Arch
|
||||
* CentOS
|
||||
|
||||
## 关于该文档
|
||||
该文档描述了 RP3 的详细需求,部分功能被标注为了『延后实现』。
|
||||
|
||||
## 核心
|
||||
### 用户系统
|
||||
功能中规中矩,注册,登录。
|
||||
登录后会有个面板,显示一些常规信息,各个插件可以向面板上添加信息。
|
||||
|
||||
用户名只允许使用字母和数字,必须以字母开头,不能使用任何符号。
|
||||
这个限制是因为在各个系统中均会以用户名为标识,为了保证和各个系统的兼容性,只好这样。
|
||||
|
||||
### 工单系统
|
||||
和 RP2 差不多
|
||||
|
||||
### 管理员面板
|
||||
默认是一个服务器基本信息报表,和一个用户列表。
|
||||
|
||||
## 插件
|
||||
### 运行时
|
||||
RP3 会安装下列语言的运行时
|
||||
|
||||
* PHP
|
||||
* Python
|
||||
* Golang
|
||||
* Node
|
||||
|
||||
### 服务
|
||||
|
||||
* MySQL
|
||||
|
||||
使用 MariaDB 实现,只监听本地端口,支持引擎:
|
||||
|
||||
* MyISAM (默认)
|
||||
* XtraDB(InnoDB)
|
||||
|
||||
需要提供一个类似 phpMyAdmin 的 GUI
|
||||
|
||||
* 权限控制
|
||||
|
||||
每个用户对『以自己的用户名为前缀的数据库』有操作权限
|
||||
例如 jysperm 可以访问 jysperm_db
|
||||
|
||||
* 面板操作
|
||||
|
||||
* 设置 MySQL 密码
|
||||
|
||||
* 资源监控
|
||||
|
||||
* 磁盘占用
|
||||
* 查询数量(折合为 CPU 时间,延后实现)
|
||||
* XtraDB 的使用情况(折合为内存使用), 因为 XtraDB 比较消耗内存,延后实现
|
||||
|
||||
|
||||
* MongoDB
|
||||
|
||||
MongoDB 开启 --auth 选项
|
||||
权限控制:每个用户对『以自己的用户名为前缀的数据库』有操作权限
|
||||
|
||||
* 面板操作:
|
||||
|
||||
* 新建数据库
|
||||
* 重置数据库权限
|
||||
* 删除数据库
|
||||
|
||||
* 资源监控
|
||||
|
||||
* 磁盘占用
|
||||
* 其他指标,延后实现
|
||||
|
||||
* SSH
|
||||
|
||||
* 面板操作:
|
||||
|
||||
* 设置 SSH 密码
|
||||
* 结束所有进程
|
||||
* 重置文件权限
|
||||
|
||||
* 资源监控
|
||||
|
||||
* 进程使用的 CPU 时间
|
||||
* 进程使用的内存
|
||||
* home 目录的磁盘空间
|
||||
|
||||
* Nginx
|
||||
|
||||
该插件直接对输入的 Nginx 配置文件进行解析,进行安全性检查。
|
||||
然后将配置文件写入 Nginx, 重新加载 Nginx.
|
||||
|
||||
配置文件以站点为单位,每个站点可以暂时启用和禁用
|
||||
|
||||
* 同时提供一个 GUI 辅助用户编写配置文件
|
||||
* [支持的配置文件指令](https://gist.github.com/jysperm/6479965)
|
||||
|
||||
* 面板操作
|
||||
|
||||
* 新建/修改/删除站点
|
||||
|
||||
* 资源监控
|
||||
|
||||
可以靠根据日志来统计,或者编写 Nginx 模块
|
||||
|
||||
* 请求数
|
||||
* 流量
|
||||
|
||||
* PHP-FPM
|
||||
|
||||
为每个用户跑一个 PHP-FPM 进程池,并通过 Unix Socket 连接
|
||||
该功能只是默认的 PHP 支持,用户完全可以运行自己的 PHP-FPM 实现深度定制。
|
||||
|
||||
* 面板操作
|
||||
|
||||
* 启用/关闭 PHP-FPM
|
||||
|
||||
* 资源监控
|
||||
|
||||
纳入 SSH 资源监控
|
||||
|
||||
* ShadowSocks
|
||||
|
||||
为每个用户使用单独的端口和密码。
|
||||
|
||||
* 面板操作
|
||||
|
||||
* 启用/关闭 ShadowSocks
|
||||
* 设置密码
|
||||
|
||||
* 资源监控
|
||||
|
||||
可能需要修改其源代码
|
||||
|
||||
* 流量
|
||||
|
||||
* PPTP VPN
|
||||
|
||||
* 面板操作
|
||||
|
||||
* 设置密码
|
||||
|
||||
* 资源监控
|
||||
|
||||
可能需要修改其源代码
|
||||
|
||||
* 流量
|
||||
|
||||
* Memcached
|
||||
|
||||
为每个用户跑一个 Memcached, 并通过 Unix Socket 连接
|
||||
|
||||
* 面板操作
|
||||
|
||||
* 启用/关闭 Memcached
|
||||
* 设置缓存内存大小
|
||||
|
||||
* 资源监控
|
||||
|
||||
纳入 SSH 资源监控
|
||||
|
||||
### 功能插件
|
||||
|
||||
* 用户手册
|
||||
* 用户剩余时长计数器
|
||||
* Bitcoin 支付
|
||||
* 支付宝担保交易
|
||||
|
||||
## 实现插件化
|
||||
以下部分用『RP3』指代 RP3 的核心部分。
|
||||
|
||||
### 服务
|
||||
每个服务插件,需要提供以下的功能(hook), 以下以 MySQL 举例:
|
||||
|
||||
* 启用 - 为 MySQL 添加一个用户
|
||||
* 暂停 - 删除 MySQL 的用户
|
||||
* 删除 - 删除这个用户所有的数据库
|
||||
* 默认配置 - 密码默认为禁用
|
||||
* 修改配置 - 修改密码
|
||||
* 显示状态 - 如显示 MySQL 数据库磁盘占用
|
||||
* 监控资源 - 如监控 MySQL 数据库磁盘占用
|
||||
|
||||
### Hook
|
||||
插件可以注册 RP3 提供的 Hook 来对 RP3 的数据和逻辑进行修改。
|
||||
|
||||
如 `rendering.navbar` 表示正在渲染 HTML 输出中的导航条部分。
|
||||
|
||||
插件可以注册自己的处理程序,接收一个参数(目前的导航条条目), 返回一个值(处理后的).
|
||||
|
||||
### 数据储存
|
||||
插件与 RP3 使用同一数据库,插件所使用的集合名需添加 `plugin.name` 的前缀,如 `plugin.ssh.info`.
|
||||
|
||||
### 路由
|
||||
插件可以注册或覆盖 RP3 的路由。
|
||||
|
||||
### UI
|
||||
插件可以在用户的面板添加区块来显示信息。
|
||||
|
||||
插件在修改配置时需要提供一段 HTML 表单。
|
||||
|
||||
### 资源监控
|
||||
需要监控的资源有:
|
||||
|
||||
* CPU 时间 - 单位 秒(s)
|
||||
* 内存占用 - 单位 百万字节每小时(MiB/h)
|
||||
* 磁盘空间 - 单位 MiB
|
||||
* 外网流量 - 可以延后实现
|
||||
* 磁盘 OI - 可以延后实现
|
||||
|
||||
当然并非每个服务都能精确地监控这些资源,这其中有很多困难,总之尽力而为吧,以下以 SSH 服务的资源监控为例:
|
||||
|
||||
插件可以向 RP3 注册监控程序,如:
|
||||
|
||||
* 每 30s 运行 CPU 监控程序
|
||||
* 每 60s 运行内存监控程序
|
||||
* 每 6h 运行磁盘监控程序
|
||||
|
||||
监控程序定时向 RP3 返回几种资源的使用情况,RP3 进行汇总统计。
|
||||
|
||||
Reference in New Issue
Block a user