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 相关文章推荐
javascript 写类方式之十
Jul 05 Javascript
QUnit jQuery的TDD框架
Nov 04 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
Nov 21 Javascript
JavaScript知识点总结(十)之this关键字
May 31 Javascript
jQuery实现图片轮播效果代码
Sep 27 Javascript
实例浅析js的this
Dec 11 Javascript
Js apply方法详解
Feb 16 Javascript
JS实现的计数排序与基数排序算法示例
Dec 04 Javascript
讲解vue-router之什么是编程式路由
May 28 Javascript
基于JS实现带动画效果的流程进度条
Jun 01 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
Aug 29 Javascript
layui输入框中只允许输入整数的实现方法
Sep 18 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
咖啡语言
2021/03/03 咖啡文化
table标签的结构与合并单元格的实现方法
2013/07/24 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
php实现文件预览功能
2017/05/23 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
jquery tab标签页的制作
2010/05/10 Javascript
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
2010/09/14 Javascript
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
javascript白色简洁计算器
2015/05/04 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
jquery实现界面无刷新加载登陆注册
2016/07/30 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
详解JavaScript RegExp对象
2017/02/04 Javascript
AngularJs+Bootstrap实现漂亮的计算器
2017/08/10 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
2019/05/01 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
vue实现购物车功能(商品分类)
2020/04/20 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
Python 命令行非阻塞输入的小例子
2013/09/27 Python
Python contextlib模块使用示例
2015/02/18 Python
利用Python实现命令行版的火车票查看器
2016/08/05 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
用pandas划分数据集实现训练集和测试集
2020/07/20 Python
jurlique茱莉蔻英国官网:澳洲天然护肤品
2018/08/03 全球购物
服装行业创业计划书范文
2014/02/05 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
nginx服务器的下载安装与使用详解
2021/08/02 Servers
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android