【问题标题】:How to deploy create-react-app in AWS EC2如何在 AWS EC2 中部署 create-react-app
【发布时间】:2018-05-09 09:47:42
【问题描述】:

我正在使用 react-router,所以我想在 AWS Ec2 中托管。如何部署应用程序并在后台永久运行或让我知道是否有其他方式

【问题讨论】:

    标签: reactjs amazon-ec2


    【解决方案1】:

    您可以使用 Amazon S3。

    在您的本地实例中执行 npm run build。

    将文件上传到 S3 存储桶实例。

    可以选择静态网站托管。

    https://s3.console.aws.amazon.com/s3/buckets

    【讨论】:

    • 我已经部署了我的应用程序,它使用 react-router-dom 并且它可以工作。您可能希望将 react-router-dom 用于 99.9% 的 Web 开发。
    • 我在浏览器中构建 prod 后打开了 index.html 但没有工作,这就是为什么我在这里问它在 s3 上工作吗?
    • 请使用亚马逊的s3 bucket上传build文件夹中的文件并测试。如果它在 s3 中仍然无法工作,请告诉我,我很乐意为您提供帮助,因为我知道我最初部署时遇到了多少困难:D
    • 请注意,静态托管包含任何类型凭据的反应站点是非常不安全的
    • OP 要求 EC2,你用 S3 回应,而且这个答案不包含太多方便的自动化......
    【解决方案2】:

    【讨论】:

    • 在ec2中部署应用后如何让react应用在后台运行。目前关闭终端后 ec2 url 不可访问。
    • @Sravani,如果你是初学者,请不要使用 Ec2,它的成本太高,而且对初学者来说有点混乱。您可以使用数字海洋的水滴轻松构建整个应用程序 - digitalocean.com/community/tutorials/… 只需确保完成链接中提到的所有先决条件。现在,至于您的问题,您可以使用 pm2 在生产模式下永久运行应用程序。 Step-1 使用npm install -g pm2 安装 pm2 Step-2 关闭运行反应的服务器,使用 sudo pm2 start server.js 使用 pm2 运行应用程序
    【解决方案3】:

    您可以在任何云 VM(虚拟机)中构建和部署 React.js 应用,例如带有自定义端口的 ec2。

    通过使用它,您可以在同一台机器上部署多个 React 应用程序。

    部署应用程序需要什么?

    1. Nodejs
    2. PM2js
    3. Koa.js
    4. Koa-static.js

    您只需要执行此过程。

    1. 在您的项目中运行此命令 npm run build
    2. 它将在您的项目中创建一个构建文件夹
    3. 创建项目文件夹的 zip 并将其移动到您的 VM (ec2) 上并解压缩。
    4. 在您的项目根文件夹中创建一个 Nodejs 脚本文件并将以下脚本粘贴到其中。

    文件名:buildStart.js

    const httpPort = 80;
    const httpsPort = 443;
    const koa = require( 'koa' );
    const serve = require( 'koa-static' );
    const http = require( 'http' );
    const https = require( 'https' );
    const fs = require( 'fs' );
    const app = new koa();
    const cert = fs.readFileSync( '/ssl/cert.crt' );
    const key = fs.readFileSync( '/ssl/private.key' );
    
    app.use( serve( __dirname + '/build', {
        maxage: 365 * 24 * 60 * 60
    } ) );
    
    http.createServer( app.callback() ).listen( httpPort, () => console.log( `sever is listening on ${httpPort}` ) );
    https.createServer( { cert, key }, app.callback() ).listen( httpsPort, () => console.log( `sever is listening on ${httpsPort}` ) );
    

    以上代码将在 HTTPHTTPS 上启动您的 react 应用程序。如果您没有 https 证书,则只能为 HTTP 启动它。

    const httpPort = 80;
    const httpsPort = 443;
    const koa = require( 'koa' );
    const serve = require( 'koa-static' );
    const http = require( 'http' );
    const https = require( 'https' );
    const fs = require( 'fs' );
    const app = new koa();
    
    app.use( serve( __dirname + '/build', {
        maxage: 365 * 24 * 60 * 60
    } ) );
    
    http.createServer( app.callback() ).listen( httpPort, () => console.log( `sever is listening on ${httpPort}` ) );
    

    【讨论】:

      【解决方案4】:

      我对 React 有点陌生,但我想在这里补充一下我的经验。 我使用 Apache 在 AWS EC2 上部署了我的 CRA 应用程序。

      • 您在启动 EC2 实例后关注 this link 安装 Apache。
      • 构建您的 React 应用并上传“构建”文件夹。

      现在完成了。最后,确保使用 HashRouter 而不是 BrowserRouter。 因为 EC2 不允许 .htaccess 文件将所有请求重定向到 index.html,但是用 HashRouter 替换 BrowserRouter 帮助我解决了这个问题。 希望这可以帮助其他人节省时间。谢谢。

      【讨论】:

        猜你喜欢
        • 2018-09-06
        • 2020-01-27
        • 2023-03-02
        • 1970-01-01
        • 1970-01-01
        • 2019-07-11
        • 2020-08-18
        • 2018-10-19
        • 2020-12-31
        相关资源
        最近更新 更多