搭建微信小程序教程:基于CentOS 7.6的教程

一个域名、一个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。

原文发布于微信公众号 - 数据库SQL(SQLdba)

原文发表时间:2018-01-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏pydata

develop tools about python

vagrant介绍 vagrant是一款用来构建虚拟开发环境的工具,非常适合php/python/ruby/java这类语言开发Web语言,如果说virtual...

7720
来自专栏技术博客

Google免费的SVN服务器管理VS2010代码

Google免费为我们提供了代码管理的SVN服务器。首先我这里用的Win7 64的电脑系统,用VS2010进行的代码开发。这里管理代码需要以下准备(现在用的都是...

27010
来自专栏smy

gulp rev manifest 添加目录前缀

gulp-rev 生成的manifest默认为: "index.css": "index.css?v=04aff97a7b",   为避免同名文件覆盖版本号,对...

35460
来自专栏IT技术精选文摘

Nginx内容缓存

介绍 当启用缓存时,NGINX Plus将响应保存在磁盘缓存中,并使用它们来响应客户端,而不必每次都为同一内容代理请求。 启用响应缓存 要启用缓存,请在...

34890
来自专栏更流畅、简洁的软件开发方式

【自然框架】——Demo(一)

  这是一个应用自然框架写的一个“配置信息管理程序”,目的就是管理配置信息的,因为自然框架最主要的就是“配置信息”也就是元数据,那么这个配置信息要怎么管理?手动...

243100
来自专栏游戏杂谈

Windows环境下EditPlus运行Perl程序

在linux/unix环境下使用perl当然很方便了,常用的Vim就能搞定。但毕竟工作的机器使用的是Windows,又不想嫌麻烦去安装虚拟机(机器又会变慢),所...

18340
来自专栏后端技术探索

关于PHP脚本和浏览器连接深入解析

当 PHP 脚本正常地运行 NORMAL 状态时,连接为有效。当远程客户端中断连接时,ABORTED 状态的标记将会被打开。远程客户端连接的中断通常是由用户点击...

21610
来自专栏bluesummer

用Windbg来分析.Net程序的dump

介绍 1. 什么是Windbg WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还...

41660
来自专栏开源优测

[接口测试_B] 02 Pytest的简单示例

Pytest是什么 Pytest是Python的一个测试工具,可以用于所有类型和级别的软件测试。Pytest是一个可以自动查找到你编写的用例并运行后输出结果的测...

32940
来自专栏程序员互动联盟

【专业技术】linux启动流程剖析

半年前,我写了《计算机是如何启动的?》,探讨BIOS和主引导记录的作用。 那篇文章不涉及操作系统,只与主板的板载程序有关。今天,我想接着往下写,探讨操作系统接管...

37370

扫码关注云+社区

领取腾讯云代金券