背景:本项目旨在部署Yolov5这个算法,让其有一个简单的途径使用,比如微信小程序,APP,网站等,这里是计划在微信小程序与Web网页上进行部署
开发时需要的包有flask
, gevent
, 需要的软件docker(安装在服务器上)
笔者最初的想法是想要把Yolov5这个项目利用微信体系内的云托管功能,让其成为一个容易调用的服务,但是在尝试过程中遇到了很多问题。
首先就是准备需要的工具,买好云服务器后安装 Docker
, 用XShell远程连接等等,把代码上传后进行build
与run
, build
时有warning
,run
时则爆了error
warning
:
第一个,WARNING: Running pip as the ‘root’ user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
这个是说以root身份运行pip可能破坏系统包管理器权限破坏与行为冲突,建议我们换个虚拟环境,但是由于作者对docker
不熟,不知道怎么处理,鉴于它是个warning
,先放在一边。
error
:
第一个,ImportError: libGL.so.1: cannot open shared object file: No such file or directory
在执行编译好的镜像时,报了一个错,无法找到共享文件,网上的解释是缺了一个包,解决方法是要么
apt update
apt install libgl1-mesa-glx
要么
yum install mesa-libGL-devel
但是因为centoOS版本的问题,在Dockerfile里面编写
RUN yum install mesa-libGL-devel
会导致无法识别yum
命令,这个方法也没有什么用☹️。
最后的解决方案是把requirements.txt文件里,依赖包中的opencv-python
换为opencv-python-headless
,成功解决问题。
经过上面的操作基本可以跑通了,但是小程序客户端要求TSL证书版本>=1.2,于是我还得去弄一个证书,真是一步一个坑,好在这次我知道是什么问题。
证书需要放在服务器中,首先在自己的电脑上实验,当我把申请到的ssl证书从腾讯云下载下来,放到自己电脑的文件夹中,这样添加证书然后进行https请求时报了一堆的错误。
server = pywsgi.WSGIServer(('0.0.0.0', 5000), app,
keyfile='ssl/****.key', certfile='ssl/****.crt')
error
:
ssl.SSLError: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] sslv3 alert certificate unknown (_ssl.c:1129)
2023-03-26T05:45:07Z
这个报错是说证书未知,经过搜寻发现是因为证书颁发机构不可信,暂时找不到解决方案,当我直接把写好的代码放到服务器上,用docker生成镜像并运行后,发现服务可以正常使用了,不知道为什么会这样♂️。
但是在edge浏览器上仍然是显示网站不可信。
推测可能是因为域名的问题,申请证书时是和域名绑定的,而在本机上直接用IP访问,没有体现SSL证书和域名的关系,如果用域名访问部署好的服务就没有问题。
如果使用公网IP访问,则edge这边会有提示,服务器也会报错
最后一步,在微信公众平台配置服务器域名。无语,最后还是要在工信部备案,还以为在腾讯云提交了申请就万事大吉了,原来那只是注册
备案的时候记得第一步就要选择与身份证上相对应的省份,而不要选择通信地址,博主就是应该开始选错了,导致后面需要上传居住证与暂住证,这些资料当然是没有的,结果全部流程又重新走了一遍。
之后基本就是走流程,等待几个工作日,在此期间有腾讯云的工作人员向你打电话核实情况。等腾讯云将备案资料递交当局后,工业和信息化部会发一条短信过来,我们需要登陆相关网站进行短信验证。
域名备案还没好,可以先用自己的电脑作为服务器做做测试,可以看到微信小程序这边是没有问题的
再来看看网页这边,可以看到效果还是很不错的,再花点时间打磨一下就可以用了
最后,在这个过程中参考了相当多的博客,其中的一些有:
https://www.51cto.com/article/705100.html 基本模板,漂亮的UI
https://blog.csdn.net/qq_44935078/article/details/126147175 灵感来源
https://blog.csdn.net/m0_51287945/article/details/128296976 Docker的下载与安装
https://blog.csdn.net/szylight2022/article/details/127786058 这个大赞,库不对的问题困扰了我很久
https://stackoverflow.com/questions/59117076/gevent-ssl-with-godaddy-error-ssl-sslerror-ssl-sslv3-alert-certificate-unkno IT问答,给出了如何添加SSL证书的解答