本帖最后由 nvjwiciw659 于 2020-5-27 16:22 编辑
感谢这次UCloud的赞助,我直接去体验了一把免费服务器,现在简单记录一下我搭建环境的过程。
主要有mqtt服务器,nodered,mysql,ssl认证等,我这边用的是CentOS 7.6 64位系统
以下需要服务器开放部分端口
EMQ:1883 8083 8883 8084 18083
WSS:443
MYSQL:3306
1.Xshell连接
2.更新yum源
yum update(第一次漫长等待)
3.安装docker
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
设置仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装docker
yum install docker-ce docker-ce-cli containerd.io
启动docker
systemctl start docker
验证
docker run hello-world
成功
4.docker部署EMQ(mqtt服务器)
获取镜像(我安装的是3.0.1版本)
docker pull emqx/emqx:v3.0.1
启动
docker run -d --name emqx31 -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v3.0.1
查询
docker ps
登录查询
成功
5.配置nginx(备案过的域名和我偷偷在我某里云申请的免费SSL证书)(不需要用微信小程序的可以直接跳过)
此步是用于监听443端口,并代理到mqtt服务器,如果只是个人玩玩可以不用证书,但是微信小程序需要发布的话必须需要SSL认证
安装make工具
yum -y install gcc automake autoconf libtool make
安装g++
yum install gcc gcc-c++
安装pcre正则表达式,因为nginx的rewrite模块和http核心模块都是使用它
yum install pcre pcre-devel
获取 nginx
wget http://nginx.org/download/nginx-1.18.0.tar.gz
解压
tar -vzxf nginx-1.18.0.tar.gz
使配置文件nginx生效
cd nginx-1.18.0/ && ./configure
zlib提供压缩算法
yum install zlib zlib-devel
安装OpenSSL库
yum install openssl openssl-devel
JS的webSocket协议头的库
wget https://codeload.github.com/openresty/headers-more-nginx-module/tar.gz/v0.33
解压
tar -vzxf v0.33
添加模块openSSL和headers-more-nginx-module-0.33(地址要填对)
./configure--prefix=/usr/local/nginx--add-module=/root/nginx-1.18.0/headers-more-nginx-module-0.33 --with-http_stub_status_module --with-http_ssl_module
开始编译nginx代码
make && make install
查看当前编译后有哪些模块生效了
cd /usr/local/nginx/sbin && ./nginx -V
修改nginx的配置文件
cd /usr/local/nginx/conf && vim nginx.conf
server {
listen 443;
server_name 《域名》;
ssl on;
ssl_certificate cert/domainname.pem;
ssl_certificate_key cert/domainname.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
location = /mqtt {
# 8083就是我们的emq的websocket的端口号
proxy_pass http://《域名》:8083;
proxy_redirect off;
proxy_set_header Host 《域名》:8083;
proxy_set_header Sec-WebSocket-Protocol mqtt;
#more_clear_headers Sec-WebSocket-Protocol;
# 这些都是 websocket必须要配置的
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
查询配置文件语法
cd /usr/local/nginx/sbin&& ./nginx -t
重新加载配置文件
cd /usr/local/nginx/sbin&& ./nginx -s reload
这时候访问域名
有锁,成功(测试小程序未连接)
发现问题
新版本的nginx采用新的方式进行监听https请求了
listen 443;
ssl on;
改为
listen 443 ssl;
再测试成功
6.docker部署数据库MYSQL
部署(最新版本)
docker pull mysql:latest
运行
docker run -itd --name mysql-ucloud -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<密码> mysql
查询
docker ps
直接Navicat Premium里连接测试
成功
7.docker部署Noed-red(用于mqtt数据转发至数据库)
一步到位
docker run -it -p 1880:1880 --name mynodered nodered/node-red
转后台
Ctrl+p和Ctrl+q
网页看一看
成功
8.测试微信小程序
漂亮!
环境已经搭建好了,之后的继续努力!
这些都是总结于各位大佬,有阿正,半颗心脏,Mculover666以及网上的各类资源,多亏各位大佬的分享,才能少走了很多弯路,万分感谢!
|
@鲁亮 :先搭建,到时候用不用再说哈哈,不一定能做那么高级,时间估计不允许
感觉你这个要比我的idea高大上许多呀