ローカル開発用サーバー(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.yamlskip_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...gRPCAPI サーバーがリッスンするポート(デフォルト: 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|noindex.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_argspython_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 アプリを実行するには、このフラグを指定します。