【问题标题】:How to host node js server on an ec2 instance如何在 ec2 实例上托管节点 js 服务器
【发布时间】:2021-01-24 04:53:49
【问题描述】:

我正在尝试将全栈 MERN CRUD 栈(M 为 mysql)部署到 AWS。我已在 RDS 实例上成功托管 mysql 数据库。我的下一步是将我的 node/express 服务器部署到 AWS。我得到建议使用 ec2 创建一个虚拟机来托管这个节点后端。我已经成功创建了 ec2 实例。但是,我不知道如何进行。总而言之,我正在尝试使用 ec2 虚拟机在 AWS 上托管我的 node/express 服务器。我似乎无法弄清楚接下来的步骤(在创建初始 ec2 实例之后)。 如果上下文有帮助,这里是我的节点/快递服务器。您可以提供给我的任何提示、资源、建议或知识,我们将不胜感激!

const express = require("express");
const mysql = require("mysql");
const cors = require("cors")
const formData = require("express-form-data");

var app = express();
app.use(cors());
app.use(formData.parse({maxFieldSize: '10mb'}));

var mysqlConnection = mysql.createConnection({
    host: ****,
    user: ****,
    password: ****,
    database: ****
})

mysqlConnection.connect((err) => {
    if(err) {
        throw err;
    }
    console.log("Connected to AWS!")
})

app.get('/', (request, response) => {
    response.send('hello from /')
});

app.post('/createUser', function(req, res) {
    console.log('/createUser')
    console.log(req.body);
    const createUser = `CALL CreateUser('${req.body.username}', '${req.body.password}', 
'${req.body.firstName}')`;
    mysqlConnection.query(createUser, (error, result) => {
        if (error) {
            console.log(error);
        } else {
            console.log('created user');
        }
    })
});

app.get('/signIn', function (request, response) {
    console.log('in /signIn');
    console.log(request.query);
    var {username, password} = request.query;
    console.log(username)
    console.log(password)
    var validateAccount = `CALL ValidateAccount('${username}', '${password}')`;
    var test = `SELECT UserID FROM users WHERE Username = '${username}' AND Passcode = 
    '${password}'`;

    mysqlConnection.query(validateAccount, (error, result) => {
        if (error) {
            console.log(error);
        } else if (result[0] === undefined || result[0].length === 0) {
            console.log('user does not exist');
        } else {
            console.log('user exists');
            console.log(result[0][0].UserID);
            response.status(200).json({
                userID: result[0][0].UserID,
                username: result[0][0].Username,
                passcode: result[0][0].Passcode,
                employmentStatus: result[0][0].EmploymentStatus
            })
        }
    })
})

app.listen(5000, function() {
    console.log("Listening on port 5000");
});

【问题讨论】:

    标签: javascript node.js amazon-web-services express amazon-ec2


    【解决方案1】:

    既然你已经创建了一个实例,那么它肯定已经生成了一个 pem 文件。所以我会告诉你生成.pem文件后的步骤。

    1. pem 文件是私钥文件,因此您可以将其存储在安全的地方。
    2. 打开cmd 并导航到您存储pem 文件的目录。
    3. cmd 输入ssh -i file_name.pem ubuntu@public IP 可以在实例描述中找到公网ip。
    4. 因此您将获得您选择的虚拟操作系统 cmd。现在您可以直接从 GIT 拉取代码,也可以使用 filezilla 等 FTP 手动上传文件。
    5. 您可以在此处阅读有关连接到 filezilla 的信息。https://forums.aws.amazon.com/thread.jspa?messageID=741338

    【讨论】:

    • 谢谢。这似乎是朝着正确方向迈出的一步。但是,当我运行您在第 3 行中提到的命令时,出现权限被拒绝错误。对此有什么想法吗?
    • 你的操作系统是什么?
    • 我的操作系统是windows
    • 以管理员身份运行命令提示符
    猜你喜欢
    • 2014-11-25
    • 2014-05-29
    • 2019-10-29
    • 2021-04-29
    • 2021-02-19
    • 1970-01-01
    • 2020-07-08
    • 2019-05-28
    • 1970-01-01
    相关资源
    最近更新 更多