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 相关文章推荐
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
Nov 14 Javascript
JavaScript原型继承之基础机制分析
Aug 26 Javascript
浅谈Javascript鼠标和滚轮事件
Jun 27 Javascript
js Math 对象的方法
Sep 01 Javascript
jQuery 跨域访问解决原理案例详解
Jul 09 Javascript
js精确的加减乘除实例
Nov 14 Javascript
给localStorage设置一个过期时间的方法分享
Nov 06 Javascript
微信小程序日历/日期选择插件使用方法详解
Dec 28 Javascript
微信小程序登录session的使用
Mar 17 Javascript
vue实现随机验证码功能的实例代码
Apr 30 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
Jun 15 Javascript
Javascript设计模式之原型模式详细
Oct 05 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
快速配置PHPMyAdmin方法
2008/06/05 PHP
php 删除数组元素
2009/01/16 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
解析php中array_merge与array+array的区别
2013/06/21 PHP
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
JavaScript 函数调用规则
2009/09/14 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
jQuery实现的简单分页示例
2016/06/01 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
javascript使用substring实现的展开与收缩文字功能示例
2019/06/17 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
Python利用Beautiful Soup模块修改内容方法示例
2017/03/27 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
python实现学生信息管理系统
2020/04/05 Python
Python autoescape标签用法解析
2020/01/17 Python
python实现拼图小游戏
2020/02/22 Python
python实现简单井字棋小游戏
2020/03/05 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
逻辑链路控制协议
2016/10/01 面试题
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
五好关工委申报材料
2014/05/31 职场文书
新教师岗前培训方案
2014/06/05 职场文书
同意迁入证明模板
2014/10/26 职场文书
运动会表扬稿范文
2015/05/05 职场文书