无法在 aws Ubuntu 服务器上部署 django + apache
Unabled to deploy django + apache on aws Ubuntu server
我正在尝试在 Ubuntu 服务器上使用 Apache 部署 Django 应用程序,但在使用端口 :80 时出现奇怪的错误(500 内部错误服务器错误)。
我使用端口 :8000 进行了一些测试 运行 命令:
python3 manage.py runserver 0.0.0.0:8000
应用程序在那里运行没有任何问题,但是当我尝试使用端口 80 访问应用程序时它确实可以运行。
我的 apache 配置文件如下所示:
<VirtualHost *:80>
Alias /static /home/ubuntu/gh_system/static
<Directory /home/ubuntu/gh_system/static>
Require all granted
</Directory>
<Directory /home/ubuntu/gh_system/HRSYSTEM>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess HRSYSTEM python-home=/home/ubuntu/gh_system/env python-path=/home/ubuntu/gh_system>
WSGIProcessGroup HRSYSTEM
WSGIScriptAlias / /home/ubuntu/gh_system/HRSYSTEM/wsgi.py
我查看了 apached2 错误日志,我得到:没有名为 'django' 的模块,我的 wsgi 文件是:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "HRSYSTEM.settings")
application = get_wsgi_application()
经过一些研究、测试和审查 apache 日志:
sudo tail -100 /var/log/apache2/error.log
我发现问题与这一行有关:
WSGIDaemonProcess HRSYSTEM ***python-home=/home/ubuntu/gh_system/env*** python-path=/home/ubuntu/gh_system>
基本上,apache 试图读取虚拟环境中的包,但我确实使用以下命令安装了它们:
sudo pip3 install -r requirements.txt
显然,使用“sudo”命令是在虚拟环境之外安装软件包,这很奇怪;但是如果没有“sudo”,控制台会记录错误权限被拒绝,所以我向虚拟环境授予 chmod 700 权限,并在没有“sudo”的情况下再次安装包,然后它就可以工作了!
我了解到的关于错误的一些事情:
Problem: Not module 'encodings' --> this problem occurs when apache can not access your packages, usually for a bad path specified in the config file.
Problem: Not module 'x module, could be django' means you need to install the package using pip3.
希望对大家有所帮助!只是要指出,我最近学到的东西是:当你花太多时间试图解决一个问题,而互联网上没有太多关于它的信息时,这意味着你的某些非常非常基本的东西失败了项目;例如,像我一样在虚拟环境之外安装包,甚至没有意识到。
我正在尝试在 Ubuntu 服务器上使用 Apache 部署 Django 应用程序,但在使用端口 :80 时出现奇怪的错误(500 内部错误服务器错误)。
我使用端口 :8000 进行了一些测试 运行 命令:
python3 manage.py runserver 0.0.0.0:8000
应用程序在那里运行没有任何问题,但是当我尝试使用端口 80 访问应用程序时它确实可以运行。
我的 apache 配置文件如下所示:
<VirtualHost *:80>
Alias /static /home/ubuntu/gh_system/static
<Directory /home/ubuntu/gh_system/static>
Require all granted
</Directory>
<Directory /home/ubuntu/gh_system/HRSYSTEM>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess HRSYSTEM python-home=/home/ubuntu/gh_system/env python-path=/home/ubuntu/gh_system>
WSGIProcessGroup HRSYSTEM
WSGIScriptAlias / /home/ubuntu/gh_system/HRSYSTEM/wsgi.py
我查看了 apached2 错误日志,我得到:没有名为 'django' 的模块,我的 wsgi 文件是:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "HRSYSTEM.settings")
application = get_wsgi_application()
经过一些研究、测试和审查 apache 日志:
sudo tail -100 /var/log/apache2/error.log
我发现问题与这一行有关:
WSGIDaemonProcess HRSYSTEM ***python-home=/home/ubuntu/gh_system/env*** python-path=/home/ubuntu/gh_system>
基本上,apache 试图读取虚拟环境中的包,但我确实使用以下命令安装了它们:
sudo pip3 install -r requirements.txt
显然,使用“sudo”命令是在虚拟环境之外安装软件包,这很奇怪;但是如果没有“sudo”,控制台会记录错误权限被拒绝,所以我向虚拟环境授予 chmod 700 权限,并在没有“sudo”的情况下再次安装包,然后它就可以工作了!
我了解到的关于错误的一些事情:
Problem: Not module 'encodings' --> this problem occurs when apache can not access your packages, usually for a bad path specified in the config file.
Problem: Not module 'x module, could be django' means you need to install the package using pip3.
希望对大家有所帮助!只是要指出,我最近学到的东西是:当你花太多时间试图解决一个问题,而互联网上没有太多关于它的信息时,这意味着你的某些非常非常基本的东西失败了项目;例如,像我一样在虚拟环境之外安装包,甚至没有意识到。