小程序模板网

微信小程序——图片内容分析(上)

2017-12-08 箔经绳

环境的配置本文介绍了技术需求与环境的配置,具体的开发将在“微信小程序——图片内容分析(下)”中详细说明。目标目标是制作一个能在手机上运行的够识别图片内容的程序。这样就需要几个 ...

 
 
 

环境的配置

本文介绍了技术需求与环境的配置,具体的开发将在“微信小程序——图片内容分析(下)”中详细说明。


目标

目标是制作一个能在手机上运行的够识别图片内容的程序。这样就需要几个必要的模块:

1)前端

可以选择的有APP,HTML5,微信小程序。
最近小程序比较火,想要试试手,因此选择了“微信小程序”作为前端展示。微信小程序上传的图片需要后端分析,因此需要一个后端服务器接收。

2)后端

既然是纯学习,最近写python又比较顺手,因此打算采用python框架,通过查询资料,发现了Django,Flask,webpy等框架。Django最为成熟,其他的框架也有优点但是都没试过,怕遇到坑。因此选用了Django作为后端框架。
后端框架选定后就需要服务器框架了,在网上发现都推荐Nginx + uWsgi + Django作为整体开发。

3)识别模块

识别模块这个涉及到近几年都比较火的深度学习,我本来打算自己训练一个专门识别某些类型的模型,但是前提需要收集很多训练集,因此打消了念头,后来发现Google提供识别API。虽然i提供的API只能分大类,但是只是尝试一下也足够了。


小程序页面

小程序的开发环境的搭建就不介绍了,网上很多资料,官方简易教程也说得很详细。这里只提几点需要注意的地方。

1)微信小程序通信协议HTTPS

微信小程序需要通过HTTPS协议和后端通信,并且HTTPS需要第三方认证,而不能自己随意生成一个就行。这里我在腾讯云购买了一个域名并且免费申请的DV ssl证书。

2)图片上传的大小

图片上传的大小需要注意,因为Nginx默认限制为2M(可以修改),如果上传图片的大小超过2M则,返回码为413。

3)微信小程序界面控件

我的微信小程序只用了三种控件:

  1. img类型展示图片;
  2. button类型交互点击上传;
  3. 通过微信小程序API调用modal框展示结果。


后端配置

后端服务器是谷歌云主机,地点选择的是Asia(亚洲) b,Ping值50ms左右,系统选用的Ubuntu 16.04,还挺不错。我使用的版本分别是Nginx 1.10.0,uWsgi 2.0.15,Django 1.10.6,python环境3.5.2。
由于每一步设置完成之后都需要检查是否正确,这会影响到下一步的测试结果,因此我以Django,uWsgi,Nginx的顺序进行介绍。
(提醒:注意检查自带防火墙是否有拦截规则,或者云服务器设置中端口是否开放,这个需要到对应云服务器提供的网页控制台上设置。)

1)Django框架

安装参见Django菜鸟教程具体就不详细说明了,这里要注意下,我使用的是python3.5.2因此在安装的时候使用pip3安装,而不是pip2。安装配置完成后进入项目目录然后执行
$python3 manage.py runserver 0.0.0.0:8000
然后通过服务器ip:8000访问,测试安装配置是否ok。

2)uWsgi安装

我的uWsgi通过pip3安装(pip3 install uwsgi)会自动安装在pypi发布的最新版本。uWsgi配置较为简单,我的配置文件uWsgi.ini详情如下。如需详细了解可以参见uWsgi docs。

[uwsgi]
http-socket = :8001  # 访问端口号
chdir = /my_project/  # django创建项目的绝对路径
wsgi-file = my_project/wsgi.py  # django中wsgi.py的相对路径(相对于/my_project/)
master = true  # 是否设置主进程
processes = 4  # 处理进程数量
threads = 2  # 线程数量
daemonize = /logs/uwsgi.log  # 日志路径
pidfile = /uwsgi.pid  # pid文件,用于管理uWsgi的关闭或者reload

配置完成后,通过命令uwsgi --ini uWsgi.ini启动服务器。
然后通过服务器ip:8001访问,测试安装配置是否ok,如不成功可以查看日志记录检查问题。

3)Nginx配置

cNginx一般作为最外层的服务器,以提供反向代理(即将客户端对Nginx的请求再转发到更内部的服务器)和静态路由服务。
Nginx配置项比较多,如果想要详细了解各项配置的含义建议查看Nginx中文手册,或者Nginx docs。这里只是简单介绍本服务器的配置项。
Nginx一般通过apt安装(命令如:apt-get install nginx),配置文件在目录/etc/nginx/中,名为nginx.conf,这里不要对其的配置项进行修改,因为nginx.conf配置文件中http块中包含 "include /etc/nginx/conf.d/*.conf;"这样一行,加载/etc/nginx/conf.d/目录下所有以.conf结尾的配置文件,所以我们只需要在它指向的目录下新建一个自己的配置块,然后进行配置。
我在/etc/nginx/conf.d/目录下新建了一个名为https.conf的配置文件。

server {
  listen  443;
  server_name mysite;  #这里填域名
  ssl on;  #https模式必须开启
  ssl_certificate my.crt;  #这里是证书
  ssl_certificate_key my.key;  #证书所带的密钥(注意都是绝对路径)
  #charset utf-8;
  access_log  /www/logs/https.access.log;
  error_log /www/logs/https.error.log;
  location / {
    uwsgi_pass    unix:///www/socket.sock;  #这里是用的        unix通信的模式,这个模式在我的测试中比端口通信更快。
    include       uwsgi_params;  #必填
}

配置完成后$:nginx 启动nginx,如果已经启动则$:nginx -s reload 重载配置。
尝试访问443端口是否设置成功。
然后通过服务器https://ip访问,测试安装配置是否ok。


Google vision API

谷歌API的调用需要将在谷歌云上注册(自备梯子)并且绑定VISA等类型的行用卡(国内的不行),这里不细说了。
注册完成之后,开启你需要的API,我这里开启的是Google Cloud APIs。开启API后,在使用python调用时还需要得到授权(这里授权指的是授权你运行代码的服务器),我通过以下方式得到授权。
然后在谷歌虚拟服务器上安装Google Cloud SDK(如果是谷歌虚拟机好像不需要安装??这里忘了),然后执行$:gcloud auth application-default login,这里会获得链接,通过浏览器打开,绑定自己的谷歌云账号,然后就获得了授权。


总结

这里就把环境的搭建介绍完毕了,下一篇中将介绍开发过程。



易优小程序(企业版)+灵活api+前后代码开源 码云仓库:starfork
本文地址:https://www.eyoucms.com/wxmini/doc/course/18095.html 复制链接 如需定制请联系易优客服咨询:800182392 点击咨询
QQ在线咨询