我在mac mini上设置了一个运行apache 2.4,mod wsgi,python 2.7的烧瓶应用程序。它提供了一些有用的数据,我的团队用它来监控我们的项目。
我最近开发了一个带有MySQL数据库后端的Django应用程序,它在python 3.4虚拟环境中的测试服务器下运行得非常好,Django 1.10和PyMySQL以及通过pip安装的mysqlclient但我无法在apache下运行
我的Apache虚拟服务器配置如下:
WSGIScriptReloading On
<VirtualHost *>
ServerName <server_name>
ServerAlias <project_name>
ServerAdmin <myEmail>
LogLevel info
# This is the WSGI daemon process for the existing python 2.7/flask project
# Even if I comment this bit out, the Django project still won't work
WSGIDaemonProcess theApp user=_www group=staff threads=5
WSGIScriptAlias /app1 /path/to/theApp/apache/wsgi.py
<Directory "/path/to/theApp/apache">
WSGIProcessGroup app1
WSGIApplicationGroup %{GLOBAL}
<Files wsgi.py>
Require all granted
</Files>
</Directory>
# This is the WSGI daemon process for my django app - I've anonymised it
# a bit but I am confident the paths used are correct
WSGIDaemonProcess djangoApp user=_www group=staff processes=2 threads=15 python-path=/path/to/djangoApp:/path/to/virtualenvs/env34 display-name=%{GROUP}
WSGIProcessGroup djangoApp
WSGIApplicationGroup %{GLOBAL}
WSGIScriptAlias /djangoApp /path/to/djangoApp/djangoApp/wsgi.py
<Directory /path/to/djangoApp/djangoApp>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
httpd.conf中有一行:
LoadModule wsgi_module /Library/Python/2.7/site-packages/mod_wsgi/server/mod_wsgi-py27.so
用以下行代替:
LoadModule wsgi_module /path/to/.virtualenvs/env34/lib/python3.4/site-packages/mod_wsgi/server/mod_wsgi-py34.so
打破现有的python 2.7 / Flask应用程序并且无法修复我的Django应用程序
Apache错误日志有一些值得注意的错误:
'/path/to/djangoApp/djangoApp/wsgi.py' cannot be loaded as Python module.
ImportError: No module named django.core.wsgi
所以,通过查看其他问题,我得到的印象是运行基于python3.4的应用程序和为python 2.7编译的wsgi存在问题,但鉴于此应用程序在django测试服务器和虚拟环境下运行正常,我无法感觉必须有一种方法可以在生产服务器下实现它。
非常感谢您的帮助
PJ
答案 0 :(得分:0)
读:
您应该避免使用python-path
来引用Python虚拟环境。对于您尝试使用python-path
的方式,它将无法正确使用它。