- Ubuntu/WSL (Linux环境)
- MySQL 5.7+
- Redis
- CMake 3.10+
- GCC/G++ 支持C++11
在WSL或Ubuntu虚拟机中执行:
sudo apt update
sudo apt install mysql-server libmysqlclient-dev redis-server libhiredis-dev cmake g++ build-essential# 启动MySQL
sudo service mysql start
# 启动Redis
sudo service redis-server startsudo mysql -u root在MySQL命令行中执行:
-- 创建数据库
CREATE DATABASE IF NOT EXISTS webserver;
USE webserver;
-- 创建用户表(包含管理员和配额字段)
CREATE TABLE IF NOT EXISTS user(
username char(50) NULL,
password char(50) NULL,
is_admin TINYINT DEFAULT 0 COMMENT '是否为管理员:0=普通用户,1=管理员',
quota BIGINT UNSIGNED DEFAULT 5368709120 COMMENT '用户存储配额(字节),默认5GB'
) ENGINE=InnoDB;
-- 插入默认管理员账号
INSERT INTO user(username, password, is_admin, quota) VALUES('admin', 'password', 1, 5368709120);
-- 创建webuser用户(无密码)
CREATE USER IF NOT EXISTS 'webuser'@'localhost' IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON webserver.* TO 'webuser'@'localhost';
FLUSH PRIVILEGES;
-- 退出MySQL
exit;# 在项目根目录下执行
mkdir -p log
mkdir -p data./build.sh如果编译失败,可以尝试清理后重新编译:
./build.sh clean
./build.sh./bin/server -p 1316 -l -D 0参数说明:
-p 1316: 指定端口号为1316-l: 启用日志-D 0: 日志级别为0(DEBUG)
http://localhost:1316
- 访问
http://localhost:1316/user - 使用管理员账号登录:
- 用户名:
admin - 密码:
password
- 用户名:
- 登录后自动跳转到管理员后台
http://localhost:1316/admin
- 用户名:
admin - 密码:
password - 权限:管理员(is_admin=1)
- 配额:5GB
mysql -u webuser webserver -e "UPDATE user SET password='新密码' WHERE username='admin';"- 文件上传/下载
- 文件夹管理(创建、删除、进入)
- 文件/文件夹重命名
- 存储空间配额查看
- 文件分享(支持1小时-1年有效期)
- 回收站(删除→回收站→恢复/彻底删除)
- 查看所有用户列表
- 添加新用户(设置用户名、密码、配额)
- 删除用户(同时删除用户所有文件)
- 修改用户配额(1GB-1000GB)
如果遇到编译错误,检查:
- 是否安装了所有依赖
- CMake版本是否>=3.10
- GCC版本是否支持C++11
检查:
- MySQL服务是否启动:
sudo service mysql status - webuser用户是否创建成功
- 数据库webserver是否存在
检查:
- Redis服务是否启动:
sudo service redis-server status - Redis是否设置了密码(本项目Redis无密码)
如果1316端口被占用,可以修改端口:
./bin/server -p 其他端口号 -l -D 0日志文件位置:log/YYYY_MM_DD.log
tail -f log/2026_03_28.log如果你已经部署了旧版本(没有管理员功能),需要升级数据库:
# 执行数据库升级脚本
mysql -u webuser webserver < database_upgrade.sql或者手动执行:
mysql -u webuser webserver-- 添加is_admin字段
ALTER TABLE user ADD COLUMN is_admin TINYINT DEFAULT 0 COMMENT '是否为管理员:0=普通用户,1=管理员';
-- 添加quota字段
ALTER TABLE user ADD COLUMN quota BIGINT UNSIGNED DEFAULT 5368709120 COMMENT '用户存储配额(字节),默认5GB';
-- 将admin设置为管理员
UPDATE user SET is_admin = 1 WHERE username = 'admin';
-- 为所有用户设置默认配额
UPDATE user SET quota = 5368709120 WHERE quota IS NULL OR quota = 0;
exit;然后重新编译运行:
./build.sh
./bin/server -p 1316 -l -D 0-
修改默认密码
mysql -u webuser webserver -e "UPDATE user SET password='强密码' WHERE username='admin';" -
设置MySQL密码 为webuser设置密码,并修改代码中的连接配置
-
设置Redis密码 修改Redis配置文件,设置密码
-
使用systemd管理服务 创建systemd服务文件,实现开机自启动
-
配置防火墙 只开放必要的端口
-
定期备份
- 备份MySQL数据库
- 备份data目录(用户文件)
# 停止服务器(Ctrl+C)
# 删除数据库
sudo mysql -u root -e "DROP DATABASE webserver; DROP USER 'webuser'@'localhost';"
# 删除项目文件
cd ..
rm -rf WebServer-master如有问题,请查看:
- 日志文件:
log/YYYY_MM_DD.log - 管理员功能说明:
管理员功能说明.txt - 数据库升级脚本:
database_upgrade.sql