宝塔搭建thinkphp 和 MinIO 私有云存储方案
当需要搭建私有云存储时MinIO 是一个不错的选择
MinIO 是一个高性能、轻量级
的对象存储服务器
,专为大规模数据存储和分析而设计。它兼容 Amazon S3 API
,可以无缝替代 Amazon S3 作为存储后端,并且支持在各种环境中部署,包括物理服务器、虚拟机、容器等。
1.安装
(1).在宝塔上安装Docker
(2).Docker应用商店中搜索MinIO 安装即可
2.在ThinkPHP6中使用亚马逊S3作为存储需要使用一个适合的库来与S3接口交互。这里我们可以使用league/flysystem-aws-s3-v3库来实现
composer require league/flysystem-aws-s3-v3 aws/aws-sdk-php
然后,在ThinkPHP6中配置S3存储驱动。在config目录下创建一个新的配置文件,例如filesystem.php,并配置S3相关信息:
// config/filesystem.php return [ 'default' => 's3', 'disks' => [ 's3' => [ 'type' => 'AwsS3', 'key' => 'your-aws-access-key-id', 'secret' => 'your-aws-secret-access-key', 'region' => 'your-aws-default-region', // 例如 ap-southeast-1 'version' => 'latest', 'bucket_endpoint' => false, 'use_path_style_endpoint' => false, 'endpoint' => 'https://s3.example.com', // 亚马逊S3的endpoint 'bucket_name' => 'your-bucket', ], // 如果需要配置更多的磁盘,可以在这里添加 ], ];
接下来,在应用中使用S3存储。例如,上传文件:
use League\Flysystem\Filesystem; use League\Flysystem\AwsS3V3\AwsS3V3Adapter; use Aws\S3\S3Client; // 创建S3客户端 $s3 = new S3Client([ 'version' => 'latest', 'region' => 'your-aws-default-region', 'credentials' => [ 'key' => 'your-aws-access-key-id', 'secret' => 'your-aws-secret-access-key', ], ]); // 创建适配器 $adapter = new AwsS3Adapter($s3, 'your-bucket'); // 创建文件系统对象 $filesystem = new Filesystem($adapter); // 上传文件 $filesystem->write('example.txt', 'contents'); // 上传图片 $filePath = '/Sites/img/test.jpeg'; $s3FilePath = 'public/test.jpeg'; $filesystem->write($s3FilePath, file_get_contents($filePath)); // 获取公开链接 $url = $s3->getObjectUrl('your-bucket', $s3FilePath); echo $url;