使用 WAMP 和 mod_wsgi 部署 Django 宁静服务
Deploying Django restfule service using WAMP and mod_wsgi
我正在尝试使用 mod_wsgi 和 WAMP 部署基于 Django 休息框架的 API。
当我使用 'django-admin startproject Predictor' 创建一个新的 Django 项目并将其部署在 WAMP 上时,它工作正常,因为我可以看到默认的 Django window.
现在我在项目中使用 'python manage.py startapp Predictor' 创建了一个应用程序
我构建了一个接受 GET 调用的 API 并使用 'python manage.py runserver' 对其进行了测试并且它工作正常。
现在我再次启动 WAMP 服务并尝试转到 'localhost:8000' 它一直在加载。一旦我停止 WAMP 服务,它就会崩溃并显示无法连接。不确定发生了什么。有人可以帮助我做错什么吗?仅供参考,我在 windows 并且我已经为我的 Django 项目创建了虚拟环境。这就是我的 .conf 和 wsgi 文件的样子
wsgi_windows.py
activate_this = 'C:/Users/DELL/Envs/predenv/Scripts/activate_this.py'
# execfile(activate_this, dict(__file__=activate_this))
exec(open(activate_this).read(),dict(__file__=activate_this))
import os
import sys
import site
# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('C:/Users/DELL/Envs/predenv/Lib/site-packages')
# Add the app's directory to the PYTHONPATH
sys.path.append('C:/Users/DELL/Envs/predenv')
sys.path.append('C:/Users/DELL/Envs/predenv/Predictor')
os.environ['DJANGO_SETTINGS_MODULE'] = 'Predictor.settings'
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Predictor.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
httpd.conf
Listen localhost:8000
Listen [::0]:80
ServerName localhost:8000
LoadFile "c:/python376/python37.dll"
LoadModule wsgi_module "c:/python376/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/python376"
WSGIPythonPath "C:/Users/DELL/Envs/predenv/Predictor"
httpd-vhosts.conf
WSGIPythonPath "C:/Users/DELL/Envs/predenv/Predictor"
<VirtualHost *:80>
WSGIPassAuthorization On
ErrorLog "logs/predictor.error.log"
CustomLog "logs/predictor.access.log" combined
DocumentRoot "C:/Users/DELL/Envs/predenv/Predictor"
WSGIScriptAlias / "C:\Users\DELL\Envs\predenv\Predictor\Predictor\wsgi_windows.py"
<Directory "C:\Users\DELL\Envs\predenv\Predictor\Predictor">
<Files wsgi_windows.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
问题是无法在我的 views.py
中 'import pandas'
要解决这个问题,我必须在我的 apache 'httpd-vhosts.conf' 文件中添加这一行
WSGIApplicationGroup %{GLOBAL}
我正在尝试使用 mod_wsgi 和 WAMP 部署基于 Django 休息框架的 API。 当我使用 'django-admin startproject Predictor' 创建一个新的 Django 项目并将其部署在 WAMP 上时,它工作正常,因为我可以看到默认的 Django window.
现在我在项目中使用 'python manage.py startapp Predictor' 创建了一个应用程序 我构建了一个接受 GET 调用的 API 并使用 'python manage.py runserver' 对其进行了测试并且它工作正常。 现在我再次启动 WAMP 服务并尝试转到 'localhost:8000' 它一直在加载。一旦我停止 WAMP 服务,它就会崩溃并显示无法连接。不确定发生了什么。有人可以帮助我做错什么吗?仅供参考,我在 windows 并且我已经为我的 Django 项目创建了虚拟环境。这就是我的 .conf 和 wsgi 文件的样子
wsgi_windows.py
activate_this = 'C:/Users/DELL/Envs/predenv/Scripts/activate_this.py'
# execfile(activate_this, dict(__file__=activate_this))
exec(open(activate_this).read(),dict(__file__=activate_this))
import os
import sys
import site
# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('C:/Users/DELL/Envs/predenv/Lib/site-packages')
# Add the app's directory to the PYTHONPATH
sys.path.append('C:/Users/DELL/Envs/predenv')
sys.path.append('C:/Users/DELL/Envs/predenv/Predictor')
os.environ['DJANGO_SETTINGS_MODULE'] = 'Predictor.settings'
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Predictor.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
httpd.conf
Listen localhost:8000
Listen [::0]:80
ServerName localhost:8000
LoadFile "c:/python376/python37.dll"
LoadModule wsgi_module "c:/python376/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/python376"
WSGIPythonPath "C:/Users/DELL/Envs/predenv/Predictor"
httpd-vhosts.conf
WSGIPythonPath "C:/Users/DELL/Envs/predenv/Predictor"
<VirtualHost *:80>
WSGIPassAuthorization On
ErrorLog "logs/predictor.error.log"
CustomLog "logs/predictor.access.log" combined
DocumentRoot "C:/Users/DELL/Envs/predenv/Predictor"
WSGIScriptAlias / "C:\Users\DELL\Envs\predenv\Predictor\Predictor\wsgi_windows.py"
<Directory "C:\Users\DELL\Envs\predenv\Predictor\Predictor">
<Files wsgi_windows.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
问题是无法在我的 views.py
中 'import pandas'要解决这个问题,我必须在我的 apache 'httpd-vhosts.conf' 文件中添加这一行
WSGIApplicationGroup %{GLOBAL}