AWS Beanstalk Laravel 部署后挂钩没有这样的文件或目录
Posted
技术标签:
【中文标题】AWS Beanstalk Laravel 部署后挂钩没有这样的文件或目录【英文标题】:AWS Beanstalk Laravel post deploy hooks no such file or directory 【发布时间】:2021-05-08 19:53:23 【问题描述】:我正在尝试将 laravel 应用程序部署到 aws beanstalk,操作系统是 Amazon Linux 2 AMI。
我已经设置了以下文件:
.ebextensions/01-deploy-script-permission.config
它包含以下代码:
container_commands:
01-storage-link:
command: 'sudo chmod +x .platform/hooks/postdeploy/post-deploy.sh'
和
.platform\hooks\postdeploy/01-post-deploy.sh
它包含以下代码:
php artisan optimize:clear
部署失败并在 eb-engine.log 文件中出现以下条目
[ERROR] 执行命令 [app-deploy] 时出错 - [RunAppDeployPostDeployHooks]。停止运行命令。错误: 命令 .platform/hooks/postdeploy/post-deploy.sh 失败并出现错误 fork/exec .platform/hooks/postdeploy/post-deploy.sh:没有这样的文件或 目录
【问题讨论】:
【参考方案1】:此答案适用于使用 Windows 将文件部署到弹性 beanstalk 的用户。
我花了 6 个小时宝贵的时间找到了这个信息。可能没有在官方文档中的任何地方记录
根据此链接“https://forums.aws.amazon.com/thread.jspa?threadID=321653”
psss:最重要的是文件用LF行分隔符保存。 CRLF 使“找不到文件或目录”
所以我使用 Visual Studio Code 将 .platform/hooks/postdeploy
中的文件的 CRLF 转换为 LF
在 VS Code 屏幕的右下方有一个小按钮 上面写着“LF”或“CRLF”:单击该按钮并将其更改为您的 偏好。
【讨论】:
【参考方案2】:我不确定,但我认为您甚至在创建文件之前就运行了该命令,因此出现以下错误。
不久前,我遇到了同样的问题,我在 .ebextension 中编写了迁移命令,它曾经给我一个错误,因为我的 env 文件甚至还没有创建,因此没有建立数据库连接,所以我得到了错误。希望这会给你一个方向。 顺便说一句,我通过创建 env 然后通过管道推送这些命令来解决了这个问题。
【讨论】:
我有一个不同的问题,它与行尾有关:它不是任何地方的 AWS 文档中的文档,而是从社区中找到的:***.com/a/66047579/1550566以上是关于AWS Beanstalk Laravel 部署后挂钩没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章
“数据库主机数组为空。”在 AWS Elastic Beanstalk 上部署 Laravel 项目后
在 AWS Elastic Beanstalk 中部署后浏览 https 时,Laravel 资产、路由和 url() 不起作用
在 laravel 中部署 AWS Beanstalk 的模式