Skip to content

建立伺服器

建立伺服器

在建立 Ktor 應用程式之前,您需要考慮應用程式將如何

  • 作為一個 獨立的軟件包

    在這種情況下,用於處理網路請求的應用程式

    引擎
    Learn about engines that process network requests.
    應作為應用程式的一部分。 您的應用程式可以控制引擎設定、連線和 SSL 選項。

  • 作為一個 servlet

    在這種情況下,Ktor 應用程式可以部署在 servlet 容器(例如 Tomcat 或 Jetty)中, 由容器控制應用程式的生命週期和連線設定。

獨立的軟件包

若要將 Ktor 伺服器應用程式作為獨立的軟件包交付,您需要先建立一個伺服器。 伺服器配置可以包含不同的設定: 伺服器

引擎
Learn about engines that process network requests.
(例如 Netty、Jetty 等)、 各種引擎特定的選項、主機與連接埠值等等。 在 Ktor 中有兩種建立和執行伺服器的主要方法:

  • embeddedServer 函式是在 程式碼中配置伺服器參數 並快速執行應用程式的簡單方法。

  • EngineMain 提供更靈活的伺服器配置方式。您可以 在檔案中指定伺服器參數 並在不重新編譯應用程式的情況下更改配置。此外,您可以從命令列執行應用程式,並透過傳遞對應的命令列引數來覆寫必要的伺服器參數。

程式碼中的配置

embeddedServer 函式是在

程式碼
Learn how to configure various server parameters in code.
中配置伺服器參數並快速執行應用程式的簡單方法。在下方的程式碼片段中,它接受一個
引擎
Learn about engines that process network requests.
和連接埠作為參數來啟動伺服器。在下面的範例中,我們使用 Netty 引擎執行伺服器,並監聽 8080 連接埠:

kotlin

有關完整範例,請參閱 embedded-server

檔案中的配置

EngineMain 使用選定的引擎啟動伺服器,並從外部

配置文件
Learn how to configure various server parameters in a configuration file.
application.confapplication.yaml,通常位於 resource 目錄中)載入
應用程式模組
Modules allow you to structure your application by grouping routes.

除了指定要載入的模組外,配置文件還可以包含各種伺服器參數,例如連接埠、主機和 SSL 設定。例如,下方的配置將伺服器連接埠設定為 8080

kotlin
yaml

NOTE

除了使用 EngineMain.main() 立即啟動伺服器,您還可以使用 EngineMain.createServer() 手動建立伺服器執行個體。如需更多資訊,請參閱

有關完整範例,請參閱 engine-main engine-main-yaml

Servlet

Ktor 應用程式可以在包含 Tomcat 和 Jetty 的 servlet 容器中執行和部署。 若要部署在 servlet 容器中,您需要產生一個

WAR
Learn how to run and deploy a Ktor application inside a servlet container using a WAR archive.
封存檔,然後將其部署到支援 WAR 的伺服器或雲端服務。