AWS Beanstalk中的Django应用程序部署-部署后错误-内部服务器错误

时间:2020-09-30 23:55:00

标签: python django amazon-web-services amazon-elastic-beanstalk web-deployment

我有一个部署到AWS beantalk的Django应用程序。在遵循官方文档后,第一个版本就可以了:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html

然后,我使用django-filter添加了一项新功能到我的站点。现在,当我进行部署时,我在主要的前端页面上收到此错误:

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

请通过root @ localhost与服务器管理员联系,以告知他们该错误发生的时间以及您在该错误发生之前执行的操作。 服务器错误日志中可能会提供有关此错误的更多信息。

下面是我的错误日志。

[Thu Oct 01 04:47:09.118698 2020] [:error] [pid 21279] [remote 172.31.47.200:20528]     apps.populate(settings.INSTALLED_APPS)
[Thu Oct 01 04:47:09.118704 2020] [:error] [pid 21279] [remote 172.31.47.200:20528]   File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/apps/registry.py", line 83, in populate
[Thu Oct 01 04:47:09.118707 2020] [:error] [pid 21279] [remote 172.31.47.200:20528]     raise RuntimeError("populate() isn't reentrant")
[Thu Oct 01 04:47:09.118722 2020] [:error] [pid 21279] [remote 172.31.47.200:20528] RuntimeError: populate() isn't reentrant
[Thu Oct 01 04:47:13.477606 2020] [:error] [pid 21279] [remote 172.31.3.100:48] mod_wsgi (pid=21279): Target WSGI script '/opt/python/current/app/djangoproject/wsgi.py' cannot be loaded as Python module.
[Thu Oct 01 04:47:13.477658 2020] [:error] [pid 21279] [remote 172.31.3.100:48] mod_wsgi (pid=21279): Exception occurred processing WSGI script '/opt/python/current/app/djangoproject/wsgi.py'.
[Thu Oct 01 04:47:13.477768 2020] [:error] [pid 21279] [remote 172.31.3.100:48] Traceback (most recent call last):
[Thu Oct 01 04:47:13.477801 2020] [:error] [pid 21279] [remote 172.31.3.100:48]   File "/opt/python/current/app/djangoproject/wsgi.py", line 16, in <module>
[Thu Oct 01 04:47:13.477806 2020] [:error] [pid 21279] [remote 172.31.3.100:48]     application = get_wsgi_application()
[Thu Oct 01 04:47:13.477812 2020] [:error] [pid 21279] [remote 172.31.3.100:48]   File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
[Thu Oct 01 04:47:13.477816 2020] [:error] [pid 21279] [remote 172.31.3.100:48]     django.setup(set_prefix=False)
[Thu Oct 01 04:47:13.477822 2020] [:error] [pid 21279] [remote 172.31.3.100:48]   File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
[Thu Oct 01 04:47:13.477825 2020] [:error] [pid 21279] [remote 172.31.3.100:48]     apps.populate(settings.INSTALLED_APPS)
[Thu Oct 01 04:47:13.477831 2020] [:error] [pid 21279] [remote 172.31.3.100:48]   File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/apps/registry.py", line 83, in populate
[Thu Oct 01 04:47:13.477834 2020] [:error] [pid 21279] [remote 172.31.3.100:48]     raise RuntimeError("populate() isn't reentrant")
[Thu Oct 01 04:47:13.477849 2020] [:error] [pid 21279] [remote 172.31.3.100:48] RuntimeError: populate() isn't reentrant
[Thu Oct 01 04:47:17.516356 2020] [:error] [pid 21279] [remote 172.31.29.143:48] mod_wsgi (pid=21279): Target WSGI script '/opt/python/current/app/djangoproject/wsgi.py' cannot be loaded as Python module.
[Thu Oct 01 04:47:17.516412 2020] [:error] [pid 21279] [remote 172.31.29.143:48] mod_wsgi (pid=21279): Exception occurred processing WSGI script '/opt/python/current/app/djangoproject/wsgi.py'.
[Thu Oct 01 04:47:17.516522 2020] [:error] [pid 21279] [remote 172.31.29.143:48] Traceback (most recent call last):
[Thu Oct 01 04:47:17.516557 2020] [:error] [pid 21279] [remote 172.31.29.143:48]   File "/opt/python/current/app/djangoproject/wsgi.py", line 16, in <module>
[Thu Oct 01 04:47:17.516562 2020] [:error] [pid 21279] [remote 172.31.29.143:48]     application = get_wsgi_application()
[Thu Oct 01 04:47:17.516568 2020] [:error] [pid 21279] [remote 172.31.29.143:48]   File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
[Thu Oct 01 04:47:17.516572 2020] [:error] [pid 21279] [remote 172.31.29.143:48]     django.setup(set_prefix=False)
[Thu Oct 01 04:47:17.516577 2020] [:error] [pid 21279] [remote 172.31.29.143:48]   File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
[Thu Oct 01 04:47:17.516589 2020] [:error] [pid 21279] [remote 172.31.29.143:48]     apps.populate(settings.INSTALLED_APPS)
[Thu Oct 01 04:47:17.516596 2020] [:error] [pid 21279] [remote 172.31.29.143:48]   File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/apps/registry.py", line 83, in populate
[Thu Oct 01 04:47:17.516599 2020] [:error] [pid 21279] [remote 172.31.29.143:48]     raise RuntimeError("populate() isn't reentrant")
[Thu Oct 01 04:47:17.516615 2020] [:error] [pid 21279] [remote 172.31.29.143:48] RuntimeError: populate() isn't reentrant
[Thu Oct 01 04:47:18.842837 2020] [:error] [pid 21279] [remote 172.31.58.190:44] mod_wsgi (pid=21279): Target WSGI script '/opt/python/current/app/djangoproject/wsgi.py' cannot be loaded as Python module.
[Thu Oct 01 04:47:18.842888 2020] [:error] [pid 21279] [remote 172.31.58.190:44] mod_wsgi (pid=21279): Exception occurred processing WSGI script '/opt/python/current/app/djangoproject/wsgi.py'.
[Thu Oct 01 04:47:18.843064 2020] [:error] [pid 21279] [remote 172.31.58.190:44] Traceback (most recent call last):
[Thu Oct 01 04:47:18.843099 2020] [:error] [pid 21279] [remote 172.31.58.190:44]   File "/opt/python/current/app/djangoproject/wsgi.py", line 16, in <module>
[Thu Oct 01 04:47:18.843103 2020] [:error] [pid 21279] [remote 172.31.58.190:44]     application = get_wsgi_application()
[Thu Oct 01 04:47:18.843110 2020] [:error] [pid 21279] [remote 172.31.58.190:44]   File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
[Thu Oct 01 04:47:18.843113 2020] [:error] [pid 21279] [remote 172.31.58.190:44]     django.setup(set_prefix=False)
[Thu Oct 01 04:47:18.843119 2020] [:error] [pid 21279] [remote 172.31.58.190:44]   File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
[Thu Oct 01 04:47:18.843123 2020] [:error] [pid 21279] [remote 172.31.58.190:44]     apps.populate(settings.INSTALLED_APPS)
[Thu Oct 01 04:47:18.843129 2020] [:error] [pid 21279] [remote 172.31.58.190:44]   File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/apps/registry.py", line 83, in populate
[Thu Oct 01 04:47:18.843132 2020] [:error] [pid 21279] [remote 172.31.58.190:44]     raise RuntimeError("populate() isn't reentrant")
[Thu Oct 01 04:47:18.843147 2020] [:error] [pid 21279] [remote 172.31.58.190:44] RuntimeError: populate() isn't reentrant ```

这些是我的要求。txt:

asgiref==3.2.10
Django==3.1.1
django-ckeditor==6.0.0
django-filter==2.3.0
django-js-asset==1.2.2
PyJWT==1.7.1
pytz==2020.1
sqlparse==0.3.1

WSGI文件:

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: djangoproject/wsgi.py

请您帮忙。已经尝试了一段时间了。

非常感谢你, Cj

1 个答案:

答案 0 :(得分:0)

在您的.ebextensions django配置文件中执行此操作:

command: "source /var/app/venv/staging-LQM1lest/bin/activate && pip install -r requirements/production.txt"

因此,基本上激活venv并运行pip install可以确保将依赖项安装在正确的venv中。另外:

aws:elasticbeanstalk:container:python:
 WSGIPath: config.wsgi:application

对于我来说,我在wsgi.py文件所在的根目录中有一个配置文件夹