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 可执行文件