如何调试在 AWS EC2 中运行的 Django 应用程序

Posted

技术标签:

【中文标题】如何调试在 AWS EC2 中运行的 Django 应用程序【英文标题】:How to debug an Django application running in AWS EC2 【发布时间】:2021-11-28 20:40:13 【问题描述】:

我在 AWS Elastic Beanstalk 上部署了一个 django 应用程序并运行了它。 一些端点运行良好,但有人说<h1>Server Error (500)</h1>

出现错误的端点在我的本地环境中运行良好,但在 AWS 上运行时出现上述错误。 所以我要调试为什么会出错...... 请帮我! 注意:我有 ssh 访问权限。我检查了/var/log/目录,但没有发现应用程序的日志记录错误。

【问题讨论】:

确保在 settings.py 中有DEBUG=True,可以给你一些错误提示。 如果你是 SSH,你可以 curl localhost 来检查你的应用程序是否工作? 我相信DEBUG=True,当我尝试运行一个端点时,它说错误,其他的运行良好。 【参考方案1】:

    在侧边栏中查找 Elastic Beanstalk 日志:

    下载完整日志:

    从 eb-engine.log 开始

    在该文件的“尾部”(靠近底部)中查找 [ERROR] 行。根据“执行清理逻辑”这句话很明显

    2021/07/18 23:56:16.414159 [ERROR] An error occurred during execution of ...
    
    2021/07/18 23:56:16.414169 [INFO] Executing cleanup logic
    2021/07/18 23:56:16.414270 [INFO] CommandService Response: ...

这将告诉您错误的原因,或者它会告诉您查看其他文件之一以获取更多信息。

不得不下载日志进行调试非常烦人。为了节省时间,只需知道下载后不需要解压缩下载;只需双击文件即可查看,无需解压。

【讨论】:

我已经知道了,日志显示部署、预请求、eb-engine等错误,不是应用程序运行错误 @MaSao93 你看过web.stdout.log吗?如果您什么也看不到,一种解决方案是设置 custom logging 并配置 Django LOGGING 以登录到文件,例如。【参考方案2】:

您可能会遗漏很多东西。我要做的前两件事是:

    按照 @sanNeck 的建议,尝试将 Debug=True 放入您的设置中(不建议在生产环境中使用),这会提示您出现错误。 检查您是否在 ElasticBeanStalk 上正确安装了所有软件包。尝试从控制台中提取错误日志并尝试查找任何丢失的包。

【讨论】:

以上是关于如何调试在 AWS EC2 中运行的 Django 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

AWS EC2 用户数据 - 如何调试失败的 EFS 挂载失败

在 AWS EC2 实例上使用 nginx 配置 django

如何将我的 Django 文件上传到 AWS ec2? [复制]

AWS EC2 免费套餐 django 应用程序

在 AWS Ubuntu EC2 上部署 Django 时缺少模块

如何将最新 (2020) Django 安装到 AWS EC2 Linux 2 实例并使用 Apache Hello World 服务