【问题标题】:How to host my application (MEAN) on amazon EC2 Linux instance?如何在亚马逊 EC2 Linux 实例上托管我的应用程序 (MEAN)?
【发布时间】:2017-10-25 14:16:51
【问题描述】:

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

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

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

现在,当我在 EC2 实例中运行 node server.js 时,会读取 server.js 文件中 app.listen(8080) 下方的 console.log(App listining to port 8080')。之后什么都没有发生。

  1. 如何将服务器 mongodb 连接到我在笔记本电脑上创建的数据库,应用程序为 localhost,即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')

【问题讨论】:

  • 您希望您的 EC2 实例连接到笔记本电脑上运行的 mongodb,还是想知道如何将您的 mongodb 数据库复制到 EC2?
  • 如何将我的mongodb数据库复制到EC2...将EC2实例连接到mongodb我已经完成了。但是我的笔记本电脑的数据库不同,EC2数据库不同。
  • 您可以使用 Mongo chef 之类的软件来完成,也可以将所有数据导出到一个文件夹中,然后将其上传到 EC2 并在那里导入这些文件。

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


【解决方案1】:

可能最简单的方法是运行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

【讨论】:

    猜你喜欢
    • 2012-10-28
    • 1970-01-01
    • 2013-10-19
    • 2010-12-28
    • 2017-11-30
    • 2015-09-18
    • 2016-12-07
    • 2014-10-08
    • 2014-03-30
    相关资源
    最近更新 更多