物联网学习之旅---微信小程序控制STM32

搭建物联网环境

搭建物联网服务器的方式有很多种,趁着腾讯云服务器,还有域名没过期,我把物联网服务器建在我的云服务器上了。不过我也试过通过花生壳进行内网穿透,把物联网服务端建在本地,其实原理都是差不多的。

  1. 第一步:在云服务器上安装EMQ

    因为我的云服务器是Windows的所以这里我下载的Windows版本,这是网址:
    EMQX官网
    打开官网可以下载emqx broker,也有使用文档,可以参考。
    下载之后的压缩包解压之后是这样的
    在这里插入图片描述
    打开bin目录,在bin目录中按住shift点击鼠标右键,在弹出菜单栏中选“在此处打开命令行”,输入emq命令。
    在这里插入图片描述
    此时出现的是可操作命令,输入emqx install开始安装,在命令行可以重新输入时表示安装成功,然后输入“emqx start”启动emqx服务。
    打开浏览器输入“localhost:18083”
    在这里插入图片描述完成这部分操作就算安装成功了,默认的账号是admin,密码是public。
  2. 第二步:安装wnmp套件
    我使用的是宝塔服务器套件,这里主要用到的是Nginx,但是因为我的云服务器还要搭建我的个人网站所以我用的是wnmp套件。最开始我打算自己一步一步的分别将nginx,mysql,php安装上但是太麻烦了,所以最后选择使用宝塔面板,傻瓜式的安装。
    在官网上下载完毕后点击安装即可,下面主要是配置过程。我在购买云服务器的时候,也购买了一个域名(注意要备案哦,不然域名不能用,备案大概需要十多天),同时腾讯云也会送一个ssl证书,可以到腾讯云助手申请,这些都是缺一不可的。因为微信小程序的安全机制,如果要通过域名连接物联网服务器,必须要在项目配置中配置合法域名。在这里插入图片描述
    箭头中第一个是我在花生壳购买的域名,第二个是我在腾讯云上购买的域名,都是要有安全证书的,宝塔面板可以安装安全证书。在浏览器端打开宝塔面板,在设置中进行配置。
    在这里插入图片描述
    申请好的证书,会有一个压缩包打开有Apache,IIS,Nginx,Tomcat版本的,点开Nginx版本,将***.crt打开全部复制到“证书(PEM格式)”中,再把**.key打开全部复制到“密钥(KEY)”然后保存,可以打开强制HTTPS开关,打开后就只能通过HTTPS来访问。
    注意:如果不能通过域名访问,说明端口没有开放,web端宝塔面板的端口是8888,所以需要在安全组中进行配置开放,腾讯云的端口似乎既要在云服务器控制台安全组开放,又要在云服务器的防火墙中打开才行。
    在这里插入图片描述
    在这里插入图片描述
    这些是我的安全组,在云服务器控制台配置好安全组,然后在云服务器中把对应端口打开即可。
  3. 第三步:配置反向代理
    安装好wnmp套件还需要对Nginx的配置文件配置,因为微信小程序默认用443端口,而我们要使用的是8083端口来连接mqtt服务端,所以需要用到Nginx来做反向代理,让服务器监听443端口,然后转发8083端口,这样就可以通过微信小程序连接到mqtt服务端啦。
    在这里插入图片描述
    在Nginx网站配置文件中添加这样一段
    location = /mqtt {
			proxy_pass http://www.domain.com:8083; #修改为你的域名
			proxy_redirect off;
			proxy_set_header Host 0.0.0.0:8083;  #修改为你的服务器IP
			
			proxy_set_header Sec-WebSocket-Protocol mqtt;
			
			proxy_http_version 1.1;
			proxy_set_header Upgrade $http_upgrade;
			proxy_set_header Connection "upgrade";
	} 

以下是完整的配置文件:

server 
{
    listen 80;
	listen 443 ssl;
    server_name www.domain.com; 
    index index.php index.html index.htm default.php default.htm default.html;
    root C:/wwwroot/www.domain.com/.../public/;
		
	#START-ERROR-PAGE
	#error_page 403 /403.html;
	error_page 404 /404.html;
    #error_page 502 /502.html;
	#END-ERROR-PAGE
    
    #HTTP_TO_HTTPS_START
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
    #HTTP_TO_HTTPS_END

    #LIMIT_INFO_START
    #LIMIT_INFO_END

    #SSL-INFO-START
    ssl_certificate    ssl/www.domain.com/fullchain.pem;
    ssl_certificate_key    ssl/www.domain.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    error_page 497  https://$host$request_uri; 
    #SSL-INFO-END
        
    #反代清理缓存配置
    location ~ /purge(/.*) {
        proxy_cache_purge cache_one $1$is_args$args;
    }
   location = /mqtt {
			proxy_pass http://www.domain.com:8083;
			proxy_redirect off;
			proxy_set_header Host 0.0.0.0:8083;
			
			proxy_set_header Sec-WebSocket-Protocol mqtt;
			
			proxy_http_version 1.1;
			proxy_set_header Upgrade $http_upgrade;
			proxy_set_header Connection "upgrade";
	}
    #proxy 反向代理
    include proxy/www.domain.com/*.conf;

    #PHP-INFO-START 
    include php/54.conf;
    #PHP-INFO-END
    
    #REWRITE-START
    include rewritewww.domain.com/*.conf;
    #REWRITE-END

    #redirect 重定向
    include redirect/www.domain.com/*.conf;

    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
	location / {
		if (!-e $request_filename) {
		rewrite ^(.*)$ /index.php?s=$1 last;
		break;
		}
	}
	access_log  C:/BtSoft/wwwlogs/www.domain.com.log;
    error_log  C:/BtSoft/wwwlogs/www.domain.com.error.log;
}

注意这个网站目录下的Nginx配置文件,在首页中在这里插入图片描述
在这里插入图片描述
点击之后可以修改全局的Nginx配置文件,那既然有全局的配置文件,网站的配置文件是怎么生效的呢
在这里插入图片描述
全局配置这里引入了站点的配置文件,所以可以生效了。

参考:https://blog.csdn.net/xh870189248/article/details/84070944

个人能力有限,有什么错误的地方欢迎指正,有问题也可以提,可以一起探讨

发布了2 篇原创文章 · 获赞 2 · 访问量 1114

猜你喜欢

转载自blog.csdn.net/m0_46225622/article/details/105183833