独立部署小程序基于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的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
我的NodeJs学习小结(一)
Jul 06 NodeJs
Nodejs极简入门教程(二):定时器
Oct 25 NodeJs
nodejs开发微博实例
Mar 25 NodeJs
nodeJs爬虫获取数据简单实现代码
Mar 29 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
浅谈NodeJs之数据库异常处理
Oct 25 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
nodejs 使用 js 模块的方法实例详解
Dec 04 NodeJs
NodeJS http模块用法示例【创建web服务器/客户端】
Nov 05 NodeJs
Nodejs + sequelize 实现增删改查操作
Nov 07 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
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
PHP 转义使用详解
2013/07/15 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
2016/04/12 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
Vue.js tab实现选项卡切换
2017/05/16 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
2017/05/17 Javascript
vue2.0 中使用transition实现动画效果使用心得
2018/08/13 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
python障碍式期权定价公式
2019/07/19 Python
python mysql断开重连的实现方法
2019/07/26 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
Django前后端分离csrf token获取方式
2020/12/25 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
房屋出售协议书
2014/04/10 职场文书
《画风》教学反思
2014/04/16 职场文书
表扬信格式模板
2015/05/05 职场文书
追讨欠款律师函
2015/05/27 职场文书
2015秋季新学期开学寄语
2015/05/28 职场文书
Python+Appium新手教程
2021/04/17 Python
mysql事务对效率的影响分析总结
2021/10/24 MySQL