Node.js搭建小程序后台服务

 更新时间:2018年01月03日 08:36:28   作者:Wenke  
最近在做微信的应用号小程序开发,小程序的后台数据接口需要https安全请求,所以需要我的nodejs服务器能够提供https的支持,现在就将整个https服务器的搭建过程说一下

准备条件

一台服务器

SSL证书,小程序规定必须要https协议

服务器后台

Node.js
express
mongodb
pm2

下面以腾讯云主机(centos)为例

安装Node.js

yum install nodejs

也可以安装nvm,用nvm管理nodejs版本

安装git

yum install git

连接到远程代码库

以github为例:

配置用户信息

git config --global user.name youname
git config --global user.email youemail

生成ssh公钥

ssh -keygen -t rsa -C youemail

默认生成目录为 /root/.ssh
在目录中找到id_rsa.pub文件,复制里面的内容,在自己的github上添加ssh

安装mongodb和客户端shell

yum install mongodb-server mongodb -y

创建数据库文件存放目录

mkdir -p /data/mongodb
mkdir -p /data/logs/mongodb

启动mongodb数据库服务

mongod --fork --dbpath /data/mongodb --logpath /data/logs/youlog.log

注意:
如果在启动mongodb服务时在命令后面加上 --auth即会开启认证。
建议开启认证,如果不开会很容易被黑。

--port 12345可以改变数据库的端口号,默认是27017。

--fork是以守护进程的方式启动数据库服务。

--dbpath /data/mongodb 指定数据库文件存放的目录。

--logpath /data/logs/youlog.log 指定日志文件目录。

mongodb的配置文件默认在 /etc/mongod.conf

启动客户端shell

mongo  //启动mongodb客户端shell 默认连接test数据库

在shell里可以切换数据库连接,和进行相关操作。

在云服务器以守护进程的方式启动一次数据库服务之后,关闭终端,服务也不会被终止。所以下次不用再启动数据库服务,直接连接就可以。

关闭数据库服务

mongod --shutdown (--dbpath /data/mongodb)

如果启动时加了dbpath而且不是默认的/data/db ,则关闭数据库服务时也应加上dbpath。

创建https服务

npm init  //项目初始化

安装express

npm install express --save

实现简单的https服务器

const https = require('https');
const fs = require('fs');
const express = require('express');
const app = express();

let key = fs.readFileSync('youssl.key');
let cert = fs.readFileSync('youssl.crt');

let options = {
  key : key,
  cert : cert
};

const httpsServer = https.createServer(options,app);
httpsServer.listen(443, () => {
  console.log('listening 443 port');
});

app.get('/',(req, res, next) => {
  console.log('someone request');
});

.key和.cert文件为你的ssl认证文件,以腾讯云主机为例,可以有免费1年的ssl证书。

使用mongoose操作数据库

npm install mongoose --save
const mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1/dbname'); //连接数据库

const connection = mongoose.connection;
connection.once('open', (err) => {
  if(err){
    console.log('Database connection failure');
  }else{
    console.log('Database opened');
  }
});

const Schema = mongoose.Schema;

const YourSchema = new Schema({
  name : String,
  age : Number,
});

const yourModel = mongoose.model('yourtable', YourSchema); //在数据库中对应的表为yourtables

let yourDoc = new yourModel({
  name : 'yourname',
  age : 18,
});

注意 如果启动mongodb数据库服务时加上了--auth 则使用mongoose连接数据库时,要加上认证的账户

mongoose.connect('mongodb://youraccount:pwd@127.0.0.1/dbname');

mongodb与关系型数据库的对应关系

Schema相当于表的结构,可以预定义文档的字段类型,不能进行数据库操作。 Modle可以进行一系列数据库操作,相当于表。Model的实例就相当于表的一行。

使用pm2

安装pm2

npm install  -g pm2

启动应用

pm2 start app.js

相关文章

  • Nest.js系列学习之初识nest项目框架及服务

    Nest.js系列学习之初识nest项目框架及服务

    这篇文章主要为大家介绍了Nest.js系列学习之初识nest项目框架及服务,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • nodejs简单访问及操作mysql数据库的方法示例

    nodejs简单访问及操作mysql数据库的方法示例

    这篇文章主要介绍了nodejs简单访问及操作mysql数据库的方法,结合实例形式分析了nodejs创建mysql连接、执行sql语句及关闭连接等相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • 详解npm与package.json之间的联系

    详解npm与package.json之间的联系

    这篇文章主要为大家介绍了npm与package.json之间的联系图文示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Nodejs把接收图片base64格式保存为文件存储到服务器上

    Nodejs把接收图片base64格式保存为文件存储到服务器上

    这篇文章主要介绍了Nodejs把接收图片base64格式保存为文件存储到服务器上,文中代码较简短,需要的朋友可以参考下
    2018-09-09
  • 深入浅析Node.js 事件循环

    深入浅析Node.js 事件循环

    Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高,本文给大家介绍nodejs事件循环相关知识,对此感兴趣的朋友快来学习吧
    2015-12-12
  • 详细谈谈NodeJS进程是如何退出的

    详细谈谈NodeJS进程是如何退出的

    这篇文章主要给大家介绍了关于NodeJS进程是如何退出的相关资料,主要介绍了导致进程退出的三个因素:主动退出;未捕获的异常、未处理的 promise rejection;未处理的 Event Emitter error 事件 系统信号,需要的朋友可以参考下
    2021-07-07
  • Express 框架中使用 EJS 模板引擎并结合 silly-datetime 库进行日期格式化的实现方法

    Express 框架中使用 EJS 模板引擎并结合 silly-datetime

    这篇文章主要介绍了Express 框架中使用 EJS 模板引擎并结合 silly-datetime 库进行日期格式化的实现方法,结合具体实例形式分析了express框架引入EJS模版以及导入 silly-datetime 库的格式化方法传递给EJS模版使用的相关操作技巧,需要的朋友可以参考下
    2023-05-05
  • node.js读取文件到字符串的方法

    node.js读取文件到字符串的方法

    这篇文章主要介绍了node.js读取文件到字符串的方法,涉及readFileSync方法的使用技巧,需要的朋友可以参考下
    2015-06-06
  • node删除、复制文件或文件夹示例代码

    node删除、复制文件或文件夹示例代码

    这篇文章主要给大家介绍了关于node删除、复制文件或文件夹的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用node具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • 对node.js中render和send的用法详解

    对node.js中render和send的用法详解

    今天小编就为大家分享一篇对node.js中render和send的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05

最新评论