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 相关文章推荐
番茄的表单验证类代码修改版
Jul 18 Javascript
DWR Ext 加载数据
Mar 22 Javascript
JS 控制CSS样式表
Aug 20 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
Feb 20 Javascript
js控制iframe的高度/宽度让其自适应内容
Apr 09 Javascript
JS实现模拟风力的雪花飘落效果
May 13 Javascript
jQuery实现的倒计时效果实例小结
Apr 16 Javascript
jQuery实现的简单悬浮层功能完整实例
Jan 23 Javascript
基于JavaScript实现多级菜单效果
Jul 25 Javascript
jQuery中ajax请求后台返回json数据并渲染HTML的方法
Aug 08 jQuery
关于vue路由缓存清除在main.js中的设置
Nov 06 Javascript
vue-router 控制路由权限的实现
Sep 24 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 日期时间函数的高级应用技巧
2009/10/10 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
浅谈php错误提示及查错方法
2015/07/14 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
理解Javascript_10_对象模型
2010/10/16 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
JS中数据结构之栈
2019/01/01 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
Javascript异步编程async实现过程详解
2020/04/02 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
详解Django中的form库的使用
2015/07/18 Python
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
Ubuntu下创建虚拟独立的Python环境全过程
2017/02/10 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
python程序变成软件的实操方法
2019/06/24 Python
Python使用贪婪算法解决问题
2019/10/22 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
大学生第一学年自我鉴定2015
2014/09/28 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
python Tkinter的简单入门教程
2021/04/11 Python