【发布时间】:2020-09-07 00:38:44
【问题描述】:
几天前,我决定将 python 从 2.7 版更新到 3.7 版。这是我目前的设置:
Ubuntu 16.04
Python 3.7.7
Django 3.0.6
Apache/2.4.18
使用命令python -m venv --system-site-packages /var/www/path/to/myenv我已经创建了虚拟环境,激活这个环境后我创建了一个新项目。
环境路径看起来像这样/var/www/path/to/myenv,项目路径看起来像这样/var/www/path/to/myenv/myproject。
myproject.conf 的配置如下:
<VirtualHost *:80>
ServerName myproject.com
ServerAlias www.myproject.com
WSGIDaemonProcess myproject processes=2 threads=15 display-name=%{GROUP} python-home=/var/www/path/to/myenv python-path=/var/www/path/to/myenv/myproject
WSGIProcessGroup candyhand
WSGIScriptAlias / /var/www/path/to/myenv/myproject/myproject/wsgi.py
<Directory /var/www/path/to/myenv/myproject/myproject/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
<Directory /var/www/path/to/myenv/myproject/>
Require all granted
</Directory>
CustomLog /var/www/path/to/myenv/myproject/logs/apache_access.log combined
ErrorLog /var/www/path/to/myenv/myproject/logs/apache_error.log
Alias /static/ /var/www/path/to/myenv/myproject/static/
<Directory /var/www/path/to/myenv/myproject/>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Alias /media/ /var/www/path/to/myenv/myproject/media/
<Directory /var/www/path/to/myenv/myproject/>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
但我从 apache 服务器收到错误 500。这是apache服务器的日志:
mod_wsgi (pid=9495): Target WSGI script '/var/www/path/to/myenv/myproject/myproject/wsgi.py' cannot be loaded as Python module.
[Wed May 20 16:25:08.145621 2020] [wsgi:error] [pid 9495] mod_wsgi (pid=9495): Exception occurred processing WSGI script '/var/www/path/to/myenv/myproject/myproject/wsgi.py'.
[Wed May 20 16:25:08.145788 2020] [wsgi:error] [pid 9495] Traceback (most recent call last):
[Wed May 20 16:25:08.145864 2020] [wsgi:error] [pid 9495] File "/var/www/path/to/myenv/myproject/myproject/wsgi.py", line 12, in <module>
[Wed May 20 16:25:08.145885 2020] [wsgi:error] [pid 9495] from django.core.wsgi import get_wsgi_application
[Wed May 20 16:25:08.145945 2020] [wsgi:error] [pid 9495] ImportError: No module named 'django'
我根据这个documentation配置了VirtualHost,但也许我在某个地方弄错了,谢谢你的建议。
附:
python manage.py runserver 命令运行良好
【问题讨论】:
-
尝试使用 python 3.8 或 3.6,因为 3.7 会导致 django 出现一些问题
-
@AdonisN 是的,我的 mod_wsgi 更新了,这里是 mod_wsgi/4.3.0 版本
-
尝试在你的 wsgi 中明确指定虚拟环境,看看你是否得到不同的错误。您可以通过将以下内容添加到 wsgi 文件的顶部来做到这一点:
import syssys.path.insert(0, '/var/www/path/to/myenv/lib/python3.7/site-packages/')您还可以将其添加到 wsgi 文件中,该文件将打印出它在日志中看到print(sys.path)的路径 -
你能确认你在 /var/www/path/to/myenv/lib/python3.7/site-packages/ 下安装了 django。检查那里是否存在 django 文件夹
标签: python django python-3.x apache mod-wsgi