点击上方蓝字,长按关注不迷路。
经过几周的本地调试和云端部署,我的第二款应用级小程序终于上线了。写过许许多多的小程序,也见过许多的打卡小程序,但是接下来的这个,一定是很人性化的那个,它的名字叫 扫码考勤记 ,很自豪地推荐给大家,无论是班级活动打卡,还是公司年会打卡,这款打卡小程序都有用武之地。
其界面风格如下:
可点击小程序码快速体验。
操作说明
- 新建打卡任务可复制邀请码或二维码邀请好友参加。
- 在 任务管理->我的参与 界面,点击可查看打卡详情,长按可删除。
- 如未打开 GPS;快速打卡页数据刷新会不及时。
- 可打卡的范围是任务地点 1 km 以内;可打卡的时间是打卡截止时间前两个小时以内。
开发流程
小程序原生开发,用到了 ColorUI、QRCode 等第三方组件。
数据库使用 MySQL,一共三个表,其中两个实体表 users 和 tasks,分别表示用户和打卡任务,以及一个弱实体集 usertask,表示用户参与了哪些打卡任务;后台采用了 Flask,虽然说是轻量级 web 框架,但是应付几万的并发,还是没问题的,更何况后面还用了 nginx 负载均衡。
辛辛苦苦编好了界面,写好了接口,准备上线了,但是发现小程序只能通过备案后的域名访问,于是我就申请了域名,备案又等了两周,这里有个坑提醒下,有些后缀的域名是不能备案的,但是不能备案的域名会被逐渐批准,具体可以网上查询,还有就是 .cn 的域名特别难备案,有需要购买阿里云服务器的同学可阅读原文直达购买地址,顺便说一句,我采用的服务器系统镜像是 Ubuntu 16.04,自带的 Python3.5.2 环境。
uwsgi/nginx/supervisor
在等待备案的同时,先用 ip 地址做云端调试,主要采用 uwsgi nginx supervisor 技术路线。
第一次接触的同学可能对这三个东西一脸懵逼,且听我一一道来。
- nginx:nginx (engine x) 是一个高性能的 HTTP 和反向代理web服务器,其特点是占有内存少,并发能力强。阿里云服务器的 nginx 配置文件路径是 /etc/nginx/sites-available/default,修改完之后重启 nginx 就好。
- uwsgi:用来处理 Python 代码的应用服务器,Flask 自带的测试服务器不足以支撑在实际生产应用中的使用。阿里云服务器的 uwsgi 配置文件路径没有要求,可直接放在项目目录下,命名为 config.ini,使用命令 uwsgi --ini config.ini 即可通过公网 ip flask 项目运行的端口访问服务器。
- supervisor 在出现 uwsgi 异常退出的时候,supervisor 可以让这个服务自动重启。即作为守护进程使用。阿里云服务器 supervisor 的配置文件路径是 /etc/supervisor/conf.d/flaskCfg.conf,和上面两个配置一样,可上网搜相应的配置方法。
这三个东西的协调配合,保证了我们的后台稳定运行。
web 服务器/应用服务器/web 应用框架
web 服务器(给静态网页) | 应用服务器(主要处理逻辑层) | web应用框架 |
---|---|---|
负责处理 http 请求,响应静态文件,常见的有 Apache,Nginx 以及微软的 IIS。 | 负责处理逻辑的服务器。比如 php、python 的代码,是不能直接通过 nginx 这种 web 服务器来处理的,只能通过应用服务器来处理,常见的应用服务器有 uwsgi、tomcat 等。 | 一般使用某种语言,封装了常用的 web 功能的框架就是web应用框架,flask、Django以及 Java 中的SSH(Structs2 Spring3 Hibernate3)框架都是 web应用框架。 |
当我们在浏览器输入 URL 请求的时候,如果请求的是静态资源,则 web 服务器立即返回给浏览器,如果发送的是逻辑请求,则 web 服务器将请求给应用服务器处理。
代码暂不开源,毕竟辛辛苦苦的劳动成果,但是欢迎私戳我交流。
欢迎大家体验,有什么优化建议请在留言区吐槽。
往期精选
Python 个性化二维码制作
图说高考录取分数线