云存储
Chamilo 2.0 通过 Flysystem 支持用户上传文件的云存储后端,Flysystem 是一个集成到 Symfony 的 PHP 文件系统抽象库。这允许您将文件存储在云服务上,而不是(或除了)本地文件系统之外。
为什么使用云存储?
可扩展性 —— 云存储可以随着您的平台增长而扩展,无需管理磁盘空间。
多服务器部署 —— 在负载均衡器后面运行多个 Web 服务器时,云存储确保所有服务器都能访问相同的文件。
耐久性 —— 云提供商提供内置的冗余和备份。
成本 —— 对象存储通常比附加到服务器的块存储每 GB 更便宜。
支持的提供商
Amazon S3
league/flysystem-aws-s3-v3
Google Cloud Storage
league/flysystem-google-cloud-storage
Azure Blob Storage
league/flysystem-azure-blob-storage
MinIO (S3 兼容)
使用带有自定义端点的 S3 适配器
本地文件系统
默认,无需额外包
安装
Chamilo 已经预装了以下提供商:
# Amazon S3
league/flysystem-aws-s3-v3
# Google Cloud Storage
league/flysystem-google-cloud-storage
# Azure Blob Storage
league/flysystem-azure-blob-storage配置
Chamilo 将其文件分布在多个 Flysystem 挂载点上 —— assets、assets cache、resources、resources cache、themes 和 plugins。每个挂载点可以指向不同的存储桶或容器。config/packages/oneup_flysystem.yaml 中的云配置通过使用 when@ 条件根据环境选择,并读取您在 .env 中设置的变量。
Amazon S3
Azure Blob Storage
Google Cloud Storage
以与 S3 相同的方式配置 GCS,使用 GCS 特定的环境变量,每个挂载点一个存储桶。有关确切的变量名称,请参考随您的版本一起提供的 oneup_flysystem.yaml,这些变量也在 .env 中有文档记录。
MinIO (S3 兼容)
MinIO 通过 S3 适配器工作,使用自定义端点和路径样式寻址 —— 设置 AWS_S3_STORAGE_* 如 S3,并添加 MinIO 端点和 bundle 支持的路径样式标志。
完整的变量名称列表在 Chamilo 随附的
.env.dist文件中列出。仅将您实际使用的提供商的行复制到您的.env中并取消注释。
迁移现有文件
如果您在现有平台上从本地存储切换到云存储,必须迁移现有文件:
如上所述配置新的存储适配器。
将现有文件从本地
var/upload/目录复制到您的云存储桶,保留目录结构。验证迁移后文件是否可以通过平台访问。
权限和访问
确保您的云存储桶不是公开访问的,除非您明确需要公共文件 URL。Chamilo 通过自己的访问控制层提供文件,因此直接公开访问存储桶是不必要的,也是安全风险。
对于 S3,使用存储桶策略限制访问,仅允许上面配置的 IAM 凭据访问。
小贴士
在部署到云提供商之前,先在本地使用 MinIO 测试 —— MinIO 是一个免费的、S3 兼容的服务器,您可以在自己的机器上运行。
为 Chamilo 使用专用存储桶,而不是与其他应用程序共享存储桶。
在云存储桶上设置生命周期策略,以管理存储成本(例如,将旧文件移动到更便宜的存储层)。
最后更新于
这有帮助吗?