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 更新 JavaScript 数组的 uniq 方法
Jan 23 Javascript
JavaScript的单例模式 (singleton in Javascript)
Jun 11 Javascript
jQuery实现精美的多级下拉菜单特效
Mar 14 Javascript
Jquery Mobile 自定义按钮图标
Nov 18 Javascript
JavaScript的removeChild()函数用法详解
Dec 27 Javascript
JavaScript头像上传插件源码分享
Mar 29 Javascript
js实现页面a向页面b传参的方法
May 29 Javascript
简单实现js页面切换功能
Jan 10 Javascript
基于JavaScript实现报警器提示音效果
Oct 27 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
Feb 07 Javascript
在vue-cli项目中使用bootstrap的方法示例
Apr 21 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
Feb 16 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 memcache扩展的三种安装方法
2009/04/26 PHP
php 购物车的例子
2009/05/04 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
详解php与ethereum客户端交互
2018/04/28 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
2018/09/29 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
javascript import css实例代码
2008/07/18 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
2017/06/09 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
微信web端后退强制刷新功能的实现代码
2018/03/04 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
python实现查询IP地址所在地
2015/03/29 Python
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
Python实现Linux监控的方法
2019/05/16 Python
python写程序统计词频的方法
2019/07/29 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
取保候审保证书
2014/04/30 职场文书
人事局接收函
2015/01/31 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
计划生育个人总结
2015/03/02 职场文书
2015年教研工作总结
2015/05/23 职场文书
教师节老师寄语
2015/05/28 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书