云存储

Chamilo 2.0 通过 Flysystem 支持用户上传文件的云存储后端,Flysystem 是一个集成到 Symfony 的 PHP 文件系统抽象库。这允许您将文件存储在云服务上,而不是(或除了)本地文件系统之外。

为什么使用云存储?

  • 可扩展性 —— 云存储可以随着您的平台增长而扩展,无需管理磁盘空间。

  • 多服务器部署 —— 在负载均衡器后面运行多个 Web 服务器时,云存储确保所有服务器都能访问相同的文件。

  • 耐久性 —— 云提供商提供内置的冗余和备份。

  • 成本 —— 对象存储通常比附加到服务器的块存储每 GB 更便宜。

支持的提供商

提供商
Flysystem 适配器

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 挂载点上 —— assetsassets cacheresourcesresources cachethemesplugins。每个挂载点可以指向不同的存储桶或容器。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 中并取消注释。

迁移现有文件

如果您在现有平台上从本地存储切换到云存储,必须迁移现有文件:

  1. 如上所述配置新的存储适配器。

  2. 将现有文件从本地 var/upload/ 目录复制到您的云存储桶,保留目录结构。

  3. 验证迁移后文件是否可以通过平台访问。

权限和访问

确保您的云存储桶不是公开访问的,除非您明确需要公共文件 URL。Chamilo 通过自己的访问控制层提供文件,因此直接公开访问存储桶是不必要的,也是安全风险。

对于 S3,使用存储桶策略限制访问,仅允许上面配置的 IAM 凭据访问。

小贴士

  • 在部署到云提供商之前,先在本地使用 MinIO 测试 —— MinIO 是一个免费的、S3 兼容的服务器,您可以在自己的机器上运行。

  • 为 Chamilo 使用专用存储桶,而不是与其他应用程序共享存储桶。

  • 在云存储桶上设置生命周期策略,以管理存储成本(例如,将旧文件移动到更便宜的存储层)。

最后更新于

这有帮助吗?