AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 Procfile 配置应用程序进程

如果您的应用程序源包根目录中有多个 JAR 文件,则必须提供 Procfile 文件告知 Elastic Beanstalk 运行哪个或哪些 JAR。也可以为单 JAR 应用程序提供 Procfile 文件,以配置运行您的应用程序的 Java 虚拟机 (JVM)。

必须将此 Procfile 保存在您的源包根目录中。文件名区分大小写。Procfile 格式如下:一个进程名,后跟一个冒号,然后是运行 JAR 的 Java 命令。Procfile 中的每行内容都必须符合以下正则表达式:^[A-Za-z0-9_]+:\s*.+$

Procfile

web: java -jar server.jar -Xms256m cache: java -jar mycache.jar web_foo: java -jar other.jar

运行应用程序中的主 JAR 的命令必须命名为 web,而且必须是 Procfile 中列出的第一条命令。nginx 服务器将它从您的环境的负载均衡器接收到的所有 HTTP 请求都转发给此应用程序。

默认情况下,Elastic Beanstalk 将 nginx 代理配置为通过端口 5000 向您的应用程序转发请求。您可以覆盖默认端口,方法是将 PORT 环境属性设置为主应用程序侦听的端口。

注意

应用程序侦听的端口不会影响 nginx 服务器为了从负载均衡器接收请求而侦听的端口。

如果您使用 Procfile 运行多个应用程序,Elastic Beanstalk 预计每个额外的应用程序都侦听编号比上一个高 100 的端口。Elastic Beanstalk 将可从每个应用程序内部访问的 PORT 变量设置为它预计该应用程序运行时使用的端口。您可以通过在应用程序代码中调用 System.getenv("PORT") 访问此变量。

注意

在上例中,web 应用程序侦听端口 5000,cache 侦听端口 5100,而 web_foo 侦听端口 5200。web 通过读取 PORT 变量配置其侦听端口,并在该端口号的基础上加 100 来确定 cache 侦听的端口,从而能够发送其请求。

源自进程的标准输出和错误流以 Procfile 开头,捕获在以进程命名的日志文件中并存储在 /var/log 中。例如,上例中的 web 进程分别为 web-1.logweb-1.error.log 生成名为 stdoutstderr 的日志。

Elastic Beanstalk 假定 Procfile 中的所有条目应始终运行,并自动重新启动 Procfile 中定义的所有终止的应用程序。要运行将会终止并且不应重新启动的命令,请使用 Buildfile