【问题标题】:How can I setup my react app in ubuntu server如何在 ubuntu 服务器中设置我的反应应用程序
【发布时间】:2017-05-01 21:59:11
【问题描述】:

我在 react js 中完成了一些任务,我想将它们移动到服务器以供我的客户审查。但我不知道,如何在服务器中运行这个反应应用程序。目前我正在使用http://localhost:3000

我有几个问题。 1. 我们是否也需要在 ubuntu 服务器中配置所有必要的设置..? 2. 我有一个指向我的 Ubuntu 的 IP 地址。那么,如何使用该 IP 在服务器中运行应用程序?

这是我的 webpack.production.js 文件

var path = require('path');
var webpack = require('webpack');
module.exports = {
  entry: './main.js',
  output: {
    path: path.join(__dirname, '/dist/assets'),
    filename: '[name].bundle.js',
    publicPath: '/',
    sourceMapFilename: '[name].map'
  },

  plugins: [
    new webpack.LoaderOptionsPlugin({
      minimize: true,
      debug: false
    }),
    new webpack.optimize.UglifyJsPlugin({
      beautify: false,
      mangle: {
        screw_ie8: true,
        keep_fnames: true
      },
      compress: {
        screw_ie8: true
      },
      comments: false
    })
  ],
  module: {
    loaders: [
      {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        loader: 'babel-loader',
        query: {
          presets: ['es2015', 'react']
        }
      }
    ]
  }
}

"scripts": {
    "start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev",
    "start:dev": "webpack-dev-server --inline  --history-api-fallback",
    "start:prod": "webpack && node server.js",
    "build": "webpack -p --config ./webpack.production.config.js",
    "build:dev": "webpack --env=dev --progress --profile --colors",
    "build:dist": "webpack --env=production --progress --profile --colors"
  }

谢谢

【问题讨论】:

    标签: reactjs react-redux


    【解决方案1】:

    如果您使用 Webpack 创建捆绑包,您需要将 index.htmlbundle.js 移动到客户端的服务器并配置 HTTP 服务器,例如Nginx 或 Apache 指向 index.html 文件。

    【讨论】:

    • 我创建了几个组件,这些组件通过 API 调用连接到 PHP 服务器。那么如果我们只是复制 index.html 和 bundle.js ,那我们如何获取那些组件和其他 js 相关文件..?
    • 您可以使用 Apache 或 Nginx 创建不同的域,您可以将服务器挂载到 http://youraddress/api 并将 React 应用程序挂载到 http://youraddress/。您应该查看link 以了解如何配置它们。 (我选择的服务器是 Nginx)。
    • 我的问题是,如何在生产中设置我的反应项目。我知道,如何配置 Apache 和 PHP。因此,我可以处理 Web 服务。但是,当我尝试构建反应脚本时,我没有得到任何构建文件夹(即使我没有得到任何错误)。那么我是否需要配置所有软件,如 npm,在我的服务器中做出反应..?即使,如果我在服务器中配置它们,那么我该如何访问它们。默认情况下,它将提供 localhost 或本地 IP。但我需要弹性 IP。你能在这方面给我建议吗?
    • 这是一个非常广泛的问题。您应该只需要从服务器中的 Webpack 复制 index.html 和 bundle.js。如果您无法在本地计算机中获取这些内容,则可能会出现静默错误或 Webpack 配置不正确。如果您能够获取它们,那么您只需将它们复制到您配置的 Apache 服务器。
    • 我刚刚用我的 webconfig.production 文件和 package.json 文件更新了我的问题。请您检查一次。我按照上面提到的相同方式生成了 bundle.js 文件。现在我将 bundle.js、index.html 以及其他一些依赖的 js 和 css 文件复制到我的服务器上。现在,我收到此错误 - 警告:看起来您正在使用 React 开发版本的缩小副本。将 React 应用部署到生产环境时,请确保使用跳过开发警告且速度更快的生产构建版本
    【解决方案2】:

    这个问题非常广泛。如果您有服务器,则需要使用 ssh 登录并安装 Apache 或其他服务器(如 nginx)。我猜您的 reacft 应用程序不依赖于 PHP 或节点,因此它是带有 JS 的静态 html。所以基本上:

    sudo apt-get install apache2
    

    将安装服务器并检查它是否正在运行,只需使用浏览器并导航到http://<your server ip>,您应该会看到一个页面:»它正在运行«

    如果是这样:

    cd /var/www/html
    rm -rf *
    exit
    
    cd /your/local/project
    scp -r * user@<your server ip>:/var/www/html
    

    这应该将您的所有文件上传到/var/www/html。如果您随后收到Forbidden 响应,则需要在/var/www/html 中回复sudo chown -R www-data:www-data *

    看看这里https://help.ubuntu.com/lts/serverguide/httpd.html

    但是,设置服务器会变得更加复杂,具体取决于您的需求:如 node/php/mysql 支持,当然还有操作系统,上面的说明适用于 ubuntu。此外,不包括安全方面的考虑,所以如果不知道自己在做什么,请小心!

    【讨论】:

    • 我创建了几个组件,这些组件通过 PHP 服务器与 API 调用链接。那么,有什么方法可以在 aws 服务器中运行我的项目。我完成了所有的安装。当我将主机作为我的 IP 地址时,它会说 listen EADDRNOTAVIL :3030
    猜你喜欢
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多