# FlashServer **Repository Path**: chiro2001/FlashServer ## Basic Information - **Project Name**: FlashServer - **Description**: 服务器应用管理软件。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-07-08 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FlashServer #### 介绍 服务器应用管理软件。 #### 软件架构 **软件架构说明** - Deployer:管理Apache的配置和app - Apache2:在内部转发到对应端口 - Listener:监听应用端口,如果不活跃则关闭对应应用。请求暂存。 - APP: - static:静态网站(可用COS替代) - pswd:密码管理器 - Router:控制比较简单的应用托管,放在一个进程当中 ##### 技术细节 **Deployer1** - 通过管理appx.conf来配置apache的转发 - 内部端口23001 ~ 23xxx - 应用分类型: - 常驻应用:不会因为没有数据连接而停止运行 - 热启动应用 - 会因为没有数据连接而停止运行,下次数据来了再启动。 - 应用未启动的时候的请求会被放入暂存队列,启动完成就会调用。 - 后端应用:有端口(对外)监听 - 非后端应用:没有端口(对外)监听 **Deployer2** - 直接使用Flask的生命周期进行内部转发 - 端口设置同上 - 应用设置同上 - Listener和Deployer合为一体 **Apache2** - *.conf文件的配置? - 对不同域名来源的分流? **Listener** - 工作方式1: - 应用已经关闭,把数据重定向到Listener的缓冲队列 - 收到访问数据,Listener提醒Deployer把应用打开,此时把请求挂起 - 应用启动完毕,把这个请求复制一份来访问Listener,收到app的回应再作为回应回复请求 - 应用已经运行,下次数据进入缓冲队列就立刻请求app,重置无数据时间 - 如果无数据时间超过一定限度,通知Deployer强制关闭应用 - app回复时间过长则回复超时 - app在运行中可以通过请求自己或Listener的方法暂时防止被强制停止 **数据库** - 数据集 - 应用信息 - 应用调用监控 - 应用log? - 结构设计 - 库:应用信息(app_info):这部分请放在flashserver.json里面 - 应用名字(name):用来调用的名字 - 展示名字(display_name):显示在面板上的名字 - 运行命令(command):字符串,一般直接`python3 simple.py` - 应用运行类型(run_mode) - 热启动型(hot_start):需要时候启动,没有持续的数据连接则关闭 - 常驻型(stand_by):一直运行 - 按需启动型(once_start):每次访问只启动一次 - 运行计划任务(task) - 定时执行(regular) - API调用执行(...):暂时不可用 - 版本信息(version_info) - 所有者(owner) - 更新时间(update_time) - 版本(version) - 依赖库(requirements)数组 - 提交注释(comments) - 库:应用运行(app_running) - 应用运行记录(logs) - 日志类型(type):【启动(launch),访问(visit),错误(error)】 - 日志内容(content) - 应用运行状况(status) - 运行状态(status):【运行中(running),正在操作(in_operation), 挂起(hang_up),停机(stop),故障(error)】 - 运行管理(manager) - 当前可用最小端口号(min_port) **virtualenv使用** #### 安装教程 #### 使用说明 ### TO-DO List -[x] 进行计划 -[ ] 可行性验证 -[ ] Apache2配置:不同来源分流 -[x] Flask转发 -[x] 使用虚拟环境:virtualenv -[ ] 尝试构建 -[x] 转发 -[ ] 应用启动 -[ ] sample应用 -[ ] 搭建app *P.S* 这是服务器管理的调度基础。