【问题标题】:How to deploy nodejs and express to AWS EC2 Instance如何部署 nodejs 和 express 到 AWS EC2 实例
【发布时间】:2019-07-26 06:50:25
【问题描述】:

我有一个 MEAN 应用程序需要部署,我选择将它部署在 AWS Linux AMI 上,但我在部署它时遇到了一些问题。

根据我目前阅读的教程,每个 nodejs 和 express 都包含 html 页面。

如何在没有 html 页面的情况下部署它?就像如果他们去域他们只是看到一个空白页?

我知道我可以只清空一个 html 文件,但我还有其他解决方案吗?

这是我的 server.js

const http = require("http");
const debug = require("debug")("sales-and-inventory");
const app = require("./app");

// normalizePort() makes sure that the port is a valid number data type
const normalizePort = val => {
  var port = parseInt(val, 10);
  if (isNaN(port)) {
    // isNot-a-Number
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
};

// checks the type of error occured
const onError = error => {
  if (error.syscall !== "listen") {
    throw error;
  }

  const bind = typeof port === "string" ? "pipe " + port : "port " + port;
  switch (error.code) {
    case "EACCES":
      console.error(bind + " requires elevated privileges");
      process.exit(1);
      break;

      case "EADDRINUSE":
      console.error(bind + " is already in use");
      process.exit(1);
      break;

    default:
      throw error;
  }
};

// just logging
const onListening = () => {
  const addr = server.address();
  const bind = typeof port === "string" ? "pipe " + port : "port " + port;
  debug("Listening on " + bind);
};

// set a config for the express environment & config for the port
const port = normalizePort(process.env.PORT || "3000");
app.set("port", port);

const server = http.createServer(app);

// registered on this listeners on the function above
server.on("error", onError);
server.on("listening", onListening);

// start server
server.listen(port);

这是 app.js

const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");

const authRoutes = require("../routes/auth.route");
const userRoutes = require("../routes/user.route");
const customerRoutes = require("../routes/customer.route");
const vendorRoutes = require("../routes/vendor.route");
const salesRoutes = require("../routes/sales-order.route");
const purchaseRoutes = require("../routes/purchase-order.route");
const inventoryRoutes = require("../routes/inventory.route");
const transferRoutes = require("../routes/transfer.route");
const paymentRoutes = require("../routes/payment.route");


const app = express();

mongoose.set('useCreateIndex', true);
mongoose.set('useFindAndModify', false);
mongoose.connect(process.env.ATLAS_CONNECTION_STRING, { useNewUrlParser: true })
    .then(() => {
        console.log("Connected to Atlas");
    })
    .catch(err => {
        if (err) {
            console.log(err);
        }
    });


app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

// CORS
app.use((req, res, next) => {

    // allows any domain to access our resources
    res.setHeader("Access-Control-Allow-Origin", "*");

    // allows domain with a certain set of headers
    res.setHeader(
        "Access-Control-Allow-Headers",
        "Origin, X-Requested-With, Content-Type, Accept, Authorization"
    );

    // allows http type of requests
    res.setHeader(
        "Access-Control-Allow-Methods",
        "GET, POST, PATCH, PUT, DELETE, OPTIONS"
    );

    res.header('Content-Security-Policy', 'img-src "self"');
    next();
});




app.use("/api/auth", authRoutes);
app.use("/api/user", userRoutes);
app.use("/api/customer", customerRoutes);
app.use("/api/vendor", vendorRoutes);
app.use("/api/sales", salesRoutes);
app.use("/api/purchase", purchaseRoutes);
app.use("/api/inventory", inventoryRoutes);
app.use("/api/transfer", transferRoutes);
app.use("/api/payment", paymentRoutes);

module.exports = app;

【问题讨论】:

    标签: node.js amazon-web-services express mean-stack backend


    【解决方案1】:

    启动 EC2 实例后,如果您使用 windows go for PUTTY,您可以继续在您的机器上设置 SSH。

    登录实例后,按照本教程部署 NodeJS 应用程序。

    https://www.youtube.com/watch?v=tasoWTGM1hA

    【讨论】:

      【解决方案2】:

      在部署之前确保将安全组添加到 EC2 实例并添加 HTTP、HTTPS 的角色以及任何 IP 地址,我的意思是 0.0.0.0 和任何端口:0

      【讨论】:

      • 与我的问题无关。
      猜你喜欢
      • 2018-01-11
      • 2018-12-02
      • 1970-01-01
      • 2023-03-25
      • 2019-04-04
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多