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 相关文章推荐
jqgrid 简单学习笔记
May 03 Javascript
javascript 事件处理示例分享
Dec 31 Javascript
函数window.open实现关闭所有的子窗口
Aug 03 Javascript
JS原型与原型链的深入理解
Feb 15 Javascript
二维码图片生成器QRCode.js简单介绍
Aug 18 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
Dec 28 Javascript
React 项目迁移 Webpack Babel7的实现
Sep 12 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
Apr 17 Javascript
详解Vue调用手机相机和相册以及上传
May 05 Javascript
Jquery异步上传文件代码实例
Nov 13 jQuery
vue-cli单页面预渲染seo-prerender-spa-plugin操作
Aug 10 Javascript
利用 JavaScript 构建命令行应用
Nov 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结合web uploader插件实现分片上传文件
2016/05/10 PHP
php7性能提升的原因详解
2019/10/13 PHP
JavaScript创建命名空间(namespace)的最简实现
2007/12/11 Javascript
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
基于jquery css3实现点击动画弹出表单源码特效
2015/08/31 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
2019/11/04 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
详解python中的json和字典dict
2018/06/22 Python
python try except 捕获所有异常的实例
2018/10/18 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
马来西亚排名第一的宠物用品店:Pets Wonderland
2020/04/16 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
护理专业毕业生推荐信
2013/10/31 职场文书
岗位职责定义及内容
2013/11/08 职场文书
简单而又朴实的个人求职信分享
2013/12/12 职场文书
关于保护环境的建议书
2014/08/26 职场文书
学校个人对照检查材料
2014/08/26 职场文书
学生实习证明范文
2014/09/28 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
《叶问2》观后感
2015/06/15 职场文书
2016年端午节寄语
2015/12/04 职场文书
工作简历的自我评价
2019/05/16 职场文书
Django显示可视化图表的实践
2021/05/10 Python