MacCMS Rust Edition 是基于 Rust 语言重构的高性能视频内容管理系统(CMS),完全兼容原版 MacCMS 的数据结构和 API 接口,但在性能、并发处理和内存管理方面有质的提升。每满百星我就会制作一个好看的模板,欢迎 star 收藏。
- 🔥 极致性能: 相同配置服务器下,并发处理能力是原版 MacCMS 的 10 倍以上
- 🛡️ 内存安全: Rust 语言保障,杜绝内存泄漏和缓冲区溢出
- ⚡ 异步架构: 基于 Tokio 和 Actix Web,支持高并发 I/O 操作
- 📊 实时监控: 内置任务进度监控和性能统计
- 🎯 向后兼容: 完全兼容原版 MacCMS 数据库结构和 API
- 操作系统: Linux/macOS/Windows
- 内存: 最低 512MB,推荐 2GB+
- 存储: 最低 1GB 可用空间
- 数据库: MongoDB 4.0+
- 网络: 支持高并发连接
如果是生产环境,建议安装了 mongodb 之后,直接使用 Release 包安装。
# 安装 Rust 工具链
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 安装 MongoDB (Ubuntu/Debian)
sudo apt-get install gnupg curl
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
--dearmor
# Ubuntu 22.04 其他版本参考官方文档
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
sudo apt update
sudo apt-get install -y mongodb-org
# 启动 MongoDB
sudo systemctl start mongodgit clone https://github.com/TFTG-CLOUD/MacCMS-rust
cd MacCMS-rust# 编辑配置文件
nano .env环境变量配置示例:
# 数据库连接
DATABASE_URL=mongodb://localhost:27017
DATABASE_NAME=maccms_rust
# 服务器配置
SERVER_HOST=127.0.0.1
SERVER_PORT=8080
# 管理员账户
ADMIN_USER=admin
ADMIN_PASS=your_secure_password
# 会话密钥
SESSION_SECRET_KEY=your_session_secret_key# 开发模式运行
cargo run
# 生产模式编译
cargo build --release
# 复制生产版本到根目录
cp target/release/maccms-rust ../../
# 运行生产版本
./maccms-rust- 前台页面: http://localhost:8080
- 管理后台: http://localhost:8080/admin
- API 接口: http://localhost:8080/api
- 后端框架: Actix Web 4.x
- 异步运行时: Tokio 1.x
- 数据库: MongoDB 4.x
- 模板引擎: Tera 1.x
- 序列化: Serde + Serde JSON
- 密码加密: bcrypt
- HTTP 客户端: reqwest
- 图片处理: image + webp
src/
├── main.rs # 应用入口
├── models.rs # 数据模型(Vod、Type、Collection、Binding、Config等)
├── api_handlers.rs # 前台API接口处理器
├── web_handlers.rs # Web页面处理器
├── admin_handlers.rs # 管理后台API处理器
├── collect_handlers.rs # 采集功能处理器
├── db.rs # 数据库连接
├── auth.rs # 认证模块
├── dto.rs # 数据传输对象
├── template.rs # 模板渲染
├── index_manager.rs # 索引管理
├── init_data.rs # 初始数据
└── site_data.rs # 站点数据缓存管理
- ✅ 视频增删改查
- ✅ 批量操作
- ✅ 状态管理(已发布/待审核/已禁用)
- ✅ 分类管理
- ✅ 高级搜索和筛选
- ✅ 分页显示(支持每页 20-100 条)
- ✅ 排序功能
- ✅ 多级分类支持
- ✅ 分类绑定
- ✅ 排序和状态控制
- ✅ 模板配置
- ✅ 多源采集支持
- ✅ 实时任务监控
- ✅ 批量采集
- ✅ 图片本地化
- ✅ WebP 格式转换
- ✅ 重试机制
- ✅ 进度追踪
- ✅ 多播放源支持
- ✅ 播放地址解析
- ✅ 源状态监控
- ✅ 自动切换
- ✅ 管理员登录
- ✅ 会话管理
- ✅ 权限控制
- ✅ 安全认证
- ✅ 网站配置
- ✅ 采集配置
- ✅ 播放配置
- ✅ 模板配置
- 服务器: 4 核 8G,SSD 存储
- 并发数: 1000 并发连接
- 测试时长: 10 分钟
实际上,MacCMS Rust 版本的性能要比图示的更高!
| 指标 | MacCMS PHP 版本 | MacCMS Rust 版本 | 提升倍数 |
|---|---|---|---|
| 并发处理能力 | ~100 QPS | ~1200 QPS | 12x |
| 内存使用 | ~512MB | ~128MB | 4x |
| 响应时间 | ~200ms | ~15ms | 13x |
| CPU 使用率 | ~80% | ~25% | 3.2x |
| 数据库查询 | ~50ms | ~5ms | 10x |
- 异步 I/O: 基于 Tokio 的非阻塞 I/O
- 连接池: MongoDB 连接池优化
- 内存管理: Rust 零成本抽象
- 索引优化: 数据库索引自动管理
- 缓存策略: 智能缓存机制
- 并发模型: Actor 模型并发处理
# 视频管理
GET /api/admin/vods # 获取视频列表(支持分页、筛选、搜索)
POST /api/admin/vods # 创建视频
PUT /api/admin/vods/{id} # 更新视频
DELETE /api/admin/vods/{id} # 删除视频
DELETE /api/admin/vods # 批量删除视频
# 分类管理
GET /api/admin/types # 获取分类列表
POST /api/admin/types # 创建分类
PUT /api/admin/types/{id} # 更新分类
DELETE /api/admin/types/{id} # 删除分类
# 采集管理
GET /api/admin/collections # 获取采集源列表
POST /api/admin/collections # 创建采集源
PUT /api/admin/collections/{id} # 更新采集源
DELETE /api/admin/collections/{id} # 删除采集源
POST /api/admin/collections/{id}/collect # 启动采集
GET /api/admin/collections/{id}/binding-status # 获取采集源绑定状态
# 分类绑定管理
GET /api/admin/bindings # 获取绑定列表
POST /api/admin/bindings # 创建/更新绑定
# 网站配置管理
GET /api/admin/configs # 获取配置列表
POST /api/admin/configs # 创建配置
PUT /api/admin/configs/{key} # 更新配置
DELETE /api/admin/configs/{key} # 删除配置
GET /api/admin/configs/{key} # 获取单个配置
# 采集任务管理
GET /api/admin/collect/progress/{task_id} # 获取采集进度
GET /api/admin/running-tasks # 获取运行中的任务
POST /api/admin/collect/stop/{task_id} # 停止采集任务
# 索引管理
POST /api/admin/indexes/create # 创建索引
GET /api/admin/indexes/status # 索引状态检查
GET /api/admin/indexes/list # 列出所有索引
# 系统统计
GET /api/admin/statistics # 获取系统统计信息# 视频接口
GET /api/provide/vod # 视频数据提供接口(MacCMS兼容)
GET /api/videos/{type_id} # 按分类获取视频
GET /api/videos/detail/{vod_id} # 视频详情
GET /api/categories/hierarchy # 分类层级结构
GET /api/filter-options # 筛选选项
# 基础接口
GET /vods # 获取视频列表(简化版)# 采集接口
GET /api/collect/categories # 获取采集源分类
GET /api/collect/videos # 获取采集源视频列表
POST /api/collect/start # 开始采集任务
GET /api/collect/progress/{task_id} # 获取采集进度
POST /api/collect/stop/{task_id} # 停止采集任务// 获取视频列表(第2页,每页20条,分类ID为1,状态为已发布)
fetch("/api/admin/vods?page=2&limit=20&type_id=1&status=1&search=关键词")
.then((response) => response.json())
.then((data) => {
console.log(data);
// {
// "code": 1,
// "msg": "success",
// "page": 2,
// "limit": 20,
// "total": 100,
// "videos": [...]
// }
});这是最简单的部署方式,适合生产环境快速部署。
# 下载最新版本的 Linux 二进制包
wget https://github.com/TFTG-CLOUD/maccms-rust/releases/latest/download/linux.zip
# 解压到目标目录
sudo mkdir -p /opt/maccms_rust
sudo unzip linux.zip -d /opt/maccms_rust
cd /opt/maccms_rust# 创建环境变量配置文件
sudo nano .env配置文件内容:
# 数据库连接
DATABASE_URL=mongodb://localhost:27017
DATABASE_NAME=maccms_rust
# 服务器配置
SERVER_HOST=0.0.0.0
SERVER_PORT=8080
# 管理员账户
ADMIN_USER=admin
ADMIN_PASS=your_secure_password
# 会话密钥(请修改为随机字符串)
SESSION_SECRET_KEY=your_random_session_secret_key_here
# 日志级别
RUST_LOG=info# 设置二进制文件执行权限
sudo chmod +x maccms_rust
# 创建专用用户(可选,推荐)
sudo useradd -r -s /bin/false maccms
sudo chown -R maccms:maccms /opt/maccms_rust方式一:使用 nohup 后台运行
# 切换到应用目录
cd /opt/maccms_rust
# 后台启动
nohup ./maccms_rust > maccms.log 2>&1 &
# 查看进程状态
ps aux | grep maccms_rust
# 查看日志
tail -f maccms.log方式二:使用 systemctl 服务管理(推荐)
创建服务用户(仅支持读写 maccms 文件夹):
sudo useradd -r -s /bin/false -m -d /opt/maccms_rust maccms
sudo groupadd maccms
sudo usermod -aG maccms maccms
sudo chown -R maccms:maccms /opt/maccms_rust
sudo chmod -R u+rwX /opt/maccms_rust
sudo chmod +x /opt/maccms_rust/maccms_rust创建 systemd 服务文件:
sudo nano /etc/systemd/system/maccms-rust.service服务配置内容:
[Unit]
Description=MacCMS Rust Edition
[Service]
Type=simple
User=maccms
Group=maccms
WorkingDirectory=/opt/maccms_rust
ExecStart=/opt/maccms_rust/maccms_rust
Restart=always
RestartSec=10
KillMode=mixed
KillSignal=SIGTERM
# 环境变量
Environment=RUST_LOG=info
# 安全设置
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ReadWritePaths=/opt/maccms_rust
[Install]
WantedBy=multi-user.target启动和管理服务:
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start maccms-rust
# 设置开机自启
sudo systemctl enable maccms-rust
# 查看服务状态
sudo systemctl status maccms-rust
# 查看服务日志
sudo journalctl -u maccms-rust -f
# 重启服务
sudo systemctl restart maccms-rust
# 停止服务
sudo systemctl stop maccms-rust# 检查服务是否正常运行
curl http://localhost:8080/api/health
# 访问管理后台
# 浏览器打开: http://your-server-ip:8080/admin# Ubuntu/Debian
sudo ufw allow 8080
# CentOS/RHEL
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload# ubuntu
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
chmod o+r /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy配置内容:
cd /etc/caddy
vim Caddyfile
# 先去域名注册商解析域名到服务器IP
# 反代配置
https://rust-maccms.cc, https://www.rust-maccms.cc {
reverse_proxy 127.0.0.1:8080
}
# 重启caddy
caddy reload
启动 caddy:
systemctl start caddy
systemctl enable caddy这是最简单的部署方式,集成了 MongoDB 8 和自动配置,适合快速部署和测试。
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker
# 克隆项目
git clone https://github.com/TFTG-CLOUD/maccms-rust
cd maccms-rust
# 构建 Docker 镜像
docker build -t maccms-rust:latest .# 运行容器(推荐)
docker run -d \
--name maccms-rust \
-p 8080:8080 \
-v ./maccms_data:/var/lib/mongodb \
-v ./maccms_static:/app/static \
-v ./maccms_logo:/var/log \
--restart unless-stopped \
maccms-rust:latest
# 查看容器状态
docker ps
# 查看日志
docker logs maccms-rust
# 获取管理员密码(首次运行时生成)
docker logs maccms-rust | grep ADMIN_PASSWORD- 前台页面: http://localhost:8080
- 管理后台: http://localhost:8080/admin
- API 接口: http://localhost:8080/api
# 停止容器
docker stop maccms-rust
# 启动容器
docker start maccms-rust
# 重启容器
docker restart maccms-rust
# 删除容器
docker rm maccms-rust
# 进入容器
docker exec -it maccms-rust /bin/bash
# 查看容器健康状态
docker inspect maccms-rust | grep Health容器使用 Docker 卷进行数据持久化:
maccms_data: MongoDB 数据库文件maccms_static: 静态文件和上传的图片
# 查看所有卷
docker volume ls
# 备份数据
docker run --rm -v maccms_data:/data -v $(pwd):/backup alpine tar czf /backup/maccms_data_backup.tar.gz -C /data .
# 恢复数据
docker run --rm -v maccms_data:/data -v $(pwd):/backup alpine tar xzf /backup/maccms_data_backup.tar.gz -C /data# 使用 docker-compose 进行生产部署
version: '3.8'
services:
maccms-rust:
build: .
container_name: maccms-rust
ports:
- "8080:8080"
volumes:
- maccms_data:/var/lib/mongodb
- maccms_static:/app/static
restart: unless-stopped
environment:
- RUST_LOG=info
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
volumes:
maccms_data:
driver: local
maccms_static:
driver: local# 启动服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f如需自定义配置,可以通过环境变量覆盖:
docker run -d \
--name maccms-rust \
-p 8080:8080 \
-v maccms_data:/var/lib/mongodb \
-v maccms_static:/app/static \
-e SERVER_HOST=0.0.0.0 \
-e SERVER_PORT=8080 \
-e ADMIN_USER=admin \
-e ADMIN_PASS=your_custom_password \
-e RUST_LOG=debug \
--restart unless-stopped \
maccms-rust:latest# 构建新版本镜像
docker build -t maccms-rust:v2.0 .
# 停止并删除旧容器
docker stop maccms-rust
docker rm maccms-rust
# 运行新版本容器
docker run -d \
--name maccms-rust \
-p 8080:8080 \
-v maccms_data:/var/lib/mongodb \
-v maccms_static:/app/static \
--restart unless-stopped \
maccms-rust:v2.0参照 Release 包安装中的第 7 步骤。
优势:
- 一键部署,无需手动安装 MongoDB
- 自动配置和初始化
- 随机生成安全密码
- 数据持久化
- 健康检查和自动重启
- 适合开发和生产环境
# /etc/systemd/system/maccms-rust.service
[Unit]
Description=MacCMS Rust Edition
After=network.target mongodb.service
[Service]
Type=simple
User=maccms
WorkingDirectory=/opt/maccms_rust
ExecStart=/opt/maccms_rust/target/release/maccms_rust
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.targetserver {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /static {
alias /opt/maccms_rust/static;
expires 30d;
}
}# 安装开发依赖
cargo install cargo-watch cargo-expand
# 开发模式自动重载
cargo watch -x run
# 代码格式化
cargo fmt
# 代码检查
cargo clippy
# 生成文档
cargo doc --no-deps# 创建索引
curl -X POST http://localhost:8080/api/admin/indexes/create
# 检查索引状态
curl -X GET http://localhost:8080/api/admin/indexes/status# 运行所有测试
cargo test
# 运行集成测试
cargo test --test integration_tests系统内置了实时监控功能:
- 任务进度: 实时显示采集任务进度
- 系统统计: 数据库统计、用户统计
- 错误日志: 详细的错误信息和堆栈跟踪
- 性能指标: 响应时间、并发数、内存使用
// 设置日志级别
RUST_LOG=info cargo run
// 输出到文件
RUST_LOG=info cargo run > maccms.log 2>&1- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
如果您在使用过程中遇到问题,请:
- 查看本文档的常见问题部分
- 搜索已有的 Issues
- 创建新的 Issue 描述问题
- 联系技术支持团队
- 数据迁移: 直接使用原版 maccms 提供的采集 API 进行数据迁移
# 备份数据库
mongodump --db maccms_rust --out backup/
# 更新代码
git pull origin main
# 重新编译
cargo build --release
# 重启服务
sudo systemctl restart maccms-rust- 视频转码服务
- CDN 集成
- 多语言支持
- 移动端 API
- 插件系统
- 微服务架构
- 容器化部署
- 负载均衡
MacCMS Rust Edition - 为现代 Web 而生的高性能视频内容管理系统