自己部署 Node.js 版本的 Wafer2 Demo

自行部署适用于想将腾讯云 Wafer SDK 和 Demo 部署在自己的服务器上以获得更高的灵活性和操纵权限的用户。部署过程需要从 0 开始搭建线上环境,需要有一定的 Linux、Node.js 基础。如果您符合以上需求和条件,可以开始按本文自行部署。

本文基于以下环境:

Wafer SDK 的数据库仅支持 5.7 及以上版本的 MySQL。为了生产环境的稳定,采用云数据库而非自行搭建。
云服务器和云数据库必须在同一个腾讯云账号下,否则内网 IP 无法连通。

安装 Nginx

Node.js 是单进程的,我们可以通过多开 Node.js 并配合 Nginx 来实现多进程 Node.js 负载均衡,并且一些静态文件我们也可以直接通过 Nginx 代理,提高性能。其中第一步就是安装 Nginx。

通过 SSH 连接上云服务器,直接使用包管理工具 yum 安装 Nginx 即可:

yum -y install nginx

安装完成之后会显示 Complete!,可以通过如下命令检查 Nginx 是否安装成功:

nginx -v

这个命令会显示 Nginx 的版本号,如果显示如下信息,则安装成功:

安装 Node.js

Wafer 的 Demo 需要 7.6 以上版本的 Node.js 才能运行,目前最新版本为 8.x,yum 本身不提供 Node.js 的源,所以首先我们得切换源:

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

接着就可以直接通过 yum 安装了:

yum -y install nodejs

同理,我们可以通过如下命令验证 Node.js 是否安装成功:

node -v

该命令会返回当前 Node.js 的版本号,如果你看到了版本号大于 7.6,则 Node.js 安装成功:

开启 SFTP

SFTP 是一种安全的文件传输协议,我们可以通过 SFTP 把本地的文件上传到服务器上,通过以下命令检查 sftp 状态:

service sshd status

看到输出的信息中有 active (running) 则表示 sshd 进程已经开启,可以通过 sftp 连接:

接下来可以通过 FileZilla、Transmit 等 FTP 工具连接上服务器。

配置 Nginx 和 HTTPS

完成以上准备工作,就要开始配置 Nginx 和 HTTPS 了,首先需要申请一个 SSL 证书,可以到腾讯云申请免费的 SSL 证书,申请成功之后下载证书,并把压缩包中 Nginx 目录下的证书文件通过 SFTP 上传到服务器的 /data/release/nginx 目录,如果没有这个目录则新建:

上传完证书以后,可以开始配置 Nginx,进入服务器的 /etc/nginx/conf.d 目录,新建一个 weapp.conf 文件,将文件拷贝到本地,打开编辑,写入如下配置(请将配置里 wx.ijason.cc 修改为你自己的域名,包括证书文件):

upstream app_weapp {
    server localhost:5757;
    keepalive 8;
}

server {
    listen      80;
    server_name wx.ijason.cc;

    rewrite ^(.*)$ https://$server_name$1 permanent;
}

server {
    listen      443;
    server_name wx.ijason.cc;

    ssl on;

    ssl_certificate           /data/release/nginx/1_wx.ijason.cc_bundle.crt;
    ssl_certificate_key       /data/release/nginx/2_wx.ijason.cc.key;
    ssl_session_timeout       5m;
    ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers               ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
    ssl_session_cache         shared:SSL:50m;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://app_weapp;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

修改完将这个文件上传到服务器上,然后在 ssh 中输入:

nginx -t

如果显示如下信息,则配置成功:

配置成功之后,输入 nginx 回车,即可启动 Nginx。

此时通过配置的域名访问服务器,会显示 Nginx 详情页:

如果访问 http://你的域名/weapp/a 会自动跳转到 HTTPS 上,并显示 502 Bad Gateway,则表示配置成功:

上传 Demo 和启动

Wafer2-quickstart 仓库下载最新的 Demo 代码,修改 server/config.js

const CONF = {
    port: '5757',
    rootPathname: '',

    // 微信小程序 App ID
    appId: '',

    // 微信小程序 App Secret
    appSecret: '',

    // 是否使用腾讯云代理登录小程序
    useQcloudLogin: true,

    /**
     * MySQL 配置,用来存储 session 和用户信息
     * 若使用了腾讯云微信小程序解决方案
     * 开发环境下,MySQL 的初始密码为您的微信小程序 appid
     */
    mysql: {
        host: '云数据库内网IP',
        port: 3306,
        user: 'root',
        db: 'cAuth',
        pass: '云数据库密码',
        char: 'utf8mb4'
    },

    cos: {
        /**
         * 区域
         * 华北:cn-north
         * 华东:cn-east
         * 华南:cn-south
         * 西南:cn-southwest
         * 新加坡:sg
         * @see https://cloud.tencent.com/document/product/436/6224
         */
        region: 'cn-south',
        // Bucket 名称
        fileBucket: 'qcloudtest',
        // 文件夹
        uploadFolder: ''
    },

    // 微信登录态有效期
    wxLoginExpires: 7200,
  
    // 其他配置 ...
    serverHost: '你的域名',
    tunnelServerUrl: 'http://tunnel.ws.qcloud.la',
    tunnelSignatureKey: '27fb7d1c161b7ca52d73cce0f1d833f9f5b5ec89',
  	// 腾讯云相关配置可以查看云 API 秘钥控制台:https://console.cloud.tencent.com/capi
    qcloudAppId: '你的腾讯云 AppID',
    qcloudSecretId: '你的腾讯云 SecretId',
    qcloudSecretKey: '你的腾讯云 SecretKey',
    wxMessageToken: 'weixinmsgtoken',
    networkTimeout: 30000
}

module.exports = CONF

接着将 server 目录下的所有文件都上传到 /data/release/weapp 目录下:

使用 SSH 切换到代码目录:

输入以下命令切换 npm 源到腾讯云镜像,防止官方镜像下载失败:

npm config set registry http://mirrors.tencentyun.com/npm/

接着安装全局依赖:

npm install -g pm2

然后安装本地依赖:

npm install

接着对数据库进行初始化,进入云数据库控制台,点击要使用的云数据库进去,再点击右上角“登录数据库”按钮。在弹出的页面中输入数据库账号密码进入数据库管理控制台,点击菜单栏的“返回 PMA”,在界面中点击左侧栏中的“新建”,输入数据库名为 cAuth,排序规则为 utf8mb4_unicode_ci,点击“创建”创建数据库:

接着返回 SSH,使用 Demo 代码里的 tools/initdb.js 工具初始化数据库:

node tools/initdb.js

初始化成功则会提示“数据库初始化成功!”

最后启动 Node.js 程序

node app.js

完成

顺利完成以上操作,就完成了 Wafer Demo 在自己服务器上的部署。直接访问 http://你的域名/weapp/login,会提示:

{"code":-1,"error":"ERR_HEADER_MISSED"}

则表示配置成功。你现在可以使用开发者工具来进行联调测试啦!

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序猿

linux 系统命令大全

系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # ...

3577
来自专栏云计算教程系列

如何在Ubuntu 16.04上使用Apache设置密码身份验证

在运行网站时,网站的某些部分通常会限制访问者。Web应用程序可以提供自己的身份验证和授权方法,但如果Web服务器不足或不可用,也可以使用Web服务器本身来限制访...

1065
来自专栏三丰SanFeng

scrapy初体验 - 安装遇到的坑及第一个范例

scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。scrapy的安装稍显麻烦,不过按照以下步骤去进行,相信你也能很轻松的安装使用scrapy。

2118
来自专栏小程序解决方案的专栏

自己部署 PHP 版本的 Wafer2 Demo

自行部署适用于想将腾讯云 Wafer SDK 和 Demo 部署在自己的服务器上以获得更高的灵活性和操纵权限的用户。部署过程需要从零开始搭建线上环境,需要有一定...

5.5K1
来自专栏向治洪

android studio JNI使用

Step: 1. 添加native接口注意写好native接口和System.loadLibrary()即可了,并无特别之处。 Step: 2.执行Bu...

1938
来自专栏Objective-C

iOS-UISearchController 的 Bug 之 Attempting to load the view of a view controller while it is dealloca

3378
来自专栏社区的朋友们

如何使用 Python 开发 iOS 程序?

本文介绍了如何用 Python 开发 iOS 程序,其实最主要解决的就是下面三件事情:一是在 iOS App 中安装 Python 解释器,二是搭建 Pytho...

1.9K0
来自专栏木子昭的博客

开启Python3自带的http服务

图片发自简书App python -m http.server 如果你的计算机上已经安装了python3,运行上面的命令后,python会在当前命令行模式所在的...

3184
来自专栏指路者

如何远程控制局域网内的电脑评论(0)

,比如在公司有的同事有某个问题上不会解决,需要用到远程控制帮他操作。还有很多的游戏代练公司需要由一个人同时操作好几台的电脑,在每台电脑上都登录着不同的游戏账号进...

882
来自专栏小狼的世界

在Centos 5.2下编译安装LAMP

首先使用Virtualbox安装一台CentOS 5.2的虚拟机,网络连接采用 Host-only Adapter,这样主客机之间可以互相访问,但是客机不能够上...

702

扫码关注云+社区