

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Procfile 設定應用程式程序
<a name="java-se-procfile"></a>

若您應用程式原始碼套件的根目錄內含多個 JAR 檔案，請務必納入 `Procfile` 檔案，以指示 Elastic Beanstalk 應執行的 JAR。您亦可為單一 JAR 應用程式納入 `Procfile` 檔案，藉此設定執行您應用程式的 Java 虛擬機器 (JVM)。

建議務必在原始碼套件和應用程式中，一併提供 `Procfile`。如此一來，就能精確掌控 Elastic Beanstalk 會針對應用程式執行哪些程序，以及這些程序會收到哪些引數。

如需撰寫和使用 的詳細資訊，`Procfile`請參閱 [Buildfile 和 Procfile](platforms-linux-extend.build-proc.md)。

**Example 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`](java-se-buildfile.md)。

## 在 Amazon Linux AMI (Amazon Linux 2 之前) 上使用 Procfile
<a name="java-se-procfile.alami"></a>

如果您的 Elastic Beanstalk Java SE 環境使用 Amazon Linux AMI 平台版本 (Amazon Linux 2 之前)，請閱讀本節中的其他資訊。

**備註**  
本主題中的資訊僅適用於以 Amazon Linux AMI (AL1) 為基礎的平台分支。AL2023/AL2 平台分支與舊版 Amazon Linux AMI (AL1) 平台版本不相容，*需要不同的組態設定*。
 在 [2022 年 7 月 18 日，](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html)Elastic Beanstalk 會根據 Amazon Linux AMI (AL1) 將所有平台分支的狀態設定為**已淘汰**。如需有關遷移至完全支援的目前 Amazon Linux 2023 平台分支的詳細資訊，請參閱 [將您的 Elastic Beanstalk Linux 應用程式遷移到 Amazon Linux 2023 或 Amazon Linux 2](using-features.migration-al.md)。

### 連接埠傳遞 — Amazon Linux AMI (AL1)
<a name="java-se-procfile.alami.ports"></a>

Elastic Beanstalk 預設會設定 nginx 代理將請求轉送至連接埠 5000 上的應用程式。您可將 `PORT` [環境屬性](java-se-platform.md#java-se-options)設定為主要應用程式接聽的連接埠，藉此覆寫預設連接埠。

如果您使用 `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` 接聽的連接埠，從而向其傳送請求。