5.4 Nginx服务器部署
5.4 Nginx服务器部署Nginx是高性能的http服务器/web反向代理服务器,其结构小巧、占用内存少、并发能力强,被广泛的应用在网站开发领域。Nginx代码是用C语言写的,因此运行速度在同类产品中具有很强的优势。Nginx同样也不属于系统预装软件,需要用户去官网下载。具体步骤如下:
1)登陆官网下载安装包,地址如下http://nginx.org/
2)下载“nginx-1.6.3.tar.gz”到当前路径
3)执行解压命令tar zxvf nginx-1.6.3.tar.gz
4)进入nginx-1.6.3文件夹,依次执行以下命令进行安装./configureMakeSudo make install
5)默认安装到/usr/local/nginx/目录,进入此目录cd /usr/local/nginx/
6)启动sudo sbin/nginx到此nginx安装就已完成,但是要想与uwsgi服务器联通,还需要进一步配置,具体过程如下:
1)打开conf/nginx.conf文件sudo gedit conf/nginx.conf
2)在server节点下添加新的locat ...
5.3 uwsgi服务器部署
5.3 uwsgi服务器部署在生产环境中使用WSGI作为python web的服务器。WSGI:全拼为Python Web Server Gateway Interface,Python Web服务器网关接口,是Python应用程序或框架和Web服务器之间的一种接口,被广泛接受。WSGI没有官方的实现, 因为WSGI更像一个协议,只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行。uWSGI实了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器。uWSGI代码完全用C编写,效率高、性能稳定。安装部署uwsgi服务器步骤如下:
1)安装uwsgi
pip install uwsgi
2)配置uWSGI,在项目目录下创建uwsgi.ini文件,配置如下:1234567891011121314[uwsgi]#使用nginx连接时使用#socket=127.0.0.1:8080#直接做web服务器使用http=127.0.0.1:8080#项目目录chdir=/home/python/Desktop/pytest/te ...
5.2 WEB后端实现
5.2 WEB后端实现WEB后端理论上通过编写个http服务端,用户访问http服务器时,通过解析url来返回用户访问的画面,就可以搭建个轻量级的网站。此方法我在实际测试中也得到了验证,但是存在一个致命的问题就是用这种方式搭建起来的网站,在压力测试中,表现很差,仅仅能满足测试环境的需求。对于生产环境,远远要比这复杂。本设计使用“nginx+uwsgi+django”的模式,以实际生产环境为标准,进一步完善后端服务器,实现数据可视化。
Web后端框架如上图所示,浏览器访问web服务器请求首先会通过nginx负载均衡服务器,nginx会根据请求内容,将请求内容分为动态文件和静态文件两种,静态文件由nginx直接处理后返回给浏览器,动态文件会转发给uwsgi服务器来进行处理,uwsgi通过操作django框架完成动态数据的处理,将渲染后的数据再交给nginx,然后由nginx返回给浏览器。所以web后端实现分为三部分,分别为:django项目搭建,uwsgi服务器部署,nginx服务器部署。设计将围绕这三部分开展。
5.2.1 Django项目搭建Django框架是一款用python语言写 ...
第五章 WEB数据可视化
第五章 WEB数据可视化5.1 前端页面设计 检测网络中各个数据采集节点将环境数据上传到云端服务器,云端服务器将环境数据存入数据库后,为了更直观的了解环境状况,需要将数据以可视化的方式表现出来。本次设计选用WEB的方式将数据通过浏览器渲染出来,无论是电脑端还是手机端都可以通过浏览器访问服务器地址实时监测实际环境的数据。 Web数据可视化实际上是分为两个部分来实现的,分别是前端页面设计,以及后端数据处理。前端页面采用html+Css3+h5的结构来设计,后端数据处理是http服务器把利用从mysql数据库读取的内容渲染网页模板,将渲染后的网页数据发送给用户移动终端展示。前端页面采用第三方插件,绘制数字仪表、统计图、饼图,使环境数据能够直观的展示给用户。
4.5 接入第三方云服务器
4.5 接入第三方云服务器 在智能家居迅速发展的今天,大公司为了抢占市场拉拢客户,通常会建设自己的物联网开放平台,为中小型企业提供“设备云服务”,其实这与前面提到的“第三方云服务器”类似,运营模式也几乎一样,第三方平台给你提供开发环境和必要的网络服务,开发者只需负责业务开发,并提供一定的费用,即可完成业务的快速上线。中小型企业选用第三方物联网平台做为自己的设备服务器其实是有它自身理由的。首先,能够运营开放平台的基本都属于大公司,并且在物联网行业起步要早,技术相对成熟,中小企业为了在市场竞争中立于不败之地,选用大公司的开放平台来开发自己的业务更有保障。其次,搭建一套商用化物联网平台是昂贵的,涉及到技术相对复杂,开发需要的人力资源较大,且开发周期较长,更新维护、升级优化等都需要一大笔支出。中小企业往往需要的是快速推出自己的物联网产品,在系统建设、平台构建方面带来的利益短时间内并不明显,使用第三方平台开发是一个不错的选择。最后,因物联网行业仍处于初期阶段,大公司在互联网时代通用的战略,通常是先“圈地”,拉拢足够的用户,在行业比较稳定时,通过增收服务费来运营。就拿近两年“滴滴出行”、 ...
4.4 MQTT服务端搭建
4.4 MQTT服务端搭建 Mqtt服务端作为控制网络的核心,起到连接各个控制设备,实现指令转发,数据处理等作用。Mqtt服务端的搭建与TCP、UDP、HTTP等常见的Client-Server模型有些不一样,它还需要一个broker 代理,且mqtt编程需要依赖名为“paho-mqtt”的模块,为此,我们要再次配置开发环境,步骤如下:下载安装“paho—MQTT”模块:
sudo pip install paho-mqtt添加环境变量:source paho-mqtt/bin/activate下载 broker 代理:sudo apt-get install mosquitto mosquitto-clients启动代理:sudo server mosquitto startbroker 代理启动起来后就可以来编写服务端了。具体代码如下所示:
12345678910111213141516171819#导入模块import paho.mqtt.client as mqtt #定义一个连接回调函数def on_connect(client, userdata, fla ...
4.3 TCP服务端搭建
4.3 TCP服务端搭建 TCP通信要明白的“三次握手”,“四次挥手”在前面章节以详细说明了,其实在实际的开发过程中,并不需要过多的去关注整个TCP通信建立的过程,你所使用的后端语言,都已经将通信的过程封装成一个个函数,只需要学会如何使用这些函数,去完成相应的功能即可。基于python 语言的TCP服务器搭建,一般分为一下几个步骤:
1234567891011# 导入socket模块包From socket import * #创建sockettcp_server_socket = socket(AF_INET,SOCK_STREAM) # 本地信息address=('',8000) # 绑定 tcp_server_socket.bind(address)tcp_server_socket.listen(128)client_socket,clientAddr=tcp_server_socket.accept()while True:recv_data = client_socket.recv(1024) # 接收1024个字节print('接 ...
4.2 搭建开发环境
4.2 搭建开发环境 选用腾讯云、百度云、阿里云任何一家的云服务器作为开发主机,三大运营商为了资助高校人才培养,占领校园市场,都有针对校园用户的低价套餐,只需通过校园认证后,就可以购买到10元一个月学生套餐,当然服务器的配置也就是最低配置了。各个运营商之间稍有差异,具体配置大都为:单核CPU、2G运存、40G磁盘、1Mbps带宽,作为日常开发学习,也足够了。 这里我选用腾讯云的服务器作为本设计的开发平台,购买服务器的时候,系统会让选择预装的操作系统,操作系统选择通常选用自己熟悉的linux系统就可以,不同的linux系统只是操作指令稍微有些不同,性能方面相差不大,没有好坏之分。当然预装系统是可以选用windows的,但个人感觉windows环境下做后端服务器应用的开发很不方便,所以还是推荐使用linux系统来完成开发任务,在后续的开发过程中,我使用的是Centos7.5操作系统。因为购买的服务器是运营商提供的,我们接下来的开发都是通过远程链接到服务器上进行的,所以运营商会让你选择是否购买公网IP,当然学生用户会免费赠送公网IP的,这里不需要过多关注。要注意的是,运营 ...
4.1服务器设计
第四章 后端服务器搭建4.1服务器设计 服务器作为物联网智能家居系统的核心,不仅是起到连接各个采集控制终端设备的作用,对于数据处理,控制决策,人机交互等涉及大数据处理,以及数据可视化、逻辑控制的操作,也是由服务器来承担的。因此服务器在整个控制系统中扮演着重中之重的角色。 服务器可以从组成上大致分为两部分:服务器物理机,应用服务器。服务器物理机就是由CPU、内存、磁盘、总线等组成,和通用计算机类似的物理机。而应用服务器,就是文章上述提到的针对应用程序搭建的TCP、MQTT、TCP、UDP等运行在物理机上的服务器软件。因此,搭建一台基于物联网的智能家居服务器,也要同时具备硬件和软件两个部分。虽然普通的个人电脑可以充当服务器硬件的角色,但是实际的运行性能和专业的服务器仍然存在不小的差距。然而专业的服务器价格昂贵,需要定期维护,且功耗大,单电费也是一笔不小的开支。所以对于个人或者前期测试系统的开发,一般会选用购买云服务器,来搭建测试服务器。当然,云服务器环境也可以作为正式环境来使用。那么,何为云服务器?云服务器是由第三方运营商提供的一种服务,第三方运营商将物理服务器通过租用 ...
3.2硬件程序设计
3.2 程序设计 硬件设备程序要根据硬件电路进行设计,对于数字信号控制的外围设备,不论选用哪种单片机,它的控制方式包括控制程序都几乎一样,单片机控制数字量输入输出是最基本的操作,所以这里就不在赘述。本节主要是针对特殊设备驱动、控制进行驱动设计,以及常用的I2C、SPI、usart等协议的实际应用。在硬件电路设计时提出两种控制方案,值得注意的是在这两种方案中都用到了ESP8266模块,但在不同方案中esp8266充当的角色是不同的,在MCU+ESP8266方案中ESP8266作为wifi模块使用,只负责数据传输,设备联网。在单独使用ESP8266实现控制的方案中,ESP8266作为控制器使用,可对外围传感器进行直接控制,且也保留了作为wifi模块的所有功能。前者与后者相比,前者开发简单方便,后者开发难度稍大。
3.2.1 ESP8266作WIFI模块 ESP8266一般情况下通常用作wifi模块使用,所以esp8266模组出厂就内置了AT固件包,买回来的时就能直接使用。那么,什么是AT固件包呢?AT固件包就是AT指令的集合,MCU通过串口向esp8266模组 ...