美文网首页
nodejs服务端部署

nodejs服务端部署

作者: 书简_yu | 来源:发表于2019-03-10 15:27 被阅读0次

    服务器:阿里云轻量应用服务器 nodejs

    • 进入控制台登陆服务器

    解决nvm不是命令

    source /root/nvm/nvm.sh  // nvm可以帮助你下载nodejs
    
    // nvm下载nodejs
    nvm install 10.15.3
    

    镜像帮助文档 包含nvm和下文中的pm2命令

    代码管理

    使用winSCP图形界面工具 + git 管理

    WinSCP文档: https://help.aliyun.com/knowledge_detail/60132.html
    下载git yum install git 可以用它创建目录,修改小文件等

    本地创建简单demo上传至github,浏览器远程连接进入服务器 创建目录并
    git clone

    自动运行nodejs

    pm2 start app.js   // 即自动node app.js
    

    mongodb部署

    创建文件夹

    下载安装包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.6.tgz

    解压:tar -zxvf mongodb-linux-x86_64-4.0.6.tgz

    根目录下创建 /data/db文件夹,跟windows上一样,如果不做配置

    版本参考地址:https://www.mongodb.com/download-center/community

    服务端运行mongodb

    // 进入mongodb所在文件夹 下的bin目录,可以参考windows下的mongodb目录,也可以看winscp中的目录结构
    
    ./mongod   // 可以在windows下尝试尝试
    

    自动运行

    /lib/systemd/system/目录下新建mongodb.service文件, 名字自己取

    [Unit]
    Description=mongodb
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    ExecStart=/software/mongodb/bin/mongod
    ExecStop=/software/mongodb/bin/mongod --shutdown
    
    [Install]
    WantedBy=multi-user.target
    
    创建service文件
    服务器重启使其生效
    参考文章: https://www.jianshu.com/p/5a104184e010
    • 应用
    const mongodb = require("mongodb");
    const MongoClient = require('mongodb').MongoClient;
    const url = 'mongodb://localhost:27017';
    
    const express = require('express');
    
    const app = express();
    
    app.get('/', (req, res) => {
    
        MongoClient.connect(url, function(err, client) {
            
            client.db('yuyouxia').collection('music').find({}).toArray( (err, item) => {
                
                res.send(item);
                
                client.close();
            })
        });
    })
    
    app.listen(3000, () => {
    
        console.log('port 3000');
    })
    

    创建连接,从yuyouxia数据库中查询music集合中查找所有文档,并返回数据

    tips: 要先在数据库中插入数据啊

    my result
    • 其他

    nodejs中post请求 中间件 body-parser

    使用它可以帮你得到post请求发送过来的参数

    const express = require('express');
    const app = express();
    const fs = require('fs');
    const path = require('path');
    const bodyParser = require('body-parser');
    const interface = require('./interface/interface');
    
    // 解析请求体
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));
    

    目前的项目结构

    struct

    index.js是启动项目的,test是小测试

    index.js

    const express = require('express');
    const app = express();
    const fs = require('fs');
    const path = require('path');
    const bodyParser = require('body-parser');
    const interface = require('./interface/interface');
    
    // 解析请求体
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));
    
    // 首页
    app.get('/', (req, res) => {
        
        const html = fs.readFileSync(path.resolve(__dirname, './index.html'), 'utf-8');
        
        res.send(html);
    });
    
    // 接口请求
    app.use('/api', interface);
    
    // 找不到则404
    app.use((req, res, next) => {
        
        const html = fs.readFileSync(path.resolve(__dirname, './src/a.html'), 'utf-8');
        
        res.send(html);
    })
    
    // 3000端口监听
    app.listen(3000, () => {
        
        console.log('port 3000');
    });
    

    新浪云的nodejs部署比阿里云的要方便,个人感觉

    相关文章

      网友评论

          本文标题:nodejs服务端部署

          本文链接:https://www.haomeiwen.com/subject/odbupqtx.html