一个域名、一个SSL证书、一个程序账号、一台CentOS服务器。
然后主要的步骤就是:
1、解析域名;
2、部署服务器;
3、上传SSL证书;
4、填写小程序后台配置。
顺序没有绝对要求。
解析域名,在你买的域名管理控制台中,可以看到。
主机记录可以写www/a/b/c都可以,数字也可以,只要是域名允许的字符串。记录值就要写你的服务器的IP地址。
小程序有实例demo,可以下载下来,实验配套的源码
然后你需要在实验源码中的app.js中编辑你的通信域名:
App{
config: {
host: 'yourdomain.com' //这个地方写你的域名
},
onLaunch () {
console.log('App.onLaunch()');
}
}
部署服务器(CentOS 7.6)搭建HTTP服务
第一步、安装NodeJS和NPM,使用下面的命令安装NodeJS 和测试命令;
#curl --silent --location https://rpm.nodesource.com/setup_8.x |
sudo bash - yum install nodejs -y
安装完成后,可以通过命令检查时候安装成功。
# node v
编写HTTP Server 的源码
在服务器创建工作目录
#mkdir -p /data/release/weapp
进入这个工作目录
#cd /data/release/weapp
创建package.json
在刚才创建的工作目录创建package.json
# vim package.json
然后在键盘输入法为英文状态下,按“i”键。代表"insert" 输入:
{
"name": "weapp"
"version": "1.0.0"
}
完成后
先按esc 在按: <----注意这个是个冒号,就是要按冒号出来,然后再按shift+1,再按q 回车,退出。
好了就已经完成输入并且保存了。
添加Server源码
在工作目录创建app.js,使用Express.js在监听8765端口,可参考下面的示例。
/**
* Created by x0rz on 21/01/2018.
*/
const express = require('express');
const app = express();
app.use( (require, response, next) => {
reponse.write("Response from express");
reponse.end();
});
const port = 8765;
app.listen(port);
conse.log(`Server Listening at http://127.0.0.1:$(port)`);
运行HTTP 服务
安装PM2
# npm install pm2 --global
安装Express
#cd /data/release/weapp
#npm install express --save
启动服务器,安装完成后,需要用PM2来启动命令
#cd /data/release/weapp
# pm2 start app.js
此时您的HTTP已经可以运行了,
http://yourip/youdomain.com:8765
要看服务器输出的日志,可以查看:
# pm2 log
如果要重启服务,请使用下面的命令
# pm2 restart app
搭建HTTPS服务
安装Nginx
# yum install nginx -y
启动
# nginx
此时,您的http://yourdomain.com可以看到Ngxin页面。
重启命令:
# nginx -s reload
配置Nginx反向代理
外网用户访问服务器的Web服务器有Nginx提供,Nginx需要配置反向代理才能使得Web服务转发到本地的Node服务。将之前准备好的SSL证书解压后上传到/etc/nginx文件夹中。
##########关于上传SSL证书的过程,将单独写教程#################
教程将会Apache、Nginx搭配Ubuntu/CentOS的部署方法。
安装数据库
MangoDB
# yum install mongodb-server mongodb -y
安装结束后,查看版本
# mangod --version
添加MangoDB用户
##略
实现小程序的会话
安装Node模块
#cd /data/release/weapp
#npm install connect-mongo wafer-node-session --save
在工作目录创建配置文件config.js ,用于我们保存服务器所有的配置,
module.exports = {
serverPort: '8765',
// 小程序 appId 和 appSecret
// 请到 https://mp.weixin.qq.com 获取 AppID 和 AppSecret
appId: 'YORU_APP_ID',
appSecret: 'YOUR_APP_SECRET',
// mongodb 连接配置,生产环境请使用更复杂的用户名密码
mongoHost: '127.0.0.1',
mongoPort: '27017',
mongoUser: 'weapp',
mongoPass: 'weapp-dev',
mongoDb: 'weapp'
};
编辑app.js, 添加会话逻辑
// 引用 express 来支持 HTTP Server 的实现
const express = require('express');
// 引用 wafer-session 支持小程序会话
const waferSession = require('wafer-node-session');
// 使用 MongoDB 作为会话的存储
const MongoStore = require('connect-mongo')(waferSession);
// 引入配置文件
const config = require('./config');
// 创建一个 express 实例
const app = express();
// 添加会话中间件,登录地址是 /login
app.use(waferSession({
appId: config.appId,
appSecret: config.appSecret,
loginPath: '/login',
store: new MongoStore({
url: `mongodb://${config.mongoUser}:${config.mongoPass}@${config.mongoHost}:${config.mongoPort}/${config.mongoDb}`
})
}));
// 在路由 /me 下,输出会话里包含的用户信息
app.use('/me', (request, response, next) => {
response.json(request.session ? request.session.userInfo : { noBody: true });
if (request.session) {
console.log(`Wafer session success with openId=${request.session.userInfo.openId}`);
}
});
// 实现一个中间件,对于未处理的请求,都输出 "Response from express"
app.use((request, response, next) => {
response.write('Response from express');
response.end();
});
// 监听端口,等待连接
app.listen(config.serverPort);
// 输出服务器启动日志
console.log(`Server listening at http://127.0.0.1:${config.serverPort}`);
源码编写完成,需要重启服务。
# pm2 restart app
其他的模块,比如有WebSocket服务,原理都是通过.js文件来实现,不过要安装相应的Node模块。
后台的逻辑就不介绍了
总结:
没啥总结了。还有Windows和Ubuntu。