VMware虚拟机搭建私有OSSMinIO兼容阿里云S3对接ThinkPHP8公安电子证据平台VMware 虚拟机搭建私有 OSSMinIO兼容阿里云 S3对接 ThinkPHP8 公安电子证据平台方案说明MinIO 私有化对象存储完全兼容 S3 协议可替代阿里云 OSS单虚拟机即可部署支持图片 / 视频 / 取证大文件存储、权限管控、内网访问适配公安内网电子证据存储场景。 整体流程VMware 网络配置 → CentOS 虚拟机安装 MinIO → 防火墙放行端口 → 创建存储桶 → ThinkPHP8 修改 filesystem 对接 MinIO 私有 OSS。一、VMware 虚拟机网络设置关键宿主机可互通1. 虚拟机网卡模式选择虚拟机设置 → 网络适配器桥接模式推荐和宿主机同一局域网真实内网 IP不要用仅主机 / NAT否则宿主机 TP8 项目无法正常上传访问文件2. 查看虚拟机内网 IPCentOSip a # 找到ens33记录inet地址示例192.168.1.1003. 宿主机 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/minio3. 创建系统服务开机自启生产稳定① 环境配置文件/etc/default/miniovim /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_USERadminoss MINIO_ROOT_PASSWORDEvidence2026 # 区域随便填本地统一local MINIO_REGION_NAMElocal② 系统服务文件/etc/systemd/system/minio.servicevim /etc/systemd/system/minio.service[Unit] DescriptionMinIO Object Storage Documentationhttps://docs.min.io Wantsnetwork-online.target Afternetwork-online.target [Service] Userroot Grouproot EnvironmentFile/etc/default/minio ExecStart/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES Restartalways LimitNOFILE65536 [Install] WantedBymulti-user.target4. 放行防火墙端口宿主机才能访问 9000/9001# 永久放行 firewall-cmd --permanent --add-port9000/tcp firewall-cmd --permanent --add-port9001/tcp firewall-cmd --reload # 验证端口 firewall-cmd --list-ports5. 启动 自启 MinIOsystemctl daemon-reload systemctl start minio systemctl enable minio # 查看运行状态 systemctl status minio三、访问 MinIO 管理后台创建证据存储桶宿主机浏览器打开http://192.168.1.100:9001登录账号adminoss/Evidence2026左侧 Buckets → Create Bucket桶名evidence-storeTP8 配置 bucket 名称桶权限设置公安内网只读禁止公开Bucket Policy → 关闭公开访问仅密钥鉴权上传下载四、ThinkPHP8 对接 VMware 虚拟机 MinIO 私有 OSS1. 安装 S3 驱动MinIO 基于 S3 协议不用阿里云 oss 包composer require league/flysystem-aws-s3-v32. 修改.env环境配置# MinIO私有OSS(VMware虚拟机) MINIO_ENDPOINThttp://192.168.1.100:9000 MINIO_KEYadminoss MINIO_SECRETEvidence2026 MINIO_BUCKETevidence-store MINIO_REGIONlocal MINIO_SSLfalse3. 配置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禁止外网访问VMware 仅桥接内网不映射公网端口虚拟机关闭多余端口 22/80 等强密钥策略MINIO_ROOT_PASSWORD 必须大小写 数字 特殊符号长度≥12 位关闭桶公开权限所有证据桶禁止匿名访问仅 TP8 服务端通过密钥鉴权数据多副本MinIO 单节点开启 2 副本防止取证文件丢失控制台 Bucket → Replication 副本策略 2 份访问日志留存开启 MinIO 审计日志记录所有文件上传 / 下载同步公安 sys_audit_log 审计表文件后缀拦截TP8 上传层过滤 php/exe/bat 等脚本仅允许图片 / 视频 /pdf 取证格式定期备份定时脚本打包/data/minio/evidence证据目录到虚拟机第二块硬盘六、常见故障排查宿主机无法访问 9001 控制台虚拟机防火墙未放行 9000/9001 端口重新执行 firewall 放行命令MinIO 启动绑定 [127.0.0.1](127.0.0.1)修改MINIO_OPTS为虚拟机真实内网 IPThinkPHP8 上传返回 403核对 env 内 key/secret、bucket 名称、endpoint 地址MinIO 桶名区分大小写创建桶名称和配置完全一致文件 URL 无法直接预览图片虚拟机防火墙放行 9000 端口浏览器直接访问 MinIO 文件地址测试虚拟机存储容量不足VMware 设置 → 硬盘 → 扩展磁盘大小虚拟机内扩容分区挂载到 /data/minio七、Docker 极简快速部署不想装二进制可选虚拟机安装 docker 后一键启动 MinIO适合快速测试docker run -d \ --name minio-oss \ --restart always \ -p 9000:9000 -p 9001:9001 \ -e MINIO_ROOT_USERadminoss \ -e MINIO_ROOT_PASSWORDEvidence2026 \ -v /data/minio/evidence:/data \ minio/minio server /data --console-address :9001