Django 部署到 AWS EB 显示 500 内部服务器错误

Posted

技术标签:

【中文标题】Django 部署到 AWS EB 显示 500 内部服务器错误【英文标题】:Django Deploy to AWS EB Show 500 Internal Server Error 【发布时间】:2020-04-25 16:15:51 【问题描述】:

我只是想将一个示例 Django 应用程序部署到 AWS EB。我对本教程执行完全相同的操作=>

Deploy Django on AWS

但结果不一样。我收到了这个错误消息,请问我该如何解决这个问题?

更新

登录 AWS EB

[Wed Jan 08 06:48:15.832250 2020] [:error] [pid 4442] [remote 172.31.] mod_wsgi (pid=4442): Target WSGI script '/opt/python/current/app/djangotest/djangotest/wsgi.py' cannot be loaded as Python module.
[Wed Jan 08 06:48:15.832304 2020] [:error] [pid 4442] [remote 172.31.] mod_wsgi (pid=4442): Exception occurred processing WSGI script '/opt/python/current/app/djangotest/djangotest/wsgi.py'.
[Wed Jan 08 06:48:15.832387 2020] [:error] [pid 4442] [remote 172.31.] Traceback (most recent call last):
[Wed Jan 08 06:48:15.832416 2020] [:error] [pid 4442] [remote 172.31.]   File "/opt/python/current/app/djangotest/djangotest/wsgi.py", line 12, in <module>
[Wed Jan 08 06:48:15.832421 2020] [:error] [pid 4442] [remote 172.31.]     from django.core.wsgi import get_wsgi_application
[Wed Jan 08 06:48:15.832437 2020] [:error] [pid 4442] [remote 172.31.] ModuleNotFoundError: No module named 'django'

【问题讨论】:

有记录吗? @lain Shelvington,在浏览器中,这只是错误,在 aws eb 日志中,有很多日志类型,例如 '/var/log/httpd/error_log' 、 '/opt/python/log /supervisord.log'等一个,哪个重要? @lain Shelvington,请检查更新。 你记得 pip freeze > requirements.txt 吗? django 在你的 requirements.txt 中吗? @OliverAdria,是的,最后我发现错误是因为 requirements.txt 文件名不正确。我忘了把s放在requirements.txt中,应该是requirements.txt。 【参考方案1】:

您可以使用 CodeStar 在 AWS 上部署 Django 3.1.5+ 和 Python 3.8 应用程序。我写了一个教程here。

不需要代码或终端。

1 - 首先,转到您的 AWS 控制台,按 Option + S (Mac) 并输入 CodeStar

2 - 然后,按下创建项目按钮

3 - 选择你的选项,这些对我来说效果很好

4 - 选择(单击)显示的平台,然后按下一步

5 - 输入您的项目名称和 ID,然后选择您的仓库(我使用的是 Github - 顺便说一句,它支持持续部署)

6 - 如果您选择 Github,则必须输入这些详细信息。 AWS 会自动为您创建一个存储库。

7 - 快速配置您的 EC2 实例

8 - 查看您的项目信息并点击创建项目

此时,您将需要等待 3-4 分钟,让 AWS 为您完成一切。

当您在 Github 上将内容推送到您的仓库时,CodePipeline 将自动更新您的网站。

AWS 安装的默认 Django 版本是 3.1.5,但您可以根据需要将 common.txt 要求文件从 /requirements 修改为 3.1.7。

【讨论】:

以上是关于Django 部署到 AWS EB 显示 500 内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章

将敏感环境变量包括到 AWS EB Django 应用程序

AWS EB Deploy 在部署后显示缺少 Dockerrun.aws.json

Laravel Passport:部署到 aws 后缺少密钥

带有 Django 的 AWS Beanstalk:eb create 抱怨未知配置设置“StaticFile”

通过 AWS Elastic Beanstalk 成功部署 Django,但出现 500 错误

Django,AWS EB 错误,您的 WSGIPath 引用了一个不存在的文件