ローカル開発用サーバー(dev_appserver.py
)は、gcloud CLI の App Engine コンポーネントの一部です。ここでは、dev_appserver.py
の使用方法を詳細に説明します。
Google Cloud SDK に付属するローカル開発用サーバーの dev_appserver
に依存するのではなく、標準的な Python ツールを使用することをおすすめします。こうしたツールには、隔離された環境を作成するための virtualenv
、単体テストや統合テストを実行するための pytest
などがあります。
ローカルテストの詳細については、ローカル開発用サーバーの使用をご覧ください。
ローカル開発用サーバーツールを設定する
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
に対してサービスごとに 1 つずつ、1 つ以上の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 Host ヘッダー値を許可リストに登録できます。これにより、ホストチェックを無効にしなくても、サーバーがプロキシの背後でアクセス可能になります(
--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=...
- 非推奨。ローカル データストアが自動 ID を割り当てる方法。オプションは
sequential
またはscattered
です(デフォルト:scattered
)。 --automatic_restart=...
- モジュールに関連するファイルが変更されたときに、インスタンスを自動的に再起動します(デフォルト: True)。
--blobstore_path=...
- blob コンテンツを格納するために使用されるディレクトリのパス(設定されていない場合、デフォルトは
--storage_path
のサブディレクトリ)(デフォルト: None)。 --clear_datastore=yes|no
- ウェブサーバーの起動前に、データストアのデータファイルと履歴ファイルを消去します(デフォルト:
no
)。 --clear_search_indexes...
- 検索インデックスをクリアします(デフォルト: False)。
--custom_entrypoint=...
カスタム ランタイム モジュールのエントリポイントを指定します。そのようなモジュールが存在する場合は必須です。ポート番号を引数として渡すには、文字列に
{port}
(引用符なし)を含めます(デフォルト: )。次に例を示します。--custom_entrypoint="gunicorn -b localhost:{port} mymodule:application"
--datastore_consistency_policy {consistent,random,time}
グローバル クエリでデータストア書き込みを表示するかどうか決定するときに適用するポリシー(デフォルト: 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=...
特定の 1 つのモジュール用に開始可能なランタイム インスタンスの最大数。値を整数にすると、すべてのモジュールがインスタンス数または
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
によりオーバーライドされない限り、すべてのローカル ファイル(Cloud Datastore、Blobstore、Cloud Storage のファイルやログなど)が保存されるパス。--support_datastore_emulator=yes|no
ローカル データストアのエミュレーションに、Cloud Datastore エミュレータ(ベータ版)を使用します。
--ssl_certificate_path=...
SSL 証明書のパス。このオプションを使用する場合は
--ssl_certificate_key_path
も指定する必要があります(デフォルト: None)。--ssl_certificate_key_path=...
対応する SSL 秘密鍵のパス。このオプションを使用する場合は
--ssl_certificate_path
も指定する必要があります(デフォルト: None)。--threadsafe_override=...
アプリケーションのスレッドセーフ構成をオーバーライドします。値をブール値にすると、すべてのモジュールのスレッドセーフ設定がオーバーライドされるか、
module:threadsafe_override
のカンマ区切りのリストになります(デフォルト: None)。例:
default:False,backend:True
--use_mtime_file_watcher=...
ソースコードの変更を検出するために mtime ポーリングを使用します。分散ファイル システムを使用してリモートマシンからコードを変更する場合に便利です(デフォルト: False)。
--watcher_ignore_re=...
filewatcher によって無視されるファイルを指定する正規表現文字列(デフォルト: 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 アプリを実行するには、このフラグを指定します。