파일을 통한 설정
Ktor를 사용하면 호스트 주소와 포트,
embeddedServer
또는 EngineMain
EngineMain
의 경우, Ktor는 HOCON 또는 YAML 형식을 사용하는 설정 파일에서 구성을 로드합니다. 이 방법은 서버를 구성하는 데 더 많은 유연성을 제공하며 애플리케이션을 다시 컴파일하지 않고도 구성을 변경할 수 있도록 합니다. 또한, 명령줄에서 애플리케이션을 실행하고 해당 명령줄 인수를 전달하여 필요한 서버 매개변수를 재정의할 수 있습니다.
개요
EngineMain을 사용하여 서버를 시작하면 Ktor는 resources
디렉터리에 있는 application.*이라는 파일에서 자동으로 설정 설정을 로드합니다. 두 가지 설정 형식이 지원됩니다:
HOCON ( application.conf )
YAML ( application.yaml )
NOTE
YAML 설정 파일을 사용하려면
ktor-server-config-yaml
의존성을 추가해야 합니다.기존 Gradle/Maven 프로젝트에 Ktor 서버 의존성을 추가하는 방법을 알아보세요.
설정 파일은 최소한 ktor.application.modules
속성을 사용하여 지정된
이 경우 Ktor는 아래 Application.kt 파일의 Application.module
함수를 호출합니다:
로드할 모듈 외에도 미리 정의된 (예: 포트 또는 호스트, SSL 설정 등) 설정과 사용자 지정 설정을 포함하여 다양한 서버 설정을 구성할 수 있습니다. 몇 가지 예를 살펴보겠습니다.
SSL 설정
아래 예시는 Ktor가 8443
SSL 포트에서 수신하도록 활성화하고, 별도의 security
블록에서 필요한
미리 정의된 속성
아래는 설정 파일 내에서 사용할 수 있는 미리 정의된 설정 목록입니다.
호스트 주소.
예시 : 0.0.0.0
수신 포트. 이 속성을 0
으로 설정하여 서버를 임의 포트에서 실행할 수 있습니다.
예시 : 8080
, 0
수신 SSL 포트. 이 속성을 0
으로 설정하여 서버를 임의 포트에서 실행할 수 있습니다.
예시 : 8443
, 0
NOTE
SSL에는 아래에 나열된 추가 옵션이 필요합니다.
자동 재로드에 사용되는 감시 경로.
예시 : /
종료 URL. 이 옵션은
서버가 새 요청 수신을 중지하기 위한 최대 시간(밀리초).
서버가 완전히 중지될 때까지 기다릴 최대 시간(밀리초).
애플리케이션 호출을 처리하는 데 사용되는 스레드 풀의 최소 크기.
새 연결을 수락하고 호출 처리를 시작하는 데 사용되는 스레드 수.
연결 처리, 메시지 구문 분석 및 엔진의 내부 작업을 수행하기 위한 이벤트 그룹의 크기.
ktor.deployment.sslPort
를 설정한 경우, 다음
SSL 키 저장소.
SSL 키 저장소의 별칭.
SSL 키 저장소의 비밀번호.
SSL 개인 키의 비밀번호.
환경 변수
설정 파일에서 ${ENV}
/ $ENV
구문을 사용하여 매개변수를 환경 변수로 대체할 수 있습니다. 예를 들어, PORT
환경 변수를 ktor.deployment.port
속성에 다음과 같이 할당할 수 있습니다:
이 경우, 환경 변수 값이 수신 포트를 지정하는 데 사용됩니다. 런타임에 PORT
환경 변수가 존재하지 않으면, 다음과 같이 기본 포트 값을 제공할 수 있습니다:
코드에서 설정 읽기
Ktor를 사용하면 코드에서 설정 파일 내에 지정된 속성 값에 접근할 수 있습니다. 예를 들어, ktor.deployment.port
속성을 지정했다면...
... ApplicationEnvironment.config를 사용하여 애플리케이션 설정에 접근하고 다음과 같이 필요한 속성 값을 얻을 수 있습니다:
이것은 설정 파일에 사용자 지정 설정을 유지하고 해당 값에 접근해야 할 때 특히 유용합니다.
명령줄
EngineMain을 사용하여 서버를 생성하는 경우, 명령줄에서
사용 가능한 명령줄 옵션은 다음과 같습니다:
JAR 파일 경로.
resources
의 application.conf / application.yaml 대신 사용되는 사용자 지정 설정 파일 경로.
예시 : java -jar sample-app.jar -config=anotherfile.conf
참고 : 여러 값을 전달할 수 있습니다. java -jar sample-app.jar -config=config-base.conf -config=config-dev.conf
. 이 경우 모든 설정이 병합되며, 오른쪽 설정의 값이 우선권을 가집니다.
호스트 주소.
수신 포트.
자동 재로드에 사용되는 감시 경로.
수신 SSL 포트.
SSL 키 저장소.
해당하는 명령줄 옵션이 없는 미리 정의된 속성을 재정의해야 하는 경우, -P
플래그를 사용하세요. 예를 들면 다음과 같습니다:
또한 -P
플래그를 사용하여 사용자 지정 속성을 재정의할 수 있습니다.
예시: 사용자 지정 속성을 사용하여 환경 지정 방법
서버가 로컬에서 실행 중인지 또는 프로덕션 환경에서 실행 중인지에 따라 다른 작업을 수행하고 싶을 수 있습니다. 이를 위해 application.conf / application.yaml에 사용자 지정 속성을 추가하고, 서버가 로컬에서 실행 중인지 프로덕션에서 실행 중인지에 따라 값이 달라지는 전용 환경 변수로 초기화할 수 있습니다. 아래 예시에서는 KTOR_ENV
환경 변수가 사용자 지정 ktor.environment
속성에 할당됩니다.
런타임에 코드에서 설정을 읽어 ktor.environment
값에 접근하고 필요한 작업을 수행할 수 있습니다:
전체 예시는 다음에서 찾을 수 있습니다: engine-main-custom-environment .