【问题标题】:Deploy springboot application and react application to ubuntu server部署springboot应用和react应用到ubuntu服务器
【发布时间】:2019-03-05 07:26:36
【问题描述】:

我创建了一个简单的应用程序,它由一个 reactjs 前端和一个作为后端的 spring boot 应用程序组成。它在我的本地环境中运行良好; react 应用在 3000 端口上运行,spring 应用在 9000 端口上运行。

我正在尝试在暂存环境中托管此应用程序。我想在 digitalocean 上的 ubuntu 服务器上同时托管 reactjs 和 spring boot 应用程序。我已经设法使用 nginx 部署了 reactjs 前端,现在我想使用 apache2 部署后端。

我在部署 Spring Boot 应用程序时遇到了困难。我已经生成了一个 WAR 文件。

在我的 react 应用程序中,我调用后端 spring 应用程序作为浏览器前端的 api。我已经设置了 apache 应用程序来监听端口 9000,如下所示:

<VirtualHost *:9000>
   ServerName 46.101.34.160
   ServerAdmin webmaster@localhost
   DocumentRoot 
/var/www/html/BackEndBookingAndCollections
   </VirtualHost>

我的前端配置详细信息在文件中如下所示;

/etc/nginx/sites-available/FEBookingAndCollections

内容如下:

server {
        listen 80;

        root /var/www/FEBookingAndCollections/build;
        listen [::]:80 default_server;

        server_name 46.101.34.160;
        index index.html index.htm;

        location / {
                 try_files $uri /index.html;
        }

        location /api/bookings/ {
                proxy_pass http://46.101.34.160:9000/api/bookings;
        }
}

在谷歌浏览器的浏览器中出现以下错误:

Failed to load resource: net::ERR_CONNECTION_REFUSED :9000/api/bookings:1

【问题讨论】:

  • 你是在apache里面使用tomcat来部署spring war吗?
  • @underscore 不,我只在 ubuntu 服务器上安装了 apache2。然后我将文档根指向战争文件所在的目录。
  • war 文件如何在没有服务器的情况下自行部署?
  • 我通过 ssh 进入服务器,然后将 war 文件从本地计算机复制到服务器计算机。然后我将 apache2 配置为读取 war 文件的类路径
  • @benbrick @underscore 你不需要安装 tomcat 或 apache2 来服务后端。由于它是一个 spring-boot 应用程序,您可以利用嵌入式服务器(默认为 tomcat)为后端提供服务。如果您有 spring-boot-started-web 作为依赖项和所有相关配置,则可以使用 java -jar artifact.war

标签: spring reactjs nginx apache2 web-deployment


【解决方案1】:

使用 spring boot,您不必使用外部 Tomcat。您可以使用嵌入式 tomcat 将您的应用程序打包到 jar 中。你可以在这里找到更多信息 - https://www.baeldung.com/deployable-fat-jar-spring-boot

【讨论】:

    【解决方案2】:

    没有服务器就无法部署战争文件。请按照以下步骤操作

    1) 安装tomcat

    2) 查找 tomcat webapps 路径(/usr/local/tomcat/webapps)

    3) 将您的 war 文件复制到 webapps。 (使用 scp)

    4) 确保您的 war 文件和 tomcat 在同一个端口上侦听。 8080 或 9000

    5) 通过 apache 代理你的 api

    【讨论】:

    • 我以为 apache2 是一个服务器。因为我在 Ubuntu 服务器上安装了 apache2 来为后端应用程序提供服务。
    • 是的。阿帕奇是一个服务器。但是当你使用java时。你必须使用 tomcat 包装器。了解他们的信。
    • 你不需要安装tomcat。可以使用spring boot提供的嵌入式tomcat。
    • @MadhuBhat 这没有任何意义。你如何管理命令?
    • @MadhuBhat 这是家庭作业练习。不适合生产环境。
    猜你喜欢
    • 2021-11-07
    • 2020-01-05
    • 2021-08-03
    • 2016-04-30
    • 2020-02-13
    • 2020-11-20
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多