本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
如果您的应用程序源包根目录中有多个 JAR 文件,则必须包括 Procfile
文件来告知 Elastic Beanstalk 运行哪个或哪些 JAR。也可以为单 JAR 应用程序提供 Procfile
文件,以配置运行您的应用程序的 Java 虚拟机 (JVM)。
我们建议您始终在源包中将 Procfile
与应用程序一起提供。通过这种方式,您可以精确控制 Elastic Beanstalk 为您的应用程序运行的进程以及这些进程接收的参数。
有关编写和使用 Procfile
的详细信息,请参阅 Buildfile 和 Procfile。
例 Procfile
web: java -Xms256m -jar server.jar
cache: java -jar mycache.jar
web_foo: java -jar other.jar
运行应用程序中的主 JAR 的命令必须命名为 web
,而且必须是 Procfile
中列出的第一条命令。nginx 服务器将它从您的环境的负载均衡器接收到的所有 HTTP 请求都转发给此应用程序。
Elastic Beanstalk 假定 Procfile 中的所有条目应始终运行,并自动重新启动 Procfile 中定义的任何终止的应用程序。要运行将会终止并且不应重新启动的命令,请使用 Buildfile。
如果您的 Elastic Beanstalk Java SE 环境使用 Amazon Linux AMI 平台版本(在 Amazon Linux 2 之前),请阅读本节中的其他信息。
备注
-
本主题中的信息仅适用于基于亚马逊 Linux AMI (AL1) 的平台分支。 AL2023/ AL2 平台分支与之前的 Amazon Linux AMI (AL1) 平台版本不兼容,需要不同的配置设置。
-
2022 年 7 月 18 日,Elastic Beanstalk 将所有基于亚马逊 Linux AMI () 的平台分支的状态设置为停用。AL1有关迁移到当前且完全受支持的 Amazon Linux 2023 平台分支的更多信息,请参阅 将 Elastic Beanstalk Linux 应用程序迁移到 Amazon Linux 2023 或 Amazon Linux 2。
默认情况下,Elastic Beanstalk 将 nginx 代理配置为通过端口 5000 向您的应用程序转发请求。您可以覆盖默认端口,方法是将 PORT
环境属性设置为主应用程序侦听的端口。
如果您使用 Procfile
运行多个应用程序,则 Amazon Linux AMI 平台版本上的 Elastic Beanstalk 预计每个额外的应用程序都侦听编号比上一个高 100 的端口。Elastic Beanstalk 将可从每个应用程序内访问的 PORT 变量设置为它预计该应用程序运行时使用的端口。您可以通过在应用程序代码中调用 System.getenv("PORT")
访问此变量。
在上面的 Procfile
示例中,web
应用程序侦听端口 5000,cache
侦听端口 5100,而 web_foo
侦听端口 5200。web
通过读取 PORT
变量配置其侦听端口,并在该端口号的基础上加 100 来确定 cache
侦听的端口,从而能够发送其请求。