로컬 개발 서버(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.org
는host.example.org
를 허용하지만sub.host.example.org
또는example.org
는 허용하지 않습니다.**.
로 시작하는 호스트는 모든 깊이의 하위 도메인을 허용합니다. 예를 들어**.example.com
은host.example.com
및sub.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_var
는key=value
형식이며 개발자는 여러 환경 변수를 정의할 수 있습니다. 이 플래그는app.yaml
의env_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 앱을 실행하려면 이 플래그를 지정합니다.