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 相关文章推荐
网页运行时提示对象不支持abigimage属性或方法
Aug 10 Javascript
浅谈javascript函数式编程
Sep 06 Javascript
jQuery实现商品活动倒计时
Oct 16 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
May 31 Javascript
jQuery动态加载css文件实现方法
Jun 15 Javascript
js实现符合国情的日期插件详解
Jan 19 Javascript
老生常谈ES6中的类
Jul 31 Javascript
vue引入ueditor及node后台配置详解
Jan 03 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
Sep 28 Javascript
React和Vue中监听变量变化的方法
Nov 14 Javascript
vue中uni-app 实现小程序登录注册功能
Oct 12 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
Feb 15 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 之入门篇
2006/12/04 PHP
PHP页面间参数传递的四种方法详解
2013/06/09 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
PHP调用wsdl文件类型的接口代码分享
2014/11/19 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
深入讲解AngularJS中的自定义指令的使用
2015/06/18 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
JAVA中截取字符串substring用法详解
2017/04/14 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
2019/11/13 Javascript
跟老齐学Python之复习if语句
2014/10/02 Python
Python实现简单状态框架的方法
2015/03/19 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
python 常用的基础函数
2018/07/10 Python
Python3 修改默认环境的方法
2019/02/16 Python
Python 函数list&read&seek详解
2019/08/28 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
python 类之间的参数传递方式
2019/12/20 Python
Django-simple-captcha验证码包使用方法详解
2020/11/28 Python
python中spy++的使用超详细教程
2021/01/29 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
一些PHP的面试题
2015/05/06 面试题
SQL面试题
2013/04/30 面试题
水利学院求职自荐书
2014/02/01 职场文书
马丁路德金演讲稿
2014/05/19 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
会计试用期自我评价
2015/03/10 职场文书
2015公司年度工作总结
2015/05/14 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书