【发布时间】:2020-07-24 18:05:05
【问题描述】:
很抱歉,我似乎迷路了,但我几乎没有部署 Web 应用程序的经验,而且在线搜索也无济于事。正如标题所述,我正在运行 Ubuntu、Apache2、PostgreSQL 和 Django,并且我反复收到错误消息,其中大部分要么含糊不清,要么没有明确的解决方案。再加上我对特定交互流沙的无知,任何试图找到解决方案的尝试,所以我会非常具体。
安装:
- apache2 libapache2-mod-wsgi-py3 -- 适用于 python 3
- 我不记得我是否安装了 django 或者它是否自动与我的 PyCharm 包一起打包。
- PostgreSQL - 工作正常。
应用:
- 是一个云计算平台,所以需要接收文件,存储文件,渲染文件。
- 与附加的 Django 网络服务器一起工作正常。
- 有静态文件,需要写入媒体文件夹
settings.py:
- DEBUG = True
- WSGI_APPLICATION = 'example.wsgi.application'
-DATABASES =
'default':
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'example',
'USER': 'example',
'PASSWORD': 'example',
'HOST': 'localhost',
'PORT': '',
000-default.conf
<VirtualHost *:80>
ServerName FireAnts.localhost
ServerAlias www.FireAnts.localhost
DocumentRoot /var/www/FireAnts
<Directory /var/www/FireAnts/FireAnts>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess FireAnts python-path=/var/www/FireAnts python-home=/var/www/FireAnts/venv
WSGIProcessGroup FireAnts
WSGIScriptAlias / /var/www/FireAnts/FireAnts/wsgi.py
</VirtualHost>
错误,根据日志
- 目前,我收到“没有名为 'django' 的模块”。
- 我经常得到“填充”不是可重入的——这个问题似乎有上百万种可能的解决方案。
- 目标 WSGI 无法作为 Python 模块加载。
我通过删除写入 error.txt 文件的所有行来临时得到另一个脚本来工作——该文件同时存在于两个包中并生成语法错误。由于某种无法解释的原因,它再次因“No module name django”失败而中断。此外,我将整个包从外部目录移动到“/var/www/”(并修改了 000-default.conf 文件)。这不应该产生任何问题,因为虚拟环境与包一起移动,并且数据库仍应从外部连接。但我假设这之前通过写入不再具有写权限的文件生成了 500 错误。我的数据库会以某种方式(通过阻止连接)生成错误吗?如果用户稍后上传一个包,它将临时写入媒体文件夹。即使它还没有写,这能打破它吗?将包移动到 /var/www 目录时是否需要进行更多修改?我不知道什么可能会产生这些错误。一定是 apache 配置错误,因为它适用于 Django 的 Web 服务器,并且只与 apache2 中断...
抱歉造成混乱和缺乏组织;我只是不知道我在哪里搞砸了。 - 但每次尝试的修复都会再次破坏它。我将不胜感激。
【问题讨论】:
-
发布这个问题绝对破坏了格式,所以我为此道歉。,
-
您使用的是虚拟环境吗?
-
当你在 PyCharm 中启动一个 Django 应用程序时,它会自动配置一个虚拟环境,所以是的。我想它有我需要的一切。
-
您在运行应用程序时是否激活了该虚拟环境?你能确认 django 确实安装在那个虚拟环境中吗?
-
Django 自己工作得很好,所以我假设 django 被包括在内。这可能是一个荒谬的问题,但我必须在 apache 请求时激活虚拟环境吗?我从来没有激活环境,但它可能是用“python3 manage.py ....”命令激活的。
标签: python django postgresql apache2