我在 aws 中使用“eb deploy”进行部署,但出现以下错误

Posted

技术标签:

【中文标题】我在 aws 中使用“eb deploy”进行部署,但出现以下错误【英文标题】:I am deploying with 'eb deploy' in aws but getting the following error 【发布时间】:2015-08-15 18:41:51 【问题描述】:

我正在使用 'eb deploy' 来部署我的提交,但收到此错误

警告:您有未提交的更改。 创建应用程序版本存档“6fea”。 上传:[############################################## ###] 100% 完成... 信息:环境更新正在开始。 信息:正在将新版本部署到实例。 错误:[实例:i-10d1f9ec] 命令在实例上失败。返回码:126 输出:/bin/sh: ./scripts/update-ftp-dns.sh: /bin/sh^M: 错误的解释器:没有这样的文件或目录。 .ebextensions/03-vsftpd.config 中的 container_command 07-update_ftp_dns 失败。有关更多详细信息,请使用控制台或 EB CLI 检查 /var/log/eb-activity.log。 INFO:在所有实例上完成命令执行。摘要:[成功:0,失败:1]。 信息:新的应用程序版本已部署到正在运行的 EC2 实例。 错误:更新环境操作已完成,但出现错误。有关详细信息,请参阅故障排除文档。

请帮我解决这个问题。

【问题讨论】:

您能否向我们展示您的脚本:ebextensions/03-vsftpd.config 以及它是如何创建的:update-ftp-dns.sh 【参考方案1】:

我有类似的情况,原因是 Git 的 autocrlf 值设置为 true。这意味着当 git checkout 运行时,Git 会将文件转换为 Windows 格式的文件 - 这很遗憾,这意味着 Elastic Beanstalk 工具会尝试将 Windows 格式的文件上传到您的 Linux 服务器,这将出现这样的错误.

我通过将 autoclrf 切换为 false 并再次提交相关文件来修复它。但是请注意这样做的后果。

【讨论】:

【参考方案2】:

错误信息有点隐藏,但它就在那里:

输出:/bin/sh:./scripts/update-ftp-dns.sh:/bin/sh^M:错误的解释器:没有这样的文件或目录。

如果我不得不猜测,你有一个换行符,其中包含换行符和回车符。它将回车符视为可执行文件名称的一部分。

确保您已转换 /scripts/update-ftp-dns.sh 脚本,使其仅使用 Unix 行尾。

见./configure : /bin/sh^M : bad interpreter

【讨论】:

以上是关于我在 aws 中使用“eb deploy”进行部署,但出现以下错误的主要内容,如果未能解决你的问题,请参考以下文章

AWS 'eb deploy' 总是压缩所有文件

eb deploy 不更新代码

为啥 eb deploy 在第一次部署时失败?

Drupal 在 Elastic Beanstalk 上重定向到“eb deploy”上的 Install.php

`eb deploy` 错误“您的 requirements.txt 无效”(Python 应用程序)

eb deploy --staged 使用