https://blog.csdn.net/m0_52041525/article/details/127830296?spm=1001.2014.3001.5501
vue+django的前后端分离项目部署到windows云服务器的过程具体参考这位大佬的文章,
提醒自己几个地方:
删去前端跨域,将所有axios请求的url直接指向云服务器的ip和端口
pip install django-cors-headers
配置settings.py文件
具体参考https://blog.csdn.net/weixin_38107457/article/details/126688561
例如我后端运行在8020端口,先在服务器防火墙中添加入站规则
再登录到宝塔面板—安全— 放行端口
发现一个很方便测试端口状态的在线网站Ping, mtr, dig and TCP port check from multiple locations
由于我的django后端项目中包含很多深度学习、数据处理的相关依赖,试过用pyinstaller打包,结果是模型打包不进去,打包出来的可执行文件运行各种找不到module,最后放弃了,决定直接把虚拟环境安装到云服务器上运行,前端还是常规的打包上传方式。
以下记录一下部署过程和踩过的坑。
安装anaconda,创建虚拟环境并激活
conda create -n 虚拟环境名 python == 3.7
conda activate 虚拟环境名
安装django和DRF框架
conda install django==3.0
conda install djangorestframework==3.12 // 在settings中注册'rest_framework'
安装pytorch
我这里采用镜像源安装,如果失败的话可以去找whl文件本地安装
pytorch各版本的whl
// 添加镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
// pytorch官网给的命令去掉 -c pytorch
conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=10.2
安装opencv,我这里是找了python3.7对应的whl文件,本地安装
opencv各版本的whl
pip install whl文件的本地路径
pip install D:\pythonspace\whl\opencv_python-4.5.5-cp37-cp37m-win_amd64.whl
安装dlib
pip install cmake -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install boost -i https://pypi.tuna.tsinghua.edu.cn/simple/
conda config --add channels conda-forge
conda install dlib
安装paddlepaddle
pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install paddlehub --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
安装einops
pip install einops -i https://pypi.tuna.tsinghua.edu.cn/simple/
安装transformers
pip install transformers -i https://pypi.tuna.tsinghua.edu.cn/simple/
安装django跨域工具
conda install django-cors-headers
以上虚拟环境中需要的依赖就全部安装好了,只要把后端的代码移植过来,用anaconda prompt控制台打开项目并激活虚拟环境,输入命令 python manage.py runserver 0.0.0.0:8020 指定端口启动后端。
以上在Windows server 2012云服务器中配置虚拟环境的过程,与我在自己电脑上配置的过程完全相同,但是在云服务器上启动后端项目后,控制台报错import cv2 ImportError:DLL load fail
网上的说法大多是opencv版本和python版本不对应导致的,但是我是下载了对应python版本的whl文件本地安装的,而且在自己的电脑上调用完全没有问题,所以我想到可能问题出在云服务器上
最后,查阅网上的资料得知,可能因为Windows server 2012服务器有个桌面体验的模块没有安装,导致无法加载调用opencv所需的一些dll文件
https://blog.csdn.net/AlierSnow/article/details/122174486
服务管理器 => 所有服务器 => 添加角色和功能
一直下一步到功能,将桌面体验功能勾上,安装并重启服务器
解决windows server 2012 上 import cv2 ImportError:DLL load fail 的问题
此外,启动后台还遇到了找不到模块"six"的问题,pip install six就好了,不清楚为什么自己电脑上没有这个步骤可以正常运行,但是服务器上需要。