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客户端脚本的设计和应用
Aug 21 Javascript
纯JS实现根据CSS的class选择DOM
Mar 22 Javascript
js/jquery判断浏览器的方法小结
Sep 02 Javascript
JavaScript 事件对象介绍
Apr 13 Javascript
深入浅出理解javaScript原型链
May 09 Javascript
跟我学习javascript的基本类型和引用类型
Nov 16 Javascript
Javascript之String对象详解
Jun 08 Javascript
JS异步文件上传(兼容IE8+)
Apr 02 Javascript
vue.js实现刷新当前页面的方法教程
Jul 05 Javascript
Vue.js中组件中的slot实例详解
Jul 17 Javascript
基于JS实现父组件的请求服务过程解析
Oct 14 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
Aug 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
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
基于php中echo用逗号和用点号的区别详解
2018/01/23 PHP
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
基于jquery的用鼠标画出可移动的div
2012/09/06 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
详解JavaScript中Date.UTC()方法的使用
2015/06/12 Javascript
js实现点击切换TAB标签实例
2015/08/21 Javascript
jQuery实现带动画效果的多级下拉菜单代码
2015/09/08 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
javascript设计模式 ? 桥接模式原理与应用实例分析
2020/04/13 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
python采用getopt解析命令行输入参数实例
2014/09/30 Python
django解决订单并发问题【推荐】
2019/07/31 Python
python实现数字炸弹游戏
2020/07/17 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
初中军训感想300字
2014/03/05 职场文书
学雷锋活动总结范文
2014/04/25 职场文书
会计稽核岗位职责
2015/04/13 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
入党申请书怎么写?
2019/06/11 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers
python 利用PyAutoGUI快速构建自动化操作脚本
2021/05/31 Python
python 中的jieba分词库
2021/11/23 Python