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 DOM操作小结与实例
Jan 07 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
Nov 04 Javascript
js获取日期:昨天今天和明天、后天
Jun 11 Javascript
node中socket.io的事件使用详解
Dec 15 Javascript
详解javascript中的事件处理
Nov 06 Javascript
AngularJS初始化静态模板详解
Jan 14 Javascript
Jquery实现$.fn.extend和$.extend函数
Apr 14 Javascript
jQuery使用each方法与for语句遍历数组示例
Jun 16 Javascript
AngularJS优雅的自定义指令
Jul 01 Javascript
深入学习js瀑布流布局
Oct 14 Javascript
js事件冒泡与事件捕获详解
Feb 20 Javascript
Vuepress 搭建带评论功能的静态博客的实现
Feb 17 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
php若干单维数组遍历方法的比较
2011/09/20 PHP
PHP面向对象学习笔记之一 基础概念
2012/10/06 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
js函数排序的实例代码
2013/07/01 Javascript
浅谈javascript的调试
2015/01/28 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
python进阶教程之循环对象
2014/08/30 Python
wxPython窗口中文乱码解决方法
2014/10/11 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
python制作简单五子棋游戏
2019/06/18 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
2020/02/05 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
大二法英学生职业生涯规划范文
2014/02/27 职场文书
考试诚信承诺书
2014/05/23 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
2014年生产部工作总结
2014/12/17 职场文书
幼儿园六一儿童节演讲稿
2015/03/19 职场文书
心理学培训心得体会
2016/01/22 职场文书
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python
总结几个非常实用的Python库
2021/06/26 Python