将 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