gpt4 book ai didi

java - 使用 FTP 将 Spring Boot app.jar 部署到 Azure 不起作用

转载 作者:行者123 更新时间:2023-11-30 01:56:23 27 4
gpt4 key购买 nike

我正在尝试将本地构建的 Spring Boot 应用程序部署到 Azure 应用服务。请注意,我刚开始使用 Azure。

我使用 Azure 门户创建的应用服务具有以下特征:

  • 堆栈:Java SE (JRE 8)

这应该可以使应用程序作为 jar 运行。

我还添加了以下应用程序设置(环境变量):

  • JAVA_OPTS:-Dserver.port=80
  • SPRING_PROFILES_ACTIVE:产品

这应该设置正确的服务器端口,假设端口 80 是我应该使用的正确端口。我读过其他帖子。第二个应用程序设置将确保使用应用程序内的 prod 配置文件。

我使用 FTP 连接到应用服务,删除了 default.jar 并上传了我自己的 app.jar,然后重新启动了应用服务。

我收到应用程序已重新启动的通知,但它似乎不起作用。我无法访问该应用程序,但也无法找到日志文件。在 Azure 门户中尝试日志流仅提供有关启动站点容器和 docker 相关日志的信息,但不提供我的应用程序的日志。

我想知道下一步应该从哪里进行故障排除。

请注意,我使用的是 FTP 部署选项,因为我的应用程序是使用 Gradle 构建的,而 Azure 似乎只有一个用于部署应用程序的 Maven 插件。

更新

我使用 FTP 添加了一个 web.config,其中包含:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="%JAVA_HOME%\bin\java.exe"
arguments="-Djava.net.preferIPv4Stack=true -Dserver.port=%HTTP_PLATFORM_PORT% -jar &quot;%HOME%\site\wwwroot\app.jar&quot;">
</httpPlatform>
</system.webServer>
</configuration>

我重新启动了应用服务,但还是一样。我也没有收到任何错误(或者至少我不知道在哪里查找)。

更新2

通过 Azure 门户中的“诊断和解决问题”,我能够查看应用程序日志。

它们显示应用程序已成功启动,但随后给出:

2019-01-25T12:53:31.730996889Z #
2019-01-25T12:53:31.731125589Z # A fatal error has been detected by the Java Runtime Environment:
2019-01-25T12:53:31.731207089Z #
2019-01-25T12:53:31.737259893Z # SIGSEGV (0xb) at pc=0x000000000000b32e, pid=197, tid=0x00007fab3d393ae8
2019-01-25T12:53:31.740444095Z #
2019-01-25T12:53:31.740455395Z # JRE version: OpenJDK Runtime Environment (8.0_192-b01) (build 1.8.0_192-b01)
2019-01-25T12:53:31.740459895Z # Java VM: OpenJDK 64-Bit Server VM (25.192-b01 mixed mode linux-amd64 compressed oops)
2019-01-25T12:53:31.740463995Z # Problematic frame:
2019-01-25T12:53:31.740467795Z # C 0x000000000000b32e
2019-01-25T12:53:31.740471495Z #
2019-01-25T12:53:31.740475195Z # Core dump written. Default location: //core or core.197
2019-01-25T12:53:31.740479095Z #
2019-01-25T12:53:31.770424313Z # An error report file with more information is saved as:
2019-01-25T12:53:31.778837718Z # //hs_err_pid197.log
2019-01-25T12:53:31.827292848Z #
2019-01-25T12:53:31.827404948Z # If you would like to submit a bug report, please visit:
2019-01-25T12:53:31.827534548Z # http://www.azulsystems.com/support/
2019-01-25T12:53:31.827635448Z #
2019-01-25T12:53:32.357760775Z /bin/init_container.sh: line 123: 197 Segmentation fault (core dumped) java $JAVA_OPTS -jar "$JAR_PATH"
Docker logs from instance: RD0003FF30DE7C

请注意,相同的应用程序在 Heroku 上成功运行了几个月。

最佳答案

发生了一些事情。添加提到的 web.config 后,应用程序正在部署。

Java 运行时环境检测到 fatal error 是由于使用内存和磁盘存储组合使用 Ehcache 造成的。

从应用程序中删除 Ehcache 后,应用程序仍然无法工作,根据日志,我发现应用程序在 230 秒内没有启动。将应用程序设置 WEBSITES_CONTAINER_START_TIME_LIMIT 更新为 1800 后,它就起作用了。

我不知道为什么应用程序需要这么长时间才能启动。查看日志,发现某些区域没有花费大量时间;只是逐渐缓慢。应用程序在本地启动需要 8 秒,在 Heroku 上启动需要 20 秒

关于java - 使用 FTP 将 Spring Boot app.jar 部署到 Azure 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54355254/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com