# webps **Repository Path**: dakota/webps ## Basic Information - **Project Name**: webps - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-13 - **Last Updated**: 2025-08-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # webPs系统监控面板 webPs是一个基于 Go 语言开发的跨平台系统监控面板,支持 Windows、Linux 和 macOS。使用 Gin 框架、GORM ORM 和 Redis 构建,提供服务器状态监控、资源使用情况查看以及系统操作功能。 ## 功能特点 1. 服务器管理 - 查看服务器状态 - 重启服务器 - 停止服务器 2. 系统监控 - CPU 使用率监控 - 内存使用率监控 - 磁盘使用率监控 - 系统运行时间查看 - 资源使用趋势图表 3. 系统操作 - 关闭系统 - 重启系统 ## 技术栈 - 后端: Go, Gin, GORM - 数据库: SQLite (默认), 支持 MySQL 和 PostgreSQL - 缓存: Redis - 前端: HTML, Tailwind CSS, JavaScript, Chart.js ## 项目结构 ``` webPs/ ├── config/ # 配置文件 ├── controller/ # 控制器 ├── model/ # 数据模型 ├── router/ # 路由配置 ├── service/ # 服务层 ├── static/ # 静态文件 ├── templates/ # HTML 模板 ├── go.mod # Go 模块定义 ├── go.sum # 依赖列表 └── main.go # 项目入口 ``` ## 环境要求 - Go 1.21+ - Redis (可选,用于缓存) ## 跨平台支持 本应用经过优化,可以在以下操作系统上运行: - Windows - Linux - macOS ### 跨平台注意事项 1. **路径分隔符**:应用内部使用 `path/filepath` 包处理路径,自动适应不同操作系统的路径分隔符。 2. **文件权限**:在 Linux/macOS 上运行时,请确保应用有对 `data/` 目录的写入权限。 3. **Windows 防火墙**:首次运行时,可能需要允许应用通过 Windows 防火墙。 4. **数据库驱动**: - SQLite: 使用 `modernc.org/sqlite` 驱动,无需额外安装 - MySQL: 无需额外安装驱动 - PostgreSQL: 无需额外安装驱动 ## 安装运行 ### 前提条件 - Go 1.21+ 已安装 - Git 已安装 ### 克隆代码 ```bash git clone https://gitee.com/dakota/webps.git cd webps ``` ### 安装依赖 ```bash go mod tidy ``` ### 构建 使用提供的构建脚本进行多平台构建: #### Linux/macOS ```bash chmod +x build_multi_platform.sh ./build_multi_platform.sh ``` #### Windows ```batch build_multi_platform.bat ``` ### 运行 #### Linux/macOS ```bash # 运行 SQLite 版本 ./bin/webps-linux-amd64 # 或对应的平台版本 # 或指定配置文件 ./bin/webps-linux-amd64 -config config/config.yaml ``` #### Windows ```batch # 运行 SQLite 版本 bin\webps-windows-amd64.exe # 或指定配置文件 bin\webps-windows-amd64.exe -config config\config.yaml ``` ### 访问面板 打开浏览器,访问 http://localhost:8080 ## 数据库配置 ### 配置文件方式 复制示例配置文件并根据您的环境修改: #### Linux/macOS ```bash cp config/config.yaml.example config/config.yaml ``` #### Windows ```batch copy config\config.yaml.example config\config.yaml ``` 然后编辑 `config/config.yaml` 文件,根据您的需求修改以下部分: ### SQLite 默认使用 SQLite 数据库,数据文件存储在 `data/` 目录下。 ```yaml database: type: sqlite dbname: webps.db ``` ### MySQL ```yaml database: type: mysql host: localhost port: 3306 username: root password: password dbname: webps ``` ### PostgreSQL ```yaml database: type: postgres host: localhost port: 5432 username: postgres password: password dbname: webps ``` ### 环境变量方式 也可以通过环境变量覆盖配置: - `SERVER_PORT`: 服务器端口 (默认: 8080) - `DB_TYPE`: 数据库类型 (sqlite, mysql, postgres) (默认: sqlite) - `SQLITE_PATH`: SQLite 数据库文件路径 (默认: ./data/webps.db) - `DB_HOST`: 数据库主机 (默认: localhost) - `DB_PORT`: 数据库端口 (默认: 3306) - `DB_USERNAME`: 数据库用户名 (默认: root) - `DB_PASSWORD`: 数据库密码 - `DB_NAME`: 数据库名称 (默认: webps) - `REDIS_ADDR`: Redis 地址 (默认: localhost:6379) - `REDIS_PASSWORD`: Redis 密码 ## 注意事项 1. 系统操作功能(关闭/重启系统)需要管理员权限 2. 为了安全起见,默认情况下系统操作功能只打印命令不实际执行,如需启用请修改 service/system.go 文件中的相关代码 3. 在生产环境中,请确保正确配置防火墙和访问控制 ## 常见问题 ### Windows 上运行提示数据库错误 确保您使用的是最新版本的配置文件,并且配置文件中的路径使用正斜杠 `/` 或双反斜杠 `\\`。 ### 端口被占用 修改 `config/config.yaml` 中的 `server.port` 配置,或在运行时使用 `-port` 参数指定端口: ```bash # Linux/macOS ./bin/webps-linux-amd64 -port 8081 # Windows bin\webps-windows-amd64.exe -port 8081 ``` ### /api/server/ports 返回数据为空 如果 /api/server/ports 端点返回数据为空,可能是由于权限问题或系统配置问题导致无法获取监听端口信息。 解决方案: 1. 打开 service/system.go 文件 2. 找到 GetListeningPorts 方法 3. 替换为以下测试数据版本(临时解决方案): ```go // GetListeningPorts 获取所有监听端口和相关进程信息 func (s *SystemService) GetListeningPorts() ([]map[string]interface{}, error) { // 测试数据 return []map[string]interface{}{ { "port": "8000", "protocol": "tcp", "address": "*:8000", "process_name": "Python", "pid": 1234, }, { "port": "8888", "protocol": "tcp", "address": "*:8888", "process_name": "Go", "pid": 5678, }, }, nil } ``` 4. 重新启动服务器 永久解决方案需要进一步调查为什么 net.Connections("tcp") 无法获取到监听端口信息,可能的原因包括权限问题、系统配置问题或 gopsutil 库的兼容性问题。