独立部署小程序基于nodejs的服务器过程详解


Posted in NodeJs onJune 24, 2019

前言

完全自定义的部署小程序服务器, 不依托于腾讯云服务器体系.

以阿里云服务器为基础建立.

服务器语言选用nodejs.

目的

  • 实现https基本访问请求
  • 实现会话管理
  • 实现socket长连接
  • 一个基于socket的小游戏

源代码在这里:

基础要求

  • 有一台服务器(在外网能访问的服务器)
  • 有一个已经备案的域名(必须备案)
  • 有一个已经申请的https证书域名(二级即可)

客户端代码:

独立部署小程序基于nodejs的服务器过程详解

独立部署小程序基于nodejs的服务器过程详解

我的实验环境:

服务器:阿里云云服务器ecs

备案域名: 9z9z.vip

https证书(ca证书): (免费型DV SSL)

https证书申请域名: wuxing.9z9z.vip

配置nodejs环境

登录服务器, 安装nodejs环境

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
yum install -y nodejs

查看nodejs版本.

node -v

安装配置mongode环境

# 安装mongodb及客户端工具
yum install mongodb-server mongodb -y
#建立mongo数据和日志存储目录
mkdir -p /data/mongodb
mkdir -p /data/logs/mongodb
# 启动mongo
mongod --fork --dbpath /data/mongodb --logpath /data/logs/mongodb/weapp.log
# 键入mongo控制台,添加用户
mongo
> use weapp;
> db.createUser({ user: 'weapp', pwd: 'weapp-dev', roles: ['dbAdmin', 'readWrite']});
或者 
db.addUser({ user: 'weapp', pwd: 'weapp-dev', roles: ['dbAdmin', 'readWrite']}); 
> exit;

安装pm2, nodejs服务器管理器

npm install pm2 -g

修改源代码中的appid和appSecretId

在, 微信小程序后台, 设置->开发设置中获取.

独立部署小程序基于nodejs的服务器过程详解

上传源代码中的server目录到服务器目录,安装node依赖包

npm install

启动服务器

pm2 start app.js

配置nginx, 部署https证书

安装nginx服务器

yum install nginx -y

将申请的ssl证书上传到/etc/nginx目录中.

打开新建配置/etc/nginx/conf.d/ssl.conf

# WebSocket 配置
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 443;
server_name wuxing.9z9z.vip; # 改为绑定证书的域名
# ssl 配置
ssl on;
ssl_certificate 214355946590.pem; # 改为自己申请得到的 crt 文件的名称或者绝对路径
ssl_certificate_key 214355946590.key; # 改为自己申请得到的 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;
# WebSocket 配置
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
location / {
proxy_pass http://127.0.0.1:8765;
}
}

重新启动nginx

service nginx reload
或者 nginx -s reload

此时直接在浏览器中会有正常输出的字符串:Response from express

服务器配置成功.

设置小程序的服务器域名

打开小程序后台, 设置 -> 开发设置. 设置服务器域名

独立部署小程序基于nodejs的服务器过程详解

打开小程序开发工具

配置appid

独立部署小程序基于nodejs的服务器过程详解

打开app.js, 将config.host改为设置的网址."wuxing.9z9z.vip"

独立部署小程序基于nodejs的服务器过程详解

完成.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
nodejs命令行参数处理模块commander使用实例
Sep 17 NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 NodeJs
Nodejs为什么选择javascript为载体语言
Jan 13 NodeJs
nodejs 整合kindEditor实现图片上传
Feb 03 NodeJs
Nodejs初级阶段之express
Nov 23 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
浅谈nodejs中的类定义和继承的套路
Jul 26 NodeJs
nodejs判断文件、文件夹是否存在及删除的方法
Nov 10 NodeJs
nodeJS进程管理器pm2的使用
Jan 09 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
nodejs提示:cross-device link not permitted, rename错误的解决方法
Jun 10 NodeJs
Nodejs 微信小程序消息推送的实现
Jan 20 NodeJs
nodejs实现获取本地文件夹下图片信息功能示例
Jun 22 #NodeJs
NodeJs 模仿SIP话机注册的方法
Jun 21 #NodeJs
通过Nodejs搭建网站简单实现注册登录流程
Jun 14 #NodeJs
NodeJs生成sitemap站点地图的方法示例
Jun 11 #NodeJs
nodejs提示:cross-device link not permitted, rename错误的解决方法
Jun 10 #NodeJs
Nodejs异步流程框架async的方法
Jun 07 #NodeJs
nodejs log4js 使用详解
May 31 #NodeJs
You might like
php代码优化及php相关问题总结
2006/10/09 PHP
深入PHP empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
Prototype最新版(1.5 rc2)使用指南(1)
2007/01/10 Javascript
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
JS 实现双色表格实现代码
2009/11/24 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
顶部缓冲下拉菜单导航特效的JS代码
2013/08/27 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
js格式化时间的方法
2015/12/18 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
js实现文本上下来回滚动
2017/02/03 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
python实现udp数据报传输的方法
2014/09/26 Python
python字典get()方法用法分析
2015/04/17 Python
Python字典底层实现原理详解
2019/12/18 Python
浅谈tensorflow模型保存为pb的各种姿势
2020/05/25 Python
什么是Python中的匿名函数
2020/06/02 Python
Python+unittest+requests 接口自动化测试框架搭建教程
2020/10/09 Python
python mock测试的示例
2020/10/19 Python
python跨文件使用全局变量的实现
2020/11/17 Python
4S店售后客服自我评价
2014/04/09 职场文书
中秋寄语大全
2014/04/11 职场文书
多媒体教室标语
2014/06/26 职场文书
2014年度个人总结范文
2015/03/09 职场文书
修辞手法有哪些?
2019/08/29 职场文书
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python
Java方法重载和方法重写的区别到底在哪?
2021/06/11 Java/Android
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB