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


Posted in Javascript onJanuary 03, 2018

准备条件

一台服务器

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

Javascript 相关文章推荐
用JS操作FRAME中的IFRAME及其内容的实现代码
Jul 26 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
Jan 12 Javascript
javascript中的toFixed固定小数位数 简单实例分享
Jul 12 Javascript
深入理解JavaScript的React框架的原理
Jul 02 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
Nov 24 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
Aug 29 Javascript
微信小程序实现发送验证码按钮效果
Dec 20 Javascript
深入理解redux之compose的具体应用
Jan 12 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
Mar 10 Javascript
JavaScript仿京东秒杀倒计时
Mar 17 Javascript
JS面向对象实现飞机大战
Aug 26 Javascript
关于JavaScript数组去重的一些理解汇总
Sep 10 Javascript
基于js文件加载优化(详解)
Jan 03 #Javascript
jQuery 实现左右两侧菜单添加、移除功能
Jan 02 #jQuery
js 取消页面可以选中文字的功能方法
Jan 02 #Javascript
js阻止默认右键的下拉菜单方法
Jan 02 #Javascript
webpack实用小功能介绍
Jan 02 #Javascript
js最简单的双向绑定实例讲解
Jan 02 #Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
Jan 02 #Javascript
You might like
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
十天学会php之第五天
2006/10/09 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
Jquery实现简单的动画效果代码
2012/03/18 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
详解vue挂载到dom上会发生什么
2019/01/20 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
基于VUE实现简单的学生信息管理系统
2021/01/13 Vue.js
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
python能做什么 python的含义
2019/10/12 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
Python如何爬取51cto数据并存入MySQL
2020/08/25 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
介绍一下你对SOA的认识
2016/04/24 面试题
师范毕业生求职自荐信
2013/09/25 职场文书
群众路线批评与自我批评
2014/02/06 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
初中学习计划书范文
2014/09/15 职场文书
国庆横幅标语
2014/10/08 职场文书
分析设计模式之模板方法Java实现
2021/06/23 Java/Android
Java Socket实现多人聊天系统
2021/07/15 Java/Android