Skip to content

코드로 설정하기

코드로 설정하기

Ktor를 사용하면 호스트 주소, 포트,

서버 모듈
모듈을 사용하면 경로를 그룹화하여 애플리케이션을 구성할 수 있습니다.
등을 포함한 다양한 서버 파라미터를 코드로 직접 설정할 수 있습니다. 설정 방법은
embeddedServer 또는 EngineMain
애플리케이션 배포 요구 사항에 따라 서버를 생성하는 방법을 알아봅니다.
중 어떤 방식으로 서버를 설정하느냐에 따라 달라집니다.

embeddedServer를 사용하면 원하는 파라미터를 함수에 직접 전달하여 서버를 설정합니다. embeddedServer 함수는

서버 엔진
네트워크 요청을 처리하는 엔진에 대해 알아봅니다.
, 서버가 수신 대기할 호스트와 포트, 그리고 추가 설정을 포함하여 서버 구성을 위한 다양한 파라미터를 받습니다.

이 섹션에서는 embeddedServer를 실행하는 여러 가지 예시를 살펴보며 서버를 유용하게 설정하는 방법을 설명합니다.

기본 설정

아래 코드 스니펫은 Netty 엔진과 8080 포트를 사용하는 기본 서버 설정을 보여줍니다.

kotlin

port 파라미터를 0으로 설정하면 서버를 무작위 포트에서 실행할 수 있습니다. embeddedServer 함수는 엔진 인스턴스를 반환하므로, ApplicationEngine.resolvedConnectors 함수를 사용하여 코드에서 포트 값을 가져올 수 있습니다.

엔진 설정

embeddedServer 함수를 사용하면 configure 파라미터를 통해 엔진 전용 옵션을 전달할 수 있습니다. 이 파라미터에는 모든 엔진에 공통적인 옵션이 포함되어 있으며, ApplicationEngine.Configuration 클래스에 의해 노출됩니다.

아래 예시는 Netty 엔진을 사용하여 서버를 설정하는 방법을 보여줍니다. configure 블록 내에서 호스트와 포트를 지정하기 위한 connector를 정의하고 다양한 서버 파라미터를 커스터마이징합니다.

kotlin

connectors.add() 메서드는 지정된 호스트(127.0.0.1)와 포트(8080)로 커넥터(connector)를 정의합니다.

이러한 옵션 외에도 다른 엔진 전용 속성을 설정할 수 있습니다.

Netty

Netty 전용 옵션은 NettyApplicationEngine.Configuration 클래스에 의해 노출됩니다.

kotlin

Jetty

Jetty 전용 옵션은 JettyApplicationEngineBase.Configuration 클래스에 의해 노출됩니다.

configureServer 블록 내에서 Jetty 서버를 설정할 수 있으며, 이 블록은 Server 인스턴스에 대한 접근을 제공합니다.

idleTimeout 속성을 사용하여 연결이 닫히기 전까지 유휴 상태로 유지될 수 있는 시간을 지정합니다.

kotlin

CIO

CIO 전용 옵션은 CIOApplicationEngine.Configuration 클래스에 의해 노출됩니다.

kotlin

Tomcat

Tomcat을 엔진으로 사용하는 경우, configureTomcat 속성을 사용하여 설정할 수 있으며, 이 속성은 Tomcat 인스턴스에 대한 접근을 제공합니다.

kotlin

사용자 정의 환경

아래 예시는 ApplicationEngine.Configuration 클래스로 표현되는 사용자 정의 설정을 사용하여 여러 커넥터 엔드포인트로 서버를 실행하는 방법을 보여줍니다.

kotlin

전체 예시는 embedded-server-multiple-connectors 를 참고하세요.

TIP

사용자 정의 환경을 사용하여 HTTPS를 제공 할 수도 있습니다.

명령줄 설정

Ktor를 사용하면 명령줄 인수를 사용하여 embeddedServer를 동적으로 설정할 수 있습니다. 이는 포트, 호스트 또는 타임아웃과 같은 설정을 런타임에 지정해야 하는 경우에 특히 유용할 수 있습니다.

이를 위해 CommandLineConfig 클래스를 사용하여 명령줄 인수를 설정 객체로 파싱하고 설정 블록 내에서 전달합니다.

kotlin

이 예시에서는 porthost와 같은 엔진 설정 값을 재정의하기 위해 Application.ConfigurationtakeFrom() 함수를 사용합니다. loadCommonConfiguration() 함수는 타임아웃과 같은 루트 환경의 설정을 로드합니다.

서버를 실행하려면 다음과 같은 방식으로 인수를 지정합니다.

shell

TIP

정적 설정의 경우 설정 파일이나 환경 변수를 사용할 수 있습니다. 자세한 내용은 파일로 설정하기 를 참고하세요.