【发布时间】: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