推送到弹性 beantalk 会删除在服务器上创建的文件

Posted

技术标签:

【中文标题】推送到弹性 beantalk 会删除在服务器上创建的文件【英文标题】:pushing to elastic beanstalk removes files created on servers 【发布时间】:2014-05-28 19:39:25 【问题描述】:

我在弹性 beantalk 上运行我的 php 应用程序。每当我使用git aws.push 从本地存储库推送更新时,一个名为picture 的目录及其所有内容都会从服务器中删除。这个目录的本地版本添加到.gitignore,因为我不想推送到服务器。服务器上的目录应该保持不变,因为它包含上传的图像。每次推送时我应该如何阻止目录被删除?

【问题讨论】:

【参考方案1】:

与大多数平台即服务提供商一样,Elastic Beanstalk does not provide a persistent filesystem:

持久存储

AWS Elastic Beanstalk 应用程序在没有持久本地存储的 Amazon EC2 实例上运行。当 Amazon EC2 实例终止时,不会保存本地文件系统,新的 Amazon EC2 实例将使用默认文件系统启动。您应该将应用程序设计为将数据存储在持久数据源中。 Amazon Web Services 提供了许多可用于您的应用程序的持久存储选项,包括

Amazon Simple Storage Service (Amazon S3)。有关 Amazon S3 的更多信息,请访问documentation。 Amazon Elastic Block Store (Amazon EBS)。如需更多信息,请访问documentation,另请参阅文章Feature Guide: Elastic Block Store。 Amazon DynamoDB。如需更多信息,请访问documentation。有关将 Amazon DynamoDB 与 AWS Elastic Beanstalk 结合使用的示例,请参阅 Example: DynamoDB, CloudWatch, and SNS。 Amazon Relational Database Service (Amazon RDS)。如需更多信息,请转至documentation,另请参阅Amazon RDS for C# Developers。

这意味着您不能动态存储文件并期望它们能够在新的部署中继续存在。

推荐的解决方案是使用像 S3 这样的云文件存储提供商。

【讨论】:

【参考方案2】:

只是补充一下,但据我所知,这仅适用于您的应用程序目录 var/app/current,在您推送更改后确实会清除该目录。

其他任何地方的文件都没有被触及,我们使用配置文件在本地下载 maxmind geo dbs,它们会一直存在直到实例终止。

【讨论】:

以上是关于推送到弹性 beantalk 会删除在服务器上创建的文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 ebextensions 配置在弹性 beantalk 上安装 ffmpeg

在弹性 beantalk 部署上的 ec2 微型实例上创建交换文件/驱动器

如何在弹性 beantalk 配置上运行 wget cron 命令

Gulp 任务不在弹性 beantalk 上运行

使用弹性 beantalk 在亚马逊网络服务上上传 codeigniter 项目

git 创建分支并推送到远程分支