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 寻址,闭包,对象模型和相关问题
Apr 27 Javascript
JavaScript 异步调用框架 (Part 5 - 链式实现)
Aug 04 Javascript
防止动态加载JavaScript引起的内存泄漏问题
Oct 08 Javascript
JS记录用户登录次数实现代码
Jan 15 Javascript
jquery单行文字向上滚动效果示例
Mar 06 Javascript
jQuery中:submit选择器用法实例
Jan 03 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
Sep 19 Javascript
解决vue单页路由跳转后scrollTop的问题
Sep 03 Javascript
VUE基于NUXT的SSR 服务端渲染
Nov 30 Javascript
微信小程序前端自定义分享的实现方法
Jun 13 Javascript
vuex存储token示例
Nov 11 Javascript
js实现简单放大镜效果
Mar 07 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 curl 抓取AJAX异步内容示例
2014/09/09 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
React 高阶组件入门介绍
2018/01/11 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
Jquery的Ajax技术使用方法
2019/01/21 jQuery
微信小程序template模版的使用方法
2019/04/13 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
探究Python中isalnum()方法的使用
2015/05/18 Python
python中使用序列的方法
2015/08/03 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
为奢侈时尚带来了慈善元素:Olivela
2018/09/29 全球购物
办理收楼委托书范本
2014/10/09 职场文书
假释思想汇报范文
2014/10/11 职场文书
再婚婚前财产协议书范本
2014/10/19 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
2014年劳动部工作总结
2014/12/11 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA