虚拟机搭建公安电子证据平台
2026/6/18 12:17:15 网站建设 项目流程

VMware虚拟机搭建私有OSS(MinIO,兼容阿里云S3,对接ThinkPHP8公安电子证据平台)

VMware 虚拟机搭建私有 OSS(MinIO,兼容阿里云 S3,对接 ThinkPHP8 公安电子证据平台)

方案说明

MinIO = 私有化对象存储,完全兼容 S3 协议,可替代阿里云 OSS;单虚拟机即可部署,支持图片 / 视频 / 取证大文件存储、权限管控、内网访问,适配公安内网电子证据存储场景。 整体流程:VMware 网络配置 → CentOS 虚拟机安装 MinIO → 防火墙放行端口 → 创建存储桶 → ThinkPHP8 修改 filesystem 对接 MinIO 私有 OSS。

一、VMware 虚拟机网络设置(关键,宿主机可互通)

1. 虚拟机网卡模式选择

虚拟机设置 → 网络适配器:桥接模式(推荐,和宿主机同一局域网,真实内网 IP)

  • 不要用仅主机 / NAT,否则宿主机 TP8 项目无法正常上传访问文件

2. 查看虚拟机内网 IP(CentOS)

ip a # 找到ens33,记录inet地址,示例:192.168.1.100

3. 宿主机 Windows 测试连通

ping 192.168.1.100 # 能ping通代表网络正常

二、CentOS7/8 虚拟机安装 MinIO(单节点离线二进制,无依赖)

1. 下载 MinIO 服务端

# 在线下载,无外网可宿主机下载上传到虚拟机 wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio mv minio /usr/local/bin/

2. 创建数据存储目录(存放电子证据)

mkdir -p /data/minio/evidence mkdir -p /etc/minio

3. 创建系统服务(开机自启,生产稳定)

① 环境配置文件/etc/default/minio

vim /etc/default/minio

写入(密码≥8 位,公安环境设置复杂密码):

# 存储数据目录 MINIO_VOLUMES="/data/minio/evidence" # API端口9000(对接TP8),控制台9001(网页管理) MINIO_OPTS="--address 192.168.1.100:9000 --console-address 192.168.1.100:9001" # 访问密钥(对应OSS的AccessKey/SecretKey) MINIO_ROOT_USER=adminoss MINIO_ROOT_PASSWORD=Evidence@2026 # 区域(随便填,本地统一local) MINIO_REGION_NAME=local

② 系统服务文件/etc/systemd/system/minio.service

vim /etc/systemd/system/minio.service

[Unit] Description=MinIO Object Storage Documentation=https://docs.min.io Wants=network-online.target After=network-online.target [Service] User=root Group=root EnvironmentFile=/etc/default/minio ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES Restart=always LimitNOFILE=65536 [Install] WantedBy=multi-user.target

4. 放行防火墙端口(宿主机才能访问 9000/9001)

# 永久放行 firewall-cmd --permanent --add-port=9000/tcp firewall-cmd --permanent --add-port=9001/tcp firewall-cmd --reload # 验证端口 firewall-cmd --list-ports

5. 启动 & 自启 MinIO

systemctl daemon-reload systemctl start minio systemctl enable minio # 查看运行状态 systemctl status minio

三、访问 MinIO 管理后台,创建证据存储桶

  1. 宿主机浏览器打开:http://192.168.1.100:9001

  2. 登录账号:adminoss/Evidence@2026

  3. 左侧 Buckets → Create Bucket,桶名:evidence-store(TP8 配置 bucket 名称)

  4. 桶权限设置(公安内网只读,禁止公开):

    1. Bucket Policy → 关闭公开访问,仅密钥鉴权上传下载

四、ThinkPHP8 对接 VMware 虚拟机 MinIO 私有 OSS

1. 安装 S3 驱动(MinIO 基于 S3 协议,不用阿里云 oss 包)

composer require league/flysystem-aws-s3-v3

2. 修改.env环境配置

# MinIO私有OSS(VMware虚拟机) MINIO_ENDPOINT=http://192.168.1.100:9000 MINIO_KEY=adminoss MINIO_SECRET=Evidence@2026 MINIO_BUCKET=evidence-store MINIO_REGION=local MINIO_SSL=false

3. 配置config/filesystem.php新增 minio 磁盘

return [ 'default' => env('filesystem.driver', 'minio'), 'disks' => [ 'local' => [...], 'public' => [...], // VMware虚拟机MinIO私有OSS 'minio' => [ 'type' => 's3', 'region' => env('MINIO_REGION','local'), 'endpoint' => env('MINIO_ENDPOINT'), 'key' => env('MINIO_KEY'), 'secret' => env('MINIO_SECRET'), 'bucket' => env('MINIO_BUCKET'), 'ssl' => env('MINIO_SSL',false), 'prefix' => 'upload', // 文件前缀 upload/image/xxx.jpg ] ] ];

4. 原有 OSS 上传工具类无缝兼容 MinIO

只需修改磁盘名为minio,原有上传、哈希、Vditor 图片上传代码完全不用改动

// OssUpload.php 上传一行改动 $savePath = Filesystem::disk('minio')->putFile($dir, $file);

文件访问 URL 示例:http://192.168.1.100:9000/evidence-store/upload/image/xxx.jpg

五、公安电子证据平台专属安全加固(虚拟机 MinIO)

  1. 禁止外网访问:VMware 仅桥接内网,不映射公网端口;虚拟机关闭多余端口 22/80 等

  2. 强密钥策略:MINIO_ROOT_PASSWORD 必须大小写 + 数字 + 特殊符号,长度≥12 位

  3. 关闭桶公开权限:所有证据桶禁止匿名访问,仅 TP8 服务端通过密钥鉴权

  4. 数据多副本:MinIO 单节点开启 2 副本,防止取证文件丢失

    1. 控制台 Bucket → Replication 副本策略 2 份

  5. 访问日志留存:开启 MinIO 审计日志,记录所有文件上传 / 下载,同步公安 sys_audit_log 审计表

  6. 文件后缀拦截:TP8 上传层过滤 php/exe/bat 等脚本,仅允许图片 / 视频 /pdf 取证格式

  7. 定期备份:定时脚本打包/data/minio/evidence证据目录到虚拟机第二块硬盘

六、常见故障排查

  1. 宿主机无法访问 9001 控制台

    1. 虚拟机防火墙未放行 9000/9001 端口,重新执行 firewall 放行命令

    2. MinIO 启动绑定 [127.0.0.1](127.0.0.1),修改MINIO_OPTS为虚拟机真实内网 IP

  2. ThinkPHP8 上传返回 403

    1. 核对 env 内 key/secret、bucket 名称、endpoint 地址

    2. MinIO 桶名区分大小写,创建桶名称和配置完全一致

  3. 文件 URL 无法直接预览图片

    1. 虚拟机防火墙放行 9000 端口,浏览器直接访问 MinIO 文件地址测试

  4. 虚拟机存储容量不足

    1. VMware 设置 → 硬盘 → 扩展磁盘大小,虚拟机内扩容分区挂载到 /data/minio

七、Docker 极简快速部署(不想装二进制可选)

虚拟机安装 docker 后一键启动 MinIO,适合快速测试:

docker run -d \ --name minio-oss \ --restart always \ -p 9000:9000 -p 9001:9001 \ -e MINIO_ROOT_USER=adminoss \ -e MINIO_ROOT_PASSWORD=Evidence@2026 \ -v /data/minio/evidence:/data \ minio/minio server /data --console-address ":9001"

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询