AWS Beanstalk 配置文件在部署时未执行

Posted

技术标签:

【中文标题】AWS Beanstalk 配置文件在部署时未执行【英文标题】:AWS Beanstalk config file not executing at deployment 【发布时间】:2020-11-13 21:19:40 【问题描述】:

在多次无法通过 Beanstalk 正确部署我的 Laravel 应用程序后,我决定遵循基本的 AWS 教程,了解如何创建 Laravel 应用程序并将其部署到 Beanstack(以排除它的原因。)

它启动了,所以我在 routes/web.php 中添加了以下端点:

Route::get('/hello', function () 
    return 'hi';
);

失败了。

然后我发现 Beanstalk 就在几个月前将其服务器从 Apache 切换到了 nginx! Laravel 教程中没有提到这一点,尽管这意味着两者在默认状态下不再兼容。

经过一番挖掘,我找到了另一个 AWS 教程的链接,该教程显然解决了这些问题:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-linux-extend.html

解决方案看起来非常简单:创建一个自定义配置文件并将其存储在名为“.platform”(点平台)的 .ebextensions 目录中,该目录位于 app 目录中。

我在里面创建了一个名为 laravel.config 的自定义文件:

location / 
    try_files $uri $uri/ /index.php?$query_string;
    gzip_static on;

文件的路径是:

~/my-app/.platform/nginx/conf.d/elasticbeanstalk/

我重新部署了。 api还是不行……

我通过 SHH 连接到实例,发现 .platform 目录不存在。我想这是有道理的,因为它只在部署时使用......

【问题讨论】:

【参考方案1】:

一个明显的问题是您的 nginx 配置文件使用了错误的扩展

文件应该是*.conf,而不是*.config,如docs所示。

您的.platform 文件夹被忽略的原因可能是您的.gitignore.ebignore 文件中有它。

请注意,即使你修复了扩展,配置本身也可能不正确,我无法验证。

【讨论】:

配置文件扩展名是问题所在。非常感谢!!

以上是关于AWS Beanstalk 配置文件在部署时未执行的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Elastic Beanstalk 配置 aws cli 配置文件?

尝试在 AWS Beanstalk 上运行 django 项目时出现实例配置文件不存在的错误

将 rails 6 部署到 AWS Beanstalk 时,系统中未检测到 Yarn 可执行文件

部署到 AWS beanstalk 时移除旧冠

AWS Elastic Beanstalk 上的 Celery 配置问题 - “进程没有配置更新”

AWS Elastic Beanstalk 部署后脚本