【Yolov5】部署落地的实现踩坑过程

背景:本项目旨在部署Yolov5这个算法,让其有一个简单的途径使用,比如微信小程序,APP,网站等,这里是计划在微信小程序与Web网页上进行部署

开发时需要的包有flask, gevent, 需要的软件docker(安装在服务器上)


微信云托管

笔者最初的想法是想要把Yolov5这个项目利用微信体系内的云托管功能,让其成为一个容易调用的服务,但是在尝试过程中遇到了很多问题。

  1. 首先官方文档提示,上传代码压缩包不能超过2M,但是模型本身的参数文件就以及超过这个数了,在实际操作过程中发现虽然违反了规定,但还是可以上传成功的。
  2. 其次就是当我把代码上传部署时,一直部署失败,但是界面没有报错的代码,反反复复折腾了半天,经排查发现是部署超时了,超过了10分钟,系统就会提示部署失败,到这里说明此路不通。

腾讯云服务器

首先就是准备需要的工具,买好云服务器后安装 Docker
, 用XShell远程连接等等,把代码上传后进行buildrun, build时有warningrun时则爆了error

  1. 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,先放在一边。

  2. 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,成功解决问题😁。
    在这里插入图片描述

其他容易忽略的配置

  1. 首先就是微信小程序会自动拦截外来的域名,我们需要在微信公众平添对我们访问的域名添加白名单。
  2. 在腾讯云购买了普通的云服务器后,需要在防火墙进行端口的配置,只有在安全组中的端口才能被访问到,否则也是会被拦截的,无法获得服务器上的服务。
    在这里插入图片描述

证书的问题

经过上面的操作基本可以跑通了,但是小程序客户端要求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 <Greenlet at 0x169b655a220: _handle_and_close_when_done(<bound method StreamServer.wrap_socket_and_handle , <bound method StreamServer.do_close of <WSGIServer, (<gevent._socket3.socket [closed] at 0x169b65491c0)> failed with SSLError

这个报错是说证书未知,经过搜寻发现是因为证书颁发机构不可信,暂时找不到解决方案,当我直接把写好的代码放到服务器上,用docker生成镜像并运行后,发现服务可以正常使用了,不知道为什么会这样🤷‍♂️。
在这里插入图片描述
但是在edge浏览器上仍然是显示网站不可信。
在这里插入图片描述
推测可能是因为域名的问题,申请证书时是和域名绑定的,而在本机上直接用IP访问,没有体现SSL证书和域名的关系,如果用域名访问部署好的服务就没有问题。
在这里插入图片描述
如果使用公网IP访问,则edge这边会有提示,服务器也会报错
在这里插入图片描述
在这里插入图片描述

最后一步,在微信公众平台配置服务器域名。无语,最后还是要在工信部备案,还以为在腾讯云提交了申请就万事大吉了,原来那只是注册
在这里插入图片描述

域名备案

备案的时候记得第一步就要选择与身份证上相对应的省份,而不要选择通信地址,博主就是应该开始选错了,导致后面需要上传居住证与暂住证,这些资料当然是没有的,结果全部流程又重新走了一遍。
在这里插入图片描述
之后基本就是走流程,等待几个工作日,在此期间有腾讯云的工作人员向你打电话核实情况。等腾讯云将备案资料递交当局后,工业和信息化部会发一条短信过来,我们需要登陆相关网站进行短信验证。
在这里插入图片描述

结果展示

域名备案还没好,可以先用自己的电脑作为服务器做做测试,可以看到微信小程序这边是没有问题的

再来看看网页这边,可以看到效果还是很不错的,再花点时间打磨一下就可以用了
在这里插入图片描述
有一些经验的话,花费一些时间根据参考博客已经做出这些项目了,如果需要源代码,博主的qq:3566951974

最后,在这个过程中参考了相当多的博客,其中的一些有:
https://www.51cto.com/article/705100.html 基本模板,漂亮的UI😊
https://blog.youkuaiyun.com/qq_44935078/article/details/126147175 灵感来源
https://blog.youkuaiyun.com/m0_51287945/article/details/128296976 Docker的下载与安装
https://blog.youkuaiyun.com/szylight2022/article/details/127786058 这个大赞,库不对的问题困扰了我很久👍
https://stackoverflow.com/questions/59117076/gevent-ssl-with-godaddy-error-ssl-sslerror-ssl-sslv3-alert-certificate-unkno IT问答,给出了如何添加SSL证书的解答

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值