Win10服务器IIS上部署项⽬(Vue前端+Python-Django后端整合)
部署⽅式
最初打算将Django项⽬部署到Nginx服务器,此部署除了需要Nginx服务器外,还需要⼀个和Nginx服务器进⾏通信的协议软件-----uwsgi。
可是,经过尝试,最终没能成功将uwsgi安装在win10服务器上,搜到关于uwsgi教程都是在linux上的部署。服务器都是win10,所以最终选择部署在IIS上。
Django+Vue的项⽬,实际部署的时候有两种⽅法:
1.在Django上集成vue,也就是在settings.py配置templates⽬录到vue的dist⽬录,这样可以实现在Django的服务上直接调取vue前端,后端api还是使⽤Django的。
2.Django⾃⼰启服务,只提供API,vue⾃⼰启动服务,只提供前端。⽐如Django部署在IIS,Vue前端部署在nginx上,然后通过代理访问后端。
刚开始采⽤第⼆种⽅法,最后前后端代理死活调不通,最后采⽤了第⼀种⽅法。
部署的前提是前后端分别能够各⾃运⾏且请求正常。
具体的实现步骤参考⼤佬的⽂章:
本项⽬主要参考第⼀个教程
踩坑环节:
1.FastCGI添加环境变量的时候,DJANGO_SETTINGS_MODULE路径是settings.py⽂件的路径,笔者的路径是settings⽂件夹下的dev.py⽂件,所以路径是第三⾏。后端根⽬录下的fig⽂件中路径保持⼀致。
Name:DJANGO_SETTINGS_MODULE
Value:drf_admin.settings(drf_admin是⾃⼰的项⽬名称)
Value:drf_admin.settings.dev
本项⽬根⽬录下fig⽂件配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appSettings>
<add key="WSGI_HANDLER" value="_wsgi_application()"/>
<add key="PYTHONPATH" value="%ROOTDIR%"/>
<add key="DJANGO_SETTINGS_MODULE" value="drf_admin.settings.dev"/>
</appSettings>
<system.webServer>
<handlers>
<remove name="DjangoFastCgiModule"/>
<add name="DjangoFastCgiModule" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\E:\drf_admin-master\wf astcgi.py" resourceType="Unspecified"/>
</handlers>
<directoryBrowse enabled="true"/>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
</modules>
</system.webServer>
</configuration>
2.settings/dev.py配置:
DEBUG= False
ALLOWED_HOSTS=['*']
STATIC_ROOT='E:\drf_admin-master\static'      # 后端静态⽂件路径
STATICFILES_DIRS=[
os.path.join(BASE_DIR,"E:\\drf_admin-master\\frontend\\dist\\static\\"),
]                                              # 前端静态⽂件路径
3.前后端其实都是在各⾃的服务器上的,Django在127.0.0.1:8000上,Vue在127.0.0.1:8080上,我们需要把他们放到⼀起,此时就需要⽤到Django的TemplateView,将其指向我们刚才⽣成的前端⼯程frontend下的dist⽂件即可。
到内层drf_admin⽂件夹下的urls.py,修改代码如下:
from ic import TemplateView
path('', TemplateView.as_view(template_name="index.html")),
由于我们使⽤了Django的模板系统,所以需要配置⼀下模板使Django知道从哪⾥到index.html。在 内层drf_admin⽂件夹下的settings/dev.py下,修改代码如下:
TEMPLATES=[
{
nginx部署前端项目
'BACKEND':'plate.backends.django.DjangoTemplates',
'DIRS':['E:\\drf_admin-master\\frontend\\dist\\'],
'APP_DIRS': True,
'OPTIONS':{
'context_processors':[
't_processors.debug',
'quest',
't_processors.auth',
'ssages',
],
},
},
]
4.接⼝中查询是GET请求,新增是POST请求,⽽修改是PUT请求,删除是DELETE请求,IIS服务通常都是⽀持get和post请求的,由此分析推断很有可能是IIS不⽀持put和delete谓词请求。
解决⽅案(针对当前⽹站,去除WebDav 模块):
修改根⽬录下fig⽂件,在system.webServer标签中添加:
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
</modules>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。