将 Laravel 部署到 Elastic Beanstalk - 数据库连接被拒绝

Posted

技术标签:

【中文标题】将 Laravel 部署到 Elastic Beanstalk - 数据库连接被拒绝【英文标题】:Deploying Laravel to Elastic Beanstalk - DB Connection Refused 【发布时间】:2018-06-17 09:25:31 【问题描述】:

我一直在开发 Laravel 应用程序并定期部署到 Elastic Beanstalk 实例而没有问题,但突然间,毫无预警地,部署开始失败。

显然,我立即想知道我可能在代码中进行了哪些更改来导致这种情况,但我没有对核心配置进行任何更改。我回滚到之前的提交只是为了确保它不是我的代码,我得到了同样的错误。

在我运行 eb deploy 并运行 .ebextensions 配置后它失败了。

以下是日志中的错误消息:

[2018-01-08T10:50:34.672Z] INFO  [9457]  : Running 4 of 5 actions: EbExtensionPostBuild... 
[2018-01-08T10:50:35.523Z] ERROR [9457]  : Command execution failed: Activity failed. (ElasticBeanstalk::ActivityFatalError) caused by:   

In Connection.php line 664:
     SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = custom and table_name
= migrations)

     In Connector.php line 67:
     SQLSTATE[HY000] [2002] Connection refused

      (ElasticBeanstalk::ExternalInvocationError)

数据库连接凭据绝对正确(也没有更改)。

它失败时尝试的命令很简单:

php artisan migrate --force

我已尝试通过 SSH 连接到服务器,我可以手动运行相同的命令而不会出现问题。

我只是不明白为什么部署突然被拒绝连接。这可能与 AWS 安全配置有关吗?它会过期吗? :-/

【问题讨论】:

【参考方案1】:

原来问题是由于本地设置被缓存然后部署到服务器:bootstrap/cache/config.php

php artisan config:clear清空缓存删除文件,问题解决。

【讨论】:

这成功了!你救了我的命! :D 我已经搜索过说,只有旧帖子不断出现。对于其他试图修复它的人,我还注意到,如果您以 root 身份登录(例如ec2-user),运行php artisan config:clear 可能不会删除该文件。尝试从缓存目录中手动删除配置文件:sudo rm -f ./bootstrap/cache/config.php 救生员 :) 非常感谢!

以上是关于将 Laravel 部署到 Elastic Beanstalk - 数据库连接被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

将 Laravel 应用程序从 GitHub 分支自动部署到 AWS EC2 或 Elastic Beanstalk

部署在 CodePipeline 中的 Laravel Elastic Beanstalk 应用程序给出 500 SERVER ERROR

AWS Elastic Beanstalk 中的 Laravel .env

使用 EbCommands 部署 Laravel Aws Elastic-Beanstalk

Laravel AWS Elastic Beanslack 部署错误 - 内存不足错误

“数据库主机数组为空。”在 AWS Elastic Beanstalk 上部署 Laravel 项目后