[英]React front-end on AWS EC2?
我不敢相信这是多么微不足道,但我找不到任何例子,说明它不是更大构建的一部分,只会增加进一步的复杂性。
我正在组建一个小型网站,同时我也在花时间尝试一些 AWS 服务。
我现在有一个没有后端的 React 前端,我正在 EC2 实例上运行它。 在每个人都开始疯狂地告诉我这对我需要的东西来说太过分之前,我知道我可以使用 Amplify 或 S3 ,但就像我说的,我正在尝试一些更复杂的东西,因为该项目将进一步发展。
我想做的事...
在 EC2 上运行我的 React 前端,使用某种包管理(例如 Forever 或 PM2 等)以在我关闭终端时保持它运行。
我在哪...
据我了解,我需要安装 Node 来为我的 React 前端提供服务(...但我认为这不对?)。
所以,我已经:
npm run build
创建了一个生产npm run build
npm start
前端我的问题...
即使它有效,我也不认为这是正确的,我有一个问题。
1)我创建了构建文件夹来提供静态文件,但仍然运行npm start
这是一个开发构建 <- ???
2) 当我尝试添加 Forever 或 PM2 时,它不再起作用,因为无法访问该站点
那么我做错了什么?
我什至需要 Node 来只运行前端吗?
React build
文件夹应该放在哪里?
我如何提供文件?
我如何让它继续运行?
正如我所说,这看起来很微不足道,但我发现的示例还连接了一个数据库,拉入了一些东西,并连接了我现在不需要的其他东西,而文档没有涵盖它。
对所有问题表示歉意,但它可以避免在评论中反复出现。
谢谢大家:)
对于静态前端,我想您可以使用节点,但我可能不会选择将节点用于静态网站。
另一种选择是在您的 EC2 实例上安装 Web 服务器,例如NGINX或Apache 。 一个快速的谷歌搜索会给你很多帮助——比如“ nginx静态网站”。
由于您没有运行节点应用程序 PM2 并没有真正意义。 如果您曾经运行过节点后端,则可以将 NGINX 设置为节点应用程序的 HTTP 代理。
好! 经过一番摆弄,我设法做我想做的事。
基本上,我所做的是:
1) 创建一个 Node 文件来为 React 的build
文件夹中的静态文件提供服务
2) 在 EC2 上安装 Node & Forever
3)克隆我的回购
4) forever
运行我的节点服务器文件
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 连接到实例
安装节点。 这些都是我从AWS”页面中使用的步骤, 在这里
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
. ~/.nvm/nvm.sh
nvm install node
node -e "console.log('Running Node.js ' + process.version)"
永久安装
npm install -g forever
克隆回购
git clone my-repo.git
切换到新创建的目录
cd my-new-directory
安装项目的依赖
npm i
创建 React 项目的生产版本
npm run build
运行我们之前创建的 Node 服务器文件
forever start server.js
您的站点现在应该已启动并运行,Node 从 React 的build
文件夹中为生产就绪构建提供服务 =)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.