로컬 개발 서버 옵션

로컬 개발 서버(dev_appserver.py)는 gcloud CLI의 App Engine 구성요소의 일부입니다. 이 주제에서는 dev_appserver.py 사용 방법에 대한 고급 정보를 제공합니다.

Google Cloud SDK와 함께 제공되는 로컬 개발 서버인 dev_appserver에 의지하기보다 단위 테스트와 통합 테스트를 실행하는 pytest, 격리된 환경을 만들기 위한 virtualenv 등 표준 Python 도구를 사용하는 것이 좋습니다.

로컬 테스트에 대한 자세한 내용은 로컬 개발 서버 사용을 참조하세요.

로컬 개발 서버 도구 설정

샘플 dev_appserver.py 명령어는 다음과 같습니다.

python3 CLOUD_SDK_ROOT/bin/dev_appserver.py OPTION yaml_path FILES

다음을 바꿉니다.

  • CLOUD_SDK_ROOT를 Google Cloud CLI를 설치한 루트 디렉터리의 경로로 바꿉니다. 기본 디렉터리는 ./google-cloud-sdk/입니다.
  • OPTION을 로컬 개발 서버에서 지원하는 플래그로 바꿉니다.
  • FILES는 위치 인수 yaml_path에 대해 하나 이상의 app.yaml 파일을 서비스당 하나씩 지정합니다.

전체 옵션 목록을 보려면 다음을 실행합니다.

python3 CLOUD_SDK_ROOT/bin/dev_appserver.py -h

일반 옵션

가장 일반적인 옵션은 다음과 같습니다.

--admin_host=ADMIN_HOST
로컬 개발 서버의 관리 콘솔이 바인딩되어야 하는 호스트 이름입니다(기본값: localhost).
--admin_port=ADMIN_PORT
로컬 개발 서버의 관리 콘솔이 바인딩되어야 하는 포트입니다(기본값: 8000).
--addn_host=ADDN_HOST
이 인수를 사용하면 추가 HTTP 호스트 헤더 값을 허용 목록에 추가할 수 있으므로 호스트 확인을 사용 중지하지 않고도 서버가 프록시 뒤에서 액세스할 수 있습니다(--enable_host_checking 참조). *.로 시작하는 추가 호스트는 모든 하위 도메인을 허용합니다. 예를 들어 *.example.orghost.example.org를 허용하지만 sub.host.example.org 또는 example.org는 허용하지 않습니다. **.로 시작하는 호스트는 모든 깊이의 하위 도메인을 허용합니다. 예를 들어 **.example.comhost.example.comsub.host.example.com을 허용하지만 example.com은 허용하지 않습니다. (기본값: [])
--allow_skipped_files=...
app.yaml skip_files 또는 static 핸들에 지정된 파일을 애플리케이션에서 읽을 수 있도록 합니다(기본값: False).
-A APP_ID, --application=...
app.yaml 파일에서 애플리케이션 값을 재정의하여 애플리케이션을 설정합니다(기본값: None).
--appidentity_email_address=...
다운로드 가능한 키가 있는 서비스 계정과 연결된 이메일 주소입니다. 로컬 애플리케이션 ID가 없는 경우 None일 수 있습니다(기본값: None).
--appidentity_private_key_path=...
서비스 계정과 연결된 비공개 키 파일의 경로입니다(.pem 형식). appidentity_email_address이 설정된 경우 설정해야 합니다(기본값: None).
--api_host=API_HOST
API 서버를 결합해야 하는 호스트 이름입니다(기본값: localhost).
--api_port=API_PORT
API 호출을 위한 서버를 결합해야 하는 포트입니다(기본값: 0).
--auth_domain=...
사용할 승인 도메인의 이름입니다(기본값: gmail.com).
--auto_id_policy=...
지원이 중단되었습니다. 로컬 Datastore가 자동 ID를 할당하는 방법입니다. 옵션은 sequential 또는 scattered입니다(기본값: scattered).
--automatic_restart=...
모듈과 관련된 파일이 변경되면 인스턴스를 자동으로 다시 시작합니다(기본값: True).
--blobstore_path=...
blob 콘텐츠를 저장하는 데 사용되는 디렉터리 경로입니다(설정되지 않은 경우 기본값은 --storage_path의 하위 디렉터리)(기본값: None).
--clear_datastore=yes|no
웹 서버를 시작하기 전에 Datastore 데이터 및 기록 파일을 지웁니다.(기본값: no).
--clear_search_indexes...
검색 색인을 삭제합니다(기본값: False).
--custom_entrypoint=...

커스텀 런타임 모듈의 진입점을 지정합니다. 그러한 모듈이 존재하는 경우 필수입니다. 포트 번호를 인수로 전달하려면 따옴표 없이 문자열에 {port}를 포함합니다(기본값: ). 예를 들면 다음과 같습니다.

--custom_entrypoint="gunicorn -b localhost:{port}
  mymodule:application"
--datastore_consistency_policy {consistent,random,time}

Datastore 쓰기를 전역 쿼리에 표시할지 여부를 결정할 때 적용할 정책입니다(기본값: time).

--datastore_emulator_cmd=...

Cloud Datastore 에뮬레이터를 호출하는 스크립트의 경로입니다. 비워 두면 dev_appserver가 Google Cloud SDK에서 Datastore 에뮬레이터를 찾습니다(기본값: None).

--datastore_emulator_port=...

dev_appserver가 Cloud Datastore 에뮬레이터를 시작할 포트 번호입니다(기본값: 0).

--datastore_path=...

로컬 데이터 저장소 데이터 파일에 사용할 경로입니다. 존재하지 않으면 서버가 이 파일을 만듭니다.

--default_gcs_bucket_name=...

기본 Cloud Storage 버킷 이름입니다(기본값: None).

--dev_appserver_log_level {debug,info,warning,critical,error}

로그 수준이며, 개발 서버에서 생성되는 로깅 메시지가 콘솔에 표시되지 않습니다(이 플래그는 애플리케이션 코드보다 dev_appserver.py의 문제를 진단하는 데 더 유용함)(기본값: info).

--enable_host_checking=yes|no

애플리케이션 모듈, API 서버, 관리 서버에 HTTP 호스트 확인을 적용할지 여부를 결정합니다. 호스트 검사는 DNS 리바인딩 공격으로부터 보호하고 보안 영향을 이해한 후에만 사용 중지합니다(기본값: True).

--enable_console=yes|no

관리자 뷰에서 대화형 콘솔을 사용 설정합니다(기본값: False).

--enable_sendmail=yes|no

이메일 메시지 전송을 위해 로컬 컴퓨터의 Sendmail 설치를 사용합니다.

--enable_task_running=yes|no

개발 서버에서 push 태스크를 실행하도록 사용 설정합니다(기본값: yes). no를 지정하면 서버가 push 태스크를 실행하지 않습니다.

--env_var=...

로컬 런타임 프로세스에 사용자가 정의한 환경 변수입니다. 각 env_varkey=value 형식이며 개발자는 여러 환경 변수를 정의할 수 있습니다. 이 플래그는 app.yamlenv_variables 외에도 로컬 프로세스에 추가 환경 변수를 설정할 수 있게 해줍니다.

예시: --env_var KEY_1=val1 --env_var KEY_2=val2

--grpc_api_port...

gRPC API 서버가 리슨하는 포트입니다(기본값:0).

--help

유용한 메시지를 출력한 후 종료합니다.

--host=...

서버에 사용할 호스트 주소입니다. 네트워크의 다른 컴퓨터에서 개발 서버에 액세스하려면 이 주소를 설정해야 합니다. 주소가 0.0.0.0이면 localhost 액세스 및 IP 또는 호스트 이름 액세스가 모두 허용됩니다(기본값: localhost).

--log_level=...

로깅 메시지가 콘솔에 기록되는 최저 로깅 수준입니다. 지정된 로깅 수준 이상의 메시지가 출력됩니다. 가능한 값은 debug, info, warning, error, critical입니다.

--logs_path=...

기본적으로 로컬 개발 서버의 로그는 메모리에만 저장됩니다. 로그를 파일에 저장하기 위해 로컬 개발 서버를 실행할 때 이 옵션을 지정하면 서버가 다시 시작되어도 로그를 계속 사용할 수 있습니다. SQLite 데이터베이스 파일에 디렉터리 경로와 이름을 지정해야 합니다. SQLite 데이터베이스 파일은 아직 존재하지 않는 경우, 지정된 이름을 사용하여 생성됩니다. 예를 들면 다음과 같습니다.

예시: --logs_path=/home/logs/boglogs.db

--max_module_instances=...

특정 모듈용으로 시작 가능한 런타임 인스턴스의 최대 수입니다. 값은 정수일 수 있으며, 이 경우 모든 모듈은 인스턴스의 수 또는 쉼표로 구분된 module:max_instances의 목록으로 제한됩니다(기본값: None). 예시: default:5,backend:3

--mysql_host=MYSQL_HOST

시뮬레이션된 Cloud SQL 스토리지에 사용되는 실행 중인 MySQL 서버의 호스트 이름입니다(기본값: localhost).

--mysql_port=MYSQL_PORT

시뮬레이션된 Cloud SQL 스토리지에 사용되는 실행 중인 MySQL 서버의 포트 번호입니다(기본값: 3306).

--mysql_user=MYSQL_USER

--mysql_host--mysql_port 또는 --mysql_socket으로 지정된 MySQL 서버에 연결할 때 사용할 사용자 이름입니다(기본값: ).

--mysql_password=MYSQL_PASSWORD

--mysql_host--mysql_port 또는 --mysql_socket으로 지정된 MySQL 서버에 연결할 때 사용할 비밀번호입니다(기본값: ).

--mysql_socket=MYSQL_SOCKET

시뮬레이션된 Cloud SQL 스토리지에 사용되는 실행 중인 MySQL 서버에 연결할 때 사용할 Unix 소켓 파일의 경로입니다(기본값: None).

--port=...

서버에 사용할 포트 번호입니다. 기본값은 8080입니다. 서비스 등을 위해 여러 서버가 실행된 경우 8081, 8082 같은 후속 포트가 할당됩니다.

--require_indexes=yes|no

index.yaml 파일의 항목 자동 생성을 중지합니다. 대신, 파일에 색인을 정의하도록 요구하는 쿼리가 애플리케이션에서 수행되었을 때 색인 정의가 발견되지 않으면, App Engine에서 실행할 때 발생하는 것과 비슷한 예외가 발생합니다(기본값: no).

--runtime=...

사용할 기본 런타임을 지정합니다. 지원되는 런타임 목록은 런타임 지원 일정을 참조하세요.

--running_datastore_emulator_host=...

환경 변수 DATASTORE_EMULATOR_HOST를 재정의합니다. 즉, dev_appserver가 연결할 수 있는 실행 중인 Cloud Datastore 에뮬레이터의 hostname:port를 의미합니다(기본값: None).

--search_indexes_path=...

검색 색인을 저장하는 데 사용되는 파일의 경로입니다(설정되지 않은 경우 기본값은 --storage_path에 있는 파일)(기본값:None)

--skip_sdk_update_check=...

SDK 업데이트 확인을 건너뜁니다(false인 경우 .appcfg_nag을 사용하여 결정)(본값: False).

--show_mail_body=...

Mail API를 사용하여 전송한 이메일의 콘텐츠를 로깅합니다(기본값: False).

--smtp_allow_tls...

SMTP 서버가 TLS 지원을 알릴 때 TLS를 사용하도록 허용합니다(--smtp_host가 설정되지 않은 경우 무시)(기본값: True).

--smtp_host=...

이메일 메시지 전송을 위해 사용할 SMTP 서버의 호스트 이름입니다.

--smtp_port=...

이메일 메시지 전송을 위해 사용할 SMTP 서버의 포트 번호입니다.

--smtp_user=...

이메일 메시지 전송을 위해 SMTP 서버에 사용할 사용자 이름입니다.

--smtp_password=...

이메일 메시지 전송을 위해 SMTP 서버에 사용할 비밀번호입니다.

--storage_path=...

--datastore_path, --blobstore_path, 또는 --logs_path로 재정의하지 않는 한 Datastore, Blobstore, Cloud Storage 파일 및 로그 등의 모든 로컬 파일이 저장되는 경로입니다.

--support_datastore_emulator=yes|no

로컬 Datastore 에뮬레이션에 Cloud Datastore Emulator(베타)를 사용합니다.

--ssl_certificate_path=...

SSL 인증서 경로입니다. 이 옵션을 사용하는 경우 --ssl_certificate_key_path도 제공해야 합니다(기본값: None).

--ssl_certificate_key_path=...

해당 SSL 비공개 키의 경로입니다. 이 옵션을 사용하는 경우 --ssl_certificate_path도 제공해야 합니다(기본값: None).

--threadsafe_override=...

애플리케이션의 threadsafe 구성을 재정의합니다. 값은 부울일 수 있으며, 이 경우 모든 모듈 threadsafe 설정이 재정의되거나 쉼표로 구분된 module:threadsafe_override 목록입니다(기본값: None).

예시: default:False,backend:True

--use_mtime_file_watcher=...

소스 코드 변경을 탐지하기 위해 mtime 폴링을 사용합니다. 분산 파일 시스템을 사용하여 원격 머신에서 코드를 수정하는 경우 유용합니다(기본값: False).

--watcher_ignore_re=...

파일 감시자에서 무시할 파일을 지정하는 정규식 문자열입니다. (기본값: None)

Python 런타임 관련 명령어 옵션은 다음과 같습니다.

--python_startup_script
새 Python 런타임 인스턴스 시작 시 실행할 스크립트(디버거와 같은 도구에 유용함)(기본값: None)
--python_startup_args
python_startup_script에 지정된 스크립트에 사용할 수 있는 인수(기본값: None)
--python27_executable_path=...
python27 런타임 인스턴스용 python27 실행 파일의 경로(기본값: None)
--python_virtualenv_path
Python 3 애플리케이션의 로컬 devappserver 실행 환경에 Python 3 가상 환경을 설정하는 데 사용되는 디렉터리의 경로입니다. 경로가 없으면 디렉터리가 생성되지만 devappserver 실행이 끝날 때 정리되지 않으므로 호출 간에 캐싱할 수 있습니다. 정의하지 않으면 임시 디렉터리가 사용되며 실행 종료 시 정리됩니다.
--runtime_python_path=...
Python 바이너리 경로. dev_appserver에서 Python 앱을 실행하려면 이 플래그를 지정합니다.