【问题标题】:AWS Beanstalk config file not executing at deploymentAWS Beanstalk 配置文件在部署时未执行
【发布时间】: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 目录不存在。我想这是有道理的,因为它只在部署时使用......

【问题讨论】:

    标签: laravel amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 配置文件扩展名是问题所在。非常感谢!!
    猜你喜欢
    • 2018-09-02
    • 2021-08-20
    • 2015-04-19
    • 2020-11-16
    • 2020-10-06
    • 2013-04-11
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多