Django + EC2 + Apache 给出服务器错误 500
Django + EC2 + Apache giving SERVER ERROR 500
我在本地开发了一个 Django 项目,一切正常。
我将它与 Apache2 一起部署在 EC2 Ubuntu 实例上,它给出了服务器错误 500。我也尝试过使用 gunicorn+nginx,但仍然不满意。
作为上下文,我使用 Django4、Python3、Apache2 以及;
- 用于 postgres 数据库的 AWS RDS
- 用于静态文件的 AWS S3
(两者都在本地开发和生产模式下工作正常)。
我还将我的 EC2 IP 地址添加到 ALLOWED_HOSTS 并且仍然相同(如果我通过 * 允许所有内容,也会出现相同的错误)。
注意:我的所有凭据都在 .env 文件中。
Django 应用程序不提供访问权限。
我实际上想从 CertBot 获取 SSL 并分配我购买的 .dev 域。
我实际上被困在这里几天了,浏览了几个博客但无法解决这个问题。
任何建议都会有很大帮助。
谢谢。
我的 apache.conf 文件
<VirtualHost *:80>
ServerAdmin admin@admin.com
ServerName <aws_public_ip_address>
ServerAlias <aws_public_ip_address>
DocumentRoot /home/ubuntu/liveProject/Django-Project
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static /home/ubuntu/liveProject/Django-Project/static
<Directory /home/ubuntu/liveProject/Django-Project/static>
Require all granted
</Directory>
Alias /template /home/ubuntu/liveProject/Django-Project/tempate
<Directory /home/ubuntu/liveProject/Django-Project/tempate>
Require all granted
</Directory>
<Directory /home/ubuntu/liveProject/Django-Project/ProjectName>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess Django-Project python-path=/home/ubuntu/liveProject/Django-Project python-home=/home/ubuntu/liveProject/liveEnv
WSGIProcessGroup Django-Project
WSGIScriptAlias / /home/ubuntu/liveProject/Django-Project/ProjectName/wsgi.py
</VirtualHost>
谢谢。
更新:
Debug = False
的错误日志
[Fri Apr 15 12:36:03.370447 2022] [mpm_event:notice] [pid 35855:tid 139942111996992] AH00489: Apache/2.4.41 (Ubuntu) OpenSSL/1.1.1f mod_wsgi/4.6.8 Python/3.8 configured -- resuming normal operations
[Fri Apr 15 12:36:03.370541 2022] [core:notice] [pid 35855:tid 139942111996992] AH00094: Command line: '/usr/sbin/apache2'
Debug = True 的错误日志
Exception ignored in: <function Local.__del__ at 0x7fd92c735700>
Traceback (most recent call last):
File "/home/ubuntu/liveProject/liveEnv/lib/python3.8/site-packages/asgiref/local.py", line 96, in __del__
NameError: name 'TypeError' is not defined
Exception ignored in: <function Local.__del__ at 0x7fd92c735700>
Traceback (most recent call last):
File "/home/ubuntu/liveProject/liveEnv/lib/python3.8/site-packages/asgiref/local.py", line 96, in __del__
NameError: name 'TypeError' is not defined
access.log
<my_ip> - - [15/Apr/2022:12:39:28 +0000] "GET / HTTP/1.1" 400 5208 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
<my_ip> - - [15/Apr/2022:12:39:48 +0000] "-" 408 4737 "-" "-"
<my_ip> - - [15/Apr/2022:12:39:48 +0000] "-" 408 4737 "-" "-"
<my_ip> - - [15/Apr/2022:12:40:33 +0000] "GET / HTTP/1.1" 400 5208 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
49.14.87.5 - - [15/Apr/2022:12:40:36 +0000] "GET / HTTP/1.1" 400 794 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
<my_ip> - - [15/Apr/2022:12:40:56 +0000] "-" 408 323 "-" "-"
<aws_ip> - - [15/Apr/2022:12:40:56 +0000] "-" 408 4737 "-" "-"
<aws_ip> - - [15/Apr/2022:12:41:14 +0000] "GET / HTTP/1.1" 400 5209 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
<aws_ip> - - [15/Apr/2022:12:41:34 +0000] "GET / HTTP/1.1" 301 580 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
<aws_ip> - - [15/Apr/2022:12:41:56 +0000] "-" 408 4738 "-" "-"
尝试加入虚拟主机
WSGIApplicationGroup %{GLOBAL}
我已经确定了问题,现在已经修复了,终于在 2 天多之后。
没什么,apache 或 django 没有从我的 .env 文件中填充值。就像 .env 文件没有退出一样。
我将每个值直接替换为 settings.py 并且有效。
我现在必须看看如何定义我的敏感凭据远离 settings.py
谢谢。
我在本地开发了一个 Django 项目,一切正常。
我将它与 Apache2 一起部署在 EC2 Ubuntu 实例上,它给出了服务器错误 500。我也尝试过使用 gunicorn+nginx,但仍然不满意。
作为上下文,我使用 Django4、Python3、Apache2 以及;
- 用于 postgres 数据库的 AWS RDS
- 用于静态文件的 AWS S3 (两者都在本地开发和生产模式下工作正常)。
我还将我的 EC2 IP 地址添加到 ALLOWED_HOSTS 并且仍然相同(如果我通过 * 允许所有内容,也会出现相同的错误)。
注意:我的所有凭据都在 .env 文件中。
Django 应用程序不提供访问权限。
我实际上想从 CertBot 获取 SSL 并分配我购买的 .dev 域。
我实际上被困在这里几天了,浏览了几个博客但无法解决这个问题。
任何建议都会有很大帮助。
谢谢。
我的 apache.conf 文件
<VirtualHost *:80>
ServerAdmin admin@admin.com
ServerName <aws_public_ip_address>
ServerAlias <aws_public_ip_address>
DocumentRoot /home/ubuntu/liveProject/Django-Project
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static /home/ubuntu/liveProject/Django-Project/static
<Directory /home/ubuntu/liveProject/Django-Project/static>
Require all granted
</Directory>
Alias /template /home/ubuntu/liveProject/Django-Project/tempate
<Directory /home/ubuntu/liveProject/Django-Project/tempate>
Require all granted
</Directory>
<Directory /home/ubuntu/liveProject/Django-Project/ProjectName>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess Django-Project python-path=/home/ubuntu/liveProject/Django-Project python-home=/home/ubuntu/liveProject/liveEnv
WSGIProcessGroup Django-Project
WSGIScriptAlias / /home/ubuntu/liveProject/Django-Project/ProjectName/wsgi.py
</VirtualHost>
谢谢。
更新: Debug = False
的错误日志[Fri Apr 15 12:36:03.370447 2022] [mpm_event:notice] [pid 35855:tid 139942111996992] AH00489: Apache/2.4.41 (Ubuntu) OpenSSL/1.1.1f mod_wsgi/4.6.8 Python/3.8 configured -- resuming normal operations
[Fri Apr 15 12:36:03.370541 2022] [core:notice] [pid 35855:tid 139942111996992] AH00094: Command line: '/usr/sbin/apache2'
Debug = True 的错误日志
Exception ignored in: <function Local.__del__ at 0x7fd92c735700>
Traceback (most recent call last):
File "/home/ubuntu/liveProject/liveEnv/lib/python3.8/site-packages/asgiref/local.py", line 96, in __del__
NameError: name 'TypeError' is not defined
Exception ignored in: <function Local.__del__ at 0x7fd92c735700>
Traceback (most recent call last):
File "/home/ubuntu/liveProject/liveEnv/lib/python3.8/site-packages/asgiref/local.py", line 96, in __del__
NameError: name 'TypeError' is not defined
access.log
<my_ip> - - [15/Apr/2022:12:39:28 +0000] "GET / HTTP/1.1" 400 5208 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
<my_ip> - - [15/Apr/2022:12:39:48 +0000] "-" 408 4737 "-" "-"
<my_ip> - - [15/Apr/2022:12:39:48 +0000] "-" 408 4737 "-" "-"
<my_ip> - - [15/Apr/2022:12:40:33 +0000] "GET / HTTP/1.1" 400 5208 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
49.14.87.5 - - [15/Apr/2022:12:40:36 +0000] "GET / HTTP/1.1" 400 794 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
<my_ip> - - [15/Apr/2022:12:40:56 +0000] "-" 408 323 "-" "-"
<aws_ip> - - [15/Apr/2022:12:40:56 +0000] "-" 408 4737 "-" "-"
<aws_ip> - - [15/Apr/2022:12:41:14 +0000] "GET / HTTP/1.1" 400 5209 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
<aws_ip> - - [15/Apr/2022:12:41:34 +0000] "GET / HTTP/1.1" 301 580 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
<aws_ip> - - [15/Apr/2022:12:41:56 +0000] "-" 408 4738 "-" "-"
尝试加入虚拟主机
WSGIApplicationGroup %{GLOBAL}
我已经确定了问题,现在已经修复了,终于在 2 天多之后。
没什么,apache 或 django 没有从我的 .env 文件中填充值。就像 .env 文件没有退出一样。
我将每个值直接替换为 settings.py 并且有效。
我现在必须看看如何定义我的敏感凭据远离 settings.py
谢谢。