部署微信小程序服务器

我们自行把这个框架部署到自己购买的云服务器中。官方文档建议我们购买一个云服务器和一个云数据库。这里由于我们是学习,为了省钱,我们只购买一个云服务器,然后自己在云服务中安装一个mysql数据库。

另外大家有什么其他部署方案,也请指点。

配置服务器过程中我遇到的一些疑问

为什么有了node还要安装nginx?

可以使用nginx代理来实现负载均衡等功能,方法后续扩展。

环境

我是购买了一个腾讯云服务,并且购买了一个域名并且备案。

云服务器安装的系统是Centos 7.6

安装Nginx

yum -y install nginx

nginx -v

开启nginx

nginx

重启nginx

nginx -s reload

停止nginx

nginx -s stop

安装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 -

可以把上面的8.x改为最新版本12.x,因为现在node的最新版本是12

yum -y install nodejs

 

node -v

查看到版本信息代表安装成功

安装Mysql

下载mysql安装包

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

安装mysql源

yum localinstall mysql57-community-release-el7-8.noarch.rpm

安装MySQL

yum install mysql-community-server

启动MySQL服务

systemctl start mysqld

查看MySQL的启动状态

systemctl status mysqld

mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码:

grep 'temporary password' /var/log/mysqld.log

登录mysql:登录后会进入mysql的命令行模式

mysql -u root -p

 

mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码!';

新建数据库

新建一个数据库名为 cAuth,排序规则为 utf8mb4_unicode_ci。数据库名必须和小程序文件中的保持一致,可自行修改。命令结束别忘了写分号;如果输入命令后显示的是 -> 提示符,很有可能是没写分号。

mysql> CREATE DATABASE IF NOT EXISTS cAuth DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;

开启SFTP

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

service sshd status

看到绿色的actiov(running)状态表示服务已经开启

配置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 替换成服务器域名; rewrite ^(.*)$ https://$server_name$1 permanent; } server { listen 443 ssl; server_name 替换成服务器域名; 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; } }

其中有一行是

listen 443 ssl;

官方版本是

listen 443;

ssl on;

是版本差异导致的。

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

nginx -t

看结果是否OK

然后输入nginx启动服务

测试一下接口是否可以,现在是应该显示502错误页面

上传服务器代码

Github仓库地址:Wafer2-startup ,使用小程序开发工具开发工具打开Demo源码(别忘了填写AppID)

配置server/config.js

const CONF = { port: '5757', rootPathname: '' /data/release/weapp' , //服务器上server文件夹地址与此处一致 // 填写微信小程序 App ID appId: 'wx33333', // 填写微信小程序 App Secret appSecret: 'wx22222', // 是否使用腾讯云代理登录小程序 useQcloudLogin: false, // 可直接使用微信登陆小程序 因为使用阿里云改为false /** * MySQL 配置,用来存储 session 和用户信息 * 若使用了腾讯云微信小程序解决方案 * 开发环境下,MySQL 的初始密码为您的微信小程序 appid */ mysql: { host: '服务器IP',//很多文档都写的云数据库内网IP,关于这一点我写的服务器公网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: '你的域名', //以下配置可以留空不填 但是参数一定要有 一定要有 一定要有 否则会报错,node启动不了 tunnelServerUrl: '',//腾讯云信道服务地址 很多文档里写的地址打开直接404 tunnelSignatureKey: '', // 可以注册一个腾讯云账号,获取一下配置。腾讯云相关配置可以查看云 API 秘钥控制台: https://console.cloud.tencent.com/capi qcloudAppId: '你的腾讯云 AppID', qcloudSecretId: '你的腾讯云 SecretId', qcloudSecretKey: '你的腾讯云 SecretKey', wxMessageToken: 'weixinmsgtoken', networkTimeout: 30000 } module.exports = process.env.NODE_ENV === 'local' ? Object.assign({}, CONF, require('./config.local')) : CONF;

都配置好以后,将server文件里的所有代码上传到服务器上的/data/release/weapp目录下,要与前文的 rootPathname: '' /data/release/weapp' 一致。

服务器安装依赖

进入到weapp目录里,输入以下命令切换npm 源到淘宝镜像,防止官方镜像下载失败:(不切换也无所谓)

npm config set registry https://registry.npm.taobao.org

使用npm全局安装pm2

npm i -g pm2

然后常规操作,安装package.json里的依赖:

npm i

使用 Demo 代码里的 tools/initdb.js 工具初始化数据库:

node tools/initdb.js

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

启动项目

npm start

这里需要学习 node 的一些插件 pm2 nodemon 这些都是干啥的,有什么洋的启动机制。

顺利完成以上操作后,也就完成了 Wafer2 Demo 在自己服务器上的部署。

直接访问 http://你的域名/weapp/login,会提示:{"code":-1,"error":"ERR_HEADER_MISSED"},则表示配置成功。现在就可以使用开发者工具来进行联调测试啦!(终于完成了!!!)

版权申明:本站文章均来自网络,如有侵权,请联系01056159998 邮箱:itboby@foxmail.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

猜你还会喜欢下面的内容

    无相关信息

中国领先的互联网域名及云服务提供商

为您提供域名,比特币,P2P,大数据,云计算,虚拟主机,域名交易最新资讯报道

域名注册云服务器