node.js - AWS EC2 上的 React 前端?

标签 node.js reactjs amazon-ec2

我不敢相信这是多么微不足道,但我找不到任何例子表明它不是更大构建的一部分,只会增加进一步的复杂性。

我正在构建一个小型网站,同时我还花时间尝试一些 AWS 服务。

我现在有一个没有后端的 React 前端,并且在 EC2 实例上运行它。 在每个人开始疯狂地告诉我这对于我的需要来说太过分之前,我知道我可以使用 Amplify 或 S3,但就像我说的,我正在尝试一些更复杂的东西,因为项目将进一步发展。


我想做的事...

在 EC2 上运行我的 React 前端,并使用某种包管理(例如 Forever 或 PM2 等),以便在我关闭终端时保持其运行。


我在哪里...

据我了解,我需要安装 Node 来为我的 React 前端提供服务(...但我认为这是不对的?)。

所以,我:

  • 已安装的 Node 和 NPM
  • 克隆了我的存储库
  • 安装前端依赖项
  • 使用 npm run build 创建了生产版本
  • 使用 npm start 启动前端
  • 看着我辉煌的网站充满我的浏览器:情感:

我的问题...

尽管它有效,但我认为它不对,而且我有一个问题。

1) 我创建了构建文件夹来提供静态文件,但仍然运行 npm start 这是一个开发构建 <- ???

2) 当我尝试添加 Forever 或 PM2 时,它不再起作用,因为无法访问该网站


  • 那我做错了什么?

  • 我是否只需要 Node 来运行前端?

  • React build 文件夹应该放在哪里?

  • 如何提供文件?

  • 如何保持其运行?


正如我所说,这看起来很微不足道,但我找到的示例也连接了数据库,拉入了东西,并连接了我现在不需要的其他东西,并且文档没有涵盖它.

对所有问题表示歉意,但这可以省去评论中的来回。

谢谢大家:)

最佳答案

嗯!经过一番摆弄后,我终于做到了我想做的事。

基本上,我所做的是:

1) 创建一个 Node 文件来提供 React 的 build 文件夹中的静态文件

2) 在 EC2 上安装 Node 并永久运行

3)克隆我的存储库

4) 使用 forever 运行我的 Node 服务器文件


方法如下...

  • 在 React 项目的根目录中创建一个 Node 服务器文件来为前端提供服务(我称之为 server.js)
const express = require('express');
const path = require('path');
const app = express();
const port = 3000;

app.use(express.static(path.join(__dirname, 'build')));

app.get('/', (req, res) => {
    res.sendFile(path.join(__dirname, 'build', 'index.html'));
});

app.listen(port, () => console.log(`Running on port ${port}`));
  • 使用安全组启动默认 Ubuntu EC2 实例:

    • SSH - 端口 20
    • HTTP - 端口 80
    • HTTPS - 端口 443
    • 自定义 - 端口 3000
  • 通过 SSH 连接到实例

  • 安装 Node 。这些是我在 AWS 页面 here 中使用的步骤

    • curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
    • 。 ~/.nvm/nvm.sh
    • nvm 安装 Node
    • node -e "console.log('运行 Node.js' + process.version)"
  • 安装 forever

    • npm install -g 永远
  • 克隆存储库

    • git 克隆 my-repo.git
  • 切换到新创建的目录

    • cd my-new-directory
  • 安装项目的依赖项

    • npm 我
  • 创建 React 项目的生产版本

    • npm run build
  • 运行我们之前创建的 Node 服务器文件

    • 永远启动server.js

您的站点现在应该已启动并正在运行,Node 可以从 React 的 build 文件夹中提供生产就绪构建 =)

关于node.js - AWS EC2 上的 React 前端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60582974/

相关文章:

javascript - 如何在node.js中获取body参数

javascript - React - 如何防止子组件的点击事件

reactjs - 将对象简写作为 props 传递到 React 组件中的方法是什么?

javascript - 用户在网页 + Iframe 上花费的时间

Elasticsearch/Logstash 错误 : com. mysql.jdbc.Driver 未加载 - 无法在服务器上找到 mysql-connector-java-5.1.36-bin.jar

amazon-web-services - aws EC2 从 Godaddy 安装 SSL 证书

javascript - 创建 React 应用程序后,在 cmd 上 npm start 总是给出错误

javascript - 使用nodejs/express 出现意外的换行符

javascript - 如何从父组件在React中的子组件中设置动态组件?

python - boto3 列出与 ec2 实例关联的安全组