我在 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”进行部署,但出现以下错误的主要内容,如果未能解决你的问题,请参考以下文章
Drupal 在 Elastic Beanstalk 上重定向到“eb deploy”上的 Install.php