500运行Django,Apache2,PostGreSQL Ubuntu 18.04.3 LTS时出错

时间:2020-04-12 03:41:03

标签: python django postgresql apache2

对不起,如果我似乎迷路了,但我几乎没有部署Web应用程序的经验,并且在线搜索也无济于事。如标题所示,我正在运行Ubuntu,Apache2,PostgreSQL和Django,并且我反复收到错误消息,其中大多数都不清晰和/或没有明确的解决方案。再加上我对特定交互的无知会流沙寻找解决方案的任何尝试,因此我将非常具体。

安装:

  • apache2 libapache2-mod-wsgi-py3-适用于python 3
  • 我不记得我是否安装了django或它是否与我的PyCharm软件包一起自动打包。
  • PostgreSQL-运行正常。

应用程序:

  • 这是一个云计算平台,因此它需要接收文件,存储文件和呈现文件。
  • 与Django的网络服务器连接正常。
  • 具有静态文件,需要写入媒体文件夹

settings.py:

save()

000-default.conf

- DEBUG = True
- WSGI_APPLICATION = 'example.wsgi.application'
-DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'example',
        'USER': 'example',
        'PASSWORD': 'example',
        'HOST': 'localhost',
        'PORT': '',

每个日志错误

  • 当前,我收到“没有名为'django'的模块”。
  • 我经常会“进入”这个领域,但并非一成不变的,这个问题似乎有上百万种可能的解决方案。
  • 目标WSGI无法作为Python模块加载。

我暂时删除了所有写入error.txt文件的行,从而使另一个脚本可以工作。该文件同时存在于两个软件包中并生成语法错误。由于某些无法解释的原因,它再次因“ No module name django”失败而中断。另外,我将整个程序包从外部目录移动到了“ / var / www /”(并修改了000-default.conf文件)。这不会产生任何问题,因为虚拟环境随软件包一起旅行,并且数据库仍应从外部进行连接。但是我认为这是在写入不再具有写入权限的文件之前产生了500错误。我的数据库能否以某种方式(通过阻止连接)生成错误?如果用户稍后上传软件包,它将临时写入媒体文件夹。即使它还没有写,这能打破它吗?将软件包移至/ var / www目录时是否需要进行其他修改?我不知道是什么会产生这些错误。它必须是apache configuraton错误,因为它可与Django的Web服务器一起使用,并且只能与apache2一起中断...

很抱歉混乱和缺乏组织;我只是不知道我该搞砸了。 -但每次尝试修复都会再次破坏它。我将不胜感激。

2 个答案:

答案 0 :(得分:0)

您可能会错过默认conf中正确提供WSGIDaemonProcess的机会。尝试为

WSGIDaemonProcess FireAnts python-path=/var/www/FireAnts/venv/path/to/bin/python:/var/www/FireAnts/FireAnts

<path/to/>替换为通向静脉的正确路径。您必须提供python可执行文件的完整路径。

编辑项目的wsgi.py文件

/var/www/FireAnts/FireAnts/wsgi.py:

import os
import sys

from django.core.wsgi import get_wsgi_application

path = '/var/www/FireAnts'
if path not in sys.path:
    sys.path.insert(0, path)

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "FireAnts.settings")

application = get_wsgi_application()

答案 1 :(得分:0)

好的,所以我想出了答案。 一切都以正确的方式配置,但是缺少安装,错误消息不明确。 我找到了生成“ populate()不可重入”消息的文件,找到了提供错误消息的行,并通过替换“ raise RuntimeError(“ populate()is not reentrant”)”来指示其继续进行操作“ self.app_configs = {}”。错误日志没有收到模糊的,不清楚的答案,而是报告了缺少的“ psycopg2”导入。我激活了venv目录并安装了psycopg2。在那之后,它起作用了。