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作用域
Sep 24 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
Aug 03 Javascript
jQuery表格插件datatables用法汇总
Mar 29 Javascript
原生js实现tab选项卡切换
Mar 23 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
Sep 21 Javascript
js中的 || 与 && 运算符详解
May 24 Javascript
小程序清理本地缓存的方法
Aug 17 Javascript
LayerClose弹窗关闭刷新方法
Aug 17 Javascript
基于JS实现前端压缩上传图片的实例代码
May 14 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
Sep 21 Javascript
JS数组Reduce方法功能与用法实例详解
Apr 29 Javascript
梳理一下vue中的生命周期
Dec 30 Vue.js
基于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
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
简单采集了yahoo的一些数据
2007/02/14 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
splice slice区别
2006/10/09 Javascript
jquery加载页面的方法(页面加载完成就执行)
2011/06/21 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Django rest framework实现分页的示例
2018/05/24 Python
python实现推箱子游戏
2020/03/25 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
英国Boots旗下太阳镜网站:Boots Designer Sunglasses
2018/07/07 全球购物
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
护士实习生自我鉴定范文
2013/12/10 职场文书
考试作弊检讨书大全
2014/02/18 职场文书
服装设计专业自荐信
2014/06/17 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
员工开除通知书
2015/04/25 职场文书
《我的长生果》教学反思
2016/02/20 职场文书