Linux服务器中部署Node服务学习-1-部署准备

一、生产环境所需要素

  1. 购买自己的域名(用于映射服务器IP,IP不方便记忆)
  2. 购买自己的服务器(一台带外网IP的电脑)
  3. 域名备案
  4. 配置服务器应用环境(用户权限,无密码登录,NodeJS应用环境,必备依赖包,组件,转发SSL证书的生成配置,)
  5. 安装配置数据库
  6. 项目远程部署发布与更新(低层:拷贝发布,高一级:使用私密部署)

二、Node基础回顾

2.1 以node原生API来搭建一个简单服务应用

创建简单node服务

// 引入http模块
const http = require('http')
// 设置主页模板
const homePage = `
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Node部署</title>
</head>
<body>
    <h1>hello NodeJS,这是主页</h1>
</body>
</html>
`
// 创建网络服务
http.createServer((req,res)=>{
    res.statusCode=200;
    res.setHeader('Content-Type','text/html')
    res.end(homePage)
}).listen(3000,()=>{
    console.log('服务启动成功')
})

2.2 一个node后台应用项目示例

1)、web项目
  • 技术栈:express+node+mongodb
  • 目录结构参考
|_ app.js
|_ app
    |_ controllers // 配置针对请求的自定义中间件
    |_ models  // mongodb对应生成的model文件
    |_ schemas // mongodb对应的不同schema
    |_ views  // 网页渲染模板文件(jade,ejs等)
|_ config
    |_ routes.js //后端路由配置
|_ node_modules
|_ public // 前端静态资源
    |_ js 
    |_ less
    |_ libs // 前端所需类库(如boostrap,jquery等)
    |_ images
|_ test
|_ .bowerrc
|_ .jshintr
|_ app.js
|_ bower.json
|_ package.json  
A)在node后台中配置mongo的使用

根据以上目录结构可以看出,针对mongodb的应用,schema,models是分开的,这样才能实现多数据的操作
- 以下为缩略的伪代码

# 1- app.js中引入mongoose并创建连接mongodb的服务

var mongoose = require('mongoose')  
var dbUrl = 'mongodb://localhost/mydb'
mongoose.connect(dbUrl)  //连接mongodb

# 2-schema中创建各数据文档结构(例:/app/schemas/comment.js)
var mongoose = require('mongoose')
var Schema = mongoose.Schema

var CommentSchema = new Schema({  //创建一个结构
  name: { type: String, default: 'hahaha' },
  age: { type: Number, min: 18, index: true },
  date: { type: Date, default: Date.now },
})
Comment.pre('save',function(next){
    //做一些存储前的中间处理(如验证要存储的数据之类)
    next()
})
Comment.statics = { //对schema添加静态方法,用于增,删,改,查的调用
    fetch:function(cb){
        return this.find({})
        .sort()
        .exec(cb)
    },
    findById:function(id,cb){
        return this.findOne({_id:id})
        .exec(cb)
    }
}
model.exports = CommentSchema

# 3- models中引用schema创建model(/app/models/comment.js)
var mongoose= require('mongoose')
var CommentSchema=require('../schemas/comment')
var Comment = mongoose.model('Comment',CommentSchema)  //根据结构创建模型
model.exports=Comment

# 4- Controllers中引用model并创建中间件用于对前端请求的回复(/app/controllers/comment.js)
var mongoose = require('mongoose')
var Comment = mongoose.model('Comment') //引入要使用的模型
exports.save=function(req,res){
    var _comment = req.body.comment
    var id = _comment.target
    if(_comment.cid){
        //调用shcema中定义的静态方法findById
        Comment.findById(_commtn.cid,function(err,comment){ 
            comment.save(function(err,comment){
                if(err){
                    console.log(err)
                }
                res.redirect('/index')
            })
        })
    }
}

# 5- 后端路由配置(/config/routes.js)
var User = require('../app/controllers/users')
var Comment = require('../app/controllers/comment')
model.exports=function(app){
 //用户发起评论的请求——> 中间件 siginRequired能主是否登录——> 中间件Comment.save进行评论的存储
    app.post('/user/comment',User.siginRequired,Comment.save)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sophie_U

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值