【问题标题】:Laravel file storage architectureLaravel 文件存储架构
【发布时间】:2020-05-09 21:30:54
【问题描述】:

我有一个 laravel 应用程序,用户可以在其中上传文件。目前文件存储在 storage 目录中。

但是,每次我从版本控制重新部署应用程序时,我都必须将文件复制到应用程序外部的临时目录,部署应用程序,然后将它们复制回存储目录,否则它们会在每次新部署时被删除.

  1. 有没有办法防止每次部署覆盖现有的存储目录或
  2. 是否最好将文件存储在 S3 等云存储系统上?

任何专业提示,建议表示赞赏

【问题讨论】:

  • 1.我通常在我的 git-ignore 中有存储空间。 2. 一路云存储!
  • 通常存储文件夹符号链接到项目外部的目录。然后你只需要在版本控制中拥有符号链接本身。
  • @PtrTon 那么我应该上传到哪个文件夹,它是项目外部的目录,它是符号链接到存储的还是相反的?

标签: laravel file-upload version-control


【解决方案1】:
  1. 如果您将使用来自https://deployer.org 的部署程序将应用程序部署到生产服务器或开发服务器,那么您可以通过命令设置共享目录:

设置( 'shared_dirs', [ '路径/到/你的/目录', ] );

部署后该目录不会被覆盖。

  1. 使用 S3 需要通过 composer 安装

    联赛/flysystem-aws-s3-v3 ~1.0

并在 config/filesystems.php 中设置配置

's3' => [
'司机' => 's3',
'key' => env('AWS_KEY'),
'秘密' => 环境('AWS_SECRET'),
'区域' => 环境('AWS_REGION'),
'bucket' => 环境('AWS_BUCKET'),
'凭证' => [ env('AWS_KEY'), env('AWS_SECRET')],
'acl' => '公共'
],

然后在 .env 文件中将 AWS 凭证添加到 S3:

FILESYSTEM_DRIVER=s3
AWS_KEY=YOUR_KEY
AWS_SECRET=YOUR_SECRET
AWS_REGION=eu-west-1
AWS_BUCKET=您的存储桶名称
AWS_ENDPOINT=https://your_bucket_name.s3-eu-west-1.amazonaws.com/

在此之后,您可以像使用本地存储一样使用 s3 存储。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 2018-02-03
    • 2017-11-12
    • 2012-11-30
    • 2018-12-12
    • 2016-11-27
    • 2018-08-11
    相关资源
    最近更新 更多