node.js - 如何在亚马逊 EC2 Linux 实例上托管我的应用程序 (MEAN)?

标签 node.js linux mongodb amazon-web-services amazon-ec2

我在 Ionic 2 和 Angular2 上开发了一个应用程序,使用 MongoDB 作为数据库,使用 Node.js 和 Express.js 作为服务器。我在我的笔记本电脑上创建了数据库 mongoose.connect('mongodb://localhost:27017/db') .

现在,我启动了一个 AWS EC2 Linux 实例并安装了 Node 和 npm 包。

在 EC2 Linux 实例中使用 git repo 成功克隆了我的应用程序并安装了 mongodb 服务器并通过评论 bindip 连接到我的笔记本电脑 mongoDB 的 shell在mongod.conf文件。

现在当我运行 node server.js在 EC2 实例中读取 console.log(App listining to port 8080')它就在 app.listen(8080) 下面在 server.js 文件中。在那之后什么也没有发生。

  1. 如何将服务器 mongodb 连接到我在笔记本电脑上创建的数据库,应用程序作为本地主机,即 mongoose.connect('mongodb://localhost:27017/db')

作为引用,我附上了我的server.js文件

server.js

var express = require("express");
var app = express();
var mongoose = require('mongoose');
var morgan = require('morgan');
var bodyParser = require('body-parser');
var cors = require('cors');
var methodOverride = require('method-override');

mongoose.connect('mongodb://localhost/reviewking');

app.use(morgan('dev'));                                         // log every request to the console
app.use(bodyParser.urlencoded({ 'extended': 'true' }));            // parse application/x-www-form-urlencoded
app.use(bodyParser.json());                                     // parse application/json
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json
app.use(methodOverride());
app.use(cors());

app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-control-Allow-Method", "DELETE,PUT");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});

//Models

var Review = mongoose.model('Review', {
    title: String,
    description: String,
    rating: Number

});

//Routes

app.get('/api/reviews', function (req, res) {
    console.log('fetching reviews..');

    Review.find(function (err, reviews) {
        if (err)
            res.send(err);

        res.json(reviews);
    });

});

app.post('/api/reviews',function(req,res){
    console.log('creating reviews');

    //create a review

    Review.create({
        title: req.body.title,
        description:req.body.description,
        rating:req.body.rating,
        done:false
    }, function(err, reviews){
        if(err)
        res.send(err);

        Review.find(function(err,reviews){
            if(err)
            res.send(err);
            res.json(reviews);
        });      
    });
});

app.listen(8080);
console.log('app listening on port 8080')

最佳答案

可能最简单的方法是运行 mongodump ,将转储上传到您的服务器(可能使用 scp )并使用 mongorestore 恢复.

# Backup the reviewking database (on your laptop)
mongodump --db reviewking

# Restore the reviewking database (on your server)
mongorestore --db reviewking dump/reviewking

关于node.js - 如何在亚马逊 EC2 Linux 实例上托管我的应用程序 (MEAN)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44171883/

相关文章:

node.js - 避免多个流的回调 hell

javascript - 如何在 Node.js 中追加到新行

linux - 如何在 Ubuntu 的代码块中生成 .out?

sql-server - 将 mongo 集合导出到 SQL Server 的最佳实践

javascript - 音乐厅座位表的数据结构

Javascript 在执行其内容后有条件地执行

linux - nautilus 仅显示简化的浏览窗口

python - 在挂载 Raspberry Pi 时自动将文件复制到 USB

node.js - MongoDB Gridfs NODE 显示图像

node.js - 使用 AWS 生成的凭证连接到 RDS Postgres 时密码身份验证失败