小程序:疫情防控系统踩坑填坑细节记录

趁着还没开学,赶紧找时间记录一下最近做的一个项目,收获很大。
希望能够对你有所帮助。

项目需求:

1、搜集用户每日体温等相关情况。
2、用户每次只需输入体温即可。
3、用户每日只可填写一次,并在规定时间段内填写。
4、用户注册时应当与学生数据库进行比对,验证失败则无法使用。
5、后台需要统计每日完成情况。

项目总耗时:一周
头发总消耗:100根以上·
项目全过程痛并快乐着: )

环境记录:

服务器系统:windows2008R2 X64(阿里云)
后端:Flask(python3.7)
数据库:mysql
Web服务器:Apache2.4

服务器建议还是采用linux,win我在后期部署的时候被整整折磨了两天: (
如果想买服务器建议一定要先备案,在哪个平台买的服务器就在哪备案。

开发记录:

细节1:微信不允许开发者强制获取用户信息。
解决方案:引导用户点击按钮来拉取授权。

细节2:用户登录后,我将用户信息上传至服务器,(openid,用户名,头像)openid是用户在小程序中的唯一标识码。而unionid是公众号标识码。由于没有申请公众号,所以没获取到unionid。

小程序登录流程表:

微信官方文档说明,不应当把openid直接传给用户。但由于时间有限,我把openid存入用户的本地缓存,请求时openid作为唯一session。

获取授权:用户点击按钮后判断有没有授权信息,如果授权了那就直接请求服务器获取openid并存入本地,如果未授权那就拉起授权,否则提示授权失败。
code如下:

  login: function () {
    wx.getSetting({
      success: function (e) {
        if (!e.authSetting['scope.userInfo']) {//如果没有授权信息
          wx.authorize({//拉取授权信息
            scope: 'scope.userInfo',
            fail: function () {
              wx.showToast({
                title: '登陆失败请重试',
                icon: "none"
              })
            }
          })
        }
      },
    })
  }

细节3:页面刷新细节:(ps:每个页面都可以设置是否开启下拉刷新)当用户下拉页面时,调用onShow();此时ret为0;页面的request请求成功;此时ret为1,此时下拉函数判断如果ret为1则刷新成功,wx.stopPullDownRefresh()来停止刷新;再设ret为0;如此重复即可。

  onPullDownRefresh: function () {
    this.onShow()
      if(this.data.ret=='1'){
        wx.stopPullDownRefresh();
        this.setData({
          ret:'0'
        })
      }
  }

细节4:三级联动,
当一级为110000,则二级为 110100,则三级为 110101
当一级为110000,则二级为 110100,则三级为 110102
当一级为110000,则二级为 110200,则三级为 110201
当一级为120000,则二级为 120100,则三级为 120101

后端环境部署记录

本文主要是为了记录这个大坑而存在的。

阵容:apache2.4+flask+mod_wsgi+amd64

如果是用python的flask写的后端,而且是做的小程序后端,服务器是windows环境的,可以按照我的步骤部署下去。

1、python安装,本人用的是python3.7

2、falsk安装。pip install flask

3、apache下载。apache下载地址
按照自己的系统位数下载,x86为32位,x64为64位,python3.7选择VC15

4、mod_wsgi下载mod_wsgi下载地址
wsgi的版本一定不要选错。
ap24=>apache2.4
vc15=>参考这篇文章python不同版本对应VC

我的是1914,应该选择VC15
cp37=>python3.7
amd64=>windows64位架构
在这里插入图片描述
5、apache下载完成后解压至c盘根目录,打开c:/Apache24/conf/httpd.conf
修改以下:
在这里插入图片描述

在这里插入图片描述

监听服务器端口1111,需要在阿里云配置安全规则。同时在本机入站规则中添加1111端口

去掉如下几个注释
LoadModule alias_module modules/mod_alias.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf

此时把wsgi安装至系统环境,pip install 绝对路径/<wsgi文件名.whl>
安装成功后在cmd下输入mod_wsgi-express module-config
输入后会得到wsgi的配置信息,将配置信息复制到如图所示的位置即可。
在这里插入图片描述

在中间位置找到<Directory /> ... </Directory>,改为
<Directory / >
AllowOverride All
Require all granted
< / Directory >Apache2.4服务器权限设置问题
在文档最后加上

<VirtualHost *:1111 >
DocumentRoot C:\Users\Administrator\PycharmProjects\wechat
WSGIScriptAlias / C:\Users\Administrator\PycharmProjects\wechat\go.wsgi
<Directory “C:\Users\Administrator\PycharmProjects\wechat”>
Require all granted
</ Directory>
</ VirtualHost>

DocumentRoot是项目路径
WSGIScriptAlias是wsgi文件路径,后面一定要加上反斜杠,表示路由
Directory表示目录

至此,已经完成了web服务器大概配置。由于小程序在请求时要求使用https协议,所以还要去获取证书以及在服务器上安装证书。
参考申请免费的腾讯云SSL证书,实现https访问
将证书上传至服务器,放入C:\Apache24\conf\ssl该文件夹。
在这里插入图片描述
配置证书:打开C:\Apache24\conf\extra\httpd-ssl.conf
在这里插入图片描述

<VirtualHost *:1111>
ServerName example.com:1111
WSGIScriptAlias / C:\Users\Administrator\PycharmProjects\wechat\go.wsgi
<Directory "C:\Users\Administrator\PycharmProjects\wechat">
Require all granted 
</Directory>
SSLEngine on
SSLCertificateFile"${SRVROOT}/conf/ssl/2_example.com.crt
SSLCertificateKeyFile"${SRVROOT}/conf/ssl/3_example.com.key"
SSLCertificateChainFile "${SRVROOT}/conf/ssl/1_root_bundle.crt"
</VirtualHost>

至此,https部署完毕。

在项目文件夹创建go.wsgi
go.wsgi

import sys
flaskPath = 'c:/Users/Administrator/PycharmProjects/wechat'
sys.path.insert(0, 'C:/Users/Administrator/PycharmProjects/wechat/venv')
if flaskPath not in sys.path:
    sys.path.insert(0, 'C:/Users/Administrator/PycharmProjects/wechat')
from asd import app
application=app

插入我们项目的虚拟环境,from 你的py import app
application = app 中application不可修改,因为wsgi中明确了application
至此,整个后端部署完毕

cmd => cd c:/Apache24/bin
=> httpd -k install

ps:当你在部署环境中发现了问题,一定要去查看错误提示,httpd -t 可在cmd中查看错误

发布了1 篇原创文章 · 获赞 0 · 访问量 71

猜你喜欢

转载自blog.csdn.net/qq_43234873/article/details/104437557