ランタイムのサポート終了後にローカル開発用サーバーを使用する

最新バージョンの dev_appserver.py を使用してサポートが終了したランタイムのアプリケーションをローカルで実行することはできません。アーカイブされたバージョンの dev_appserver.py を引き続き使用するには、このガイドの手順に沿って操作してください。

ローカル開発用サーバーを使用すると、本番環境での App Engine アプリケーションの実行をシミュレートすることや、App Engine の以前のバンドル サービスにアクセスすることが可能です。シミュレートされた環境では、システム関数やランタイム言語モジュールによるインポート機能の制限など、サンドボックスにある程度制限がありますが、リクエストのタイムアウトや割り当てには制限がありません。

App Engine 用 SDK のライブラリによって提供される Datastore、Memcache、タスクキューなどのサービスを、ローカル開発用サーバーでローカルに実行してシミュレートすることもできます。アプリケーションが開発用サーバーで動作している場合でも、Google API HTTP エンドポイントを使用して、本番環境のインフラストラクチャに対するリモート API 呼び出しを行えます。

始める前に

アーカイブ バージョンの devapp_server.py をダウンロードする手順は次のとおりです。

  1. アーカイブから、サポートが終了したランタイム用の dev_appserver.py サーバーを含む圧縮フォルダをダウンロードします。

  2. ディレクトリの内容をローカル ファイル システム(/home ディレクトリなど)に解凍します。dev_appserver.pygoogle_appengine/ ディレクトリにあります。

ローカル開発用サーバーをセットアップする

ローカル開発用サーバーツールを実行するには、次の設定を行う必要があります。

  1. バージョン 2.7.12 以降の Python 2 インタープリタがインストールされていることを確認します。

  2. シェル内の DEVAPPSERVER_PYTHON 環境変数を Python 2 インタープリタのパスに設定します。

  3. ダウンロードしたアーカイブを解凍した /google_appengine/ フォルダの下にある dev_appserver.py ツールを確認します。次に例を示します。

    DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py
    

ローカル開発用サーバーを実行する

ローカル開発用サーバーを設定し、アプリの app.yaml 構成ファイルを作成した後、dev_appserver.py コマンドを使用すると、アプリをローカルで実行できます。

ローカル開発用サーバーを起動するには:

  1. app.yaml 構成ファイルのあるディレクトリで dev_appserver.py コマンドを実行します。

    アプリへのディレクトリ パスを指定します。たとえば次のようにします。

       python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --runtime_python_path=/usr/bin/python2 [PATH_TO_YOUR_APP]
    

    [RUNTIME_ID]=[PYTHON_INTERPRETER_PATH] ペアのカンマ区切りのリストに引数を設定することもできます。例:

       python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --runtime_python_path="python27=/usr/bin/python2.7" [PATH_TO_YOUR_APP]
    

    ポートを変更する場合は、--port オプションを含めます。

       python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py  --runtime_python_path=/usr/bin/python2 --port=9999 [PATH_TO_YOUR_APP]
    

    DEVAPPSERVER_ROOT は、devapp_server.pyアーカイブ バージョンを解凍するフォルダのパスに置き換えます。

  2. ローカル開発用サーバーが起動し、リクエストを待機します。ウェブブラウザで http://localhost:8080/ にアクセスすると、アプリの動作を確認できます。

    --port オプションでカスタムポートを指定した場合は、そのポートでブラウザを開くようにしてください。

ローカル サーバーをコマンドラインから停止するには、次のキーを押します。

  • macOS または Linux: Control+C
  • Windows: Ctrl+Break

アプリケーション ID の指定

メールアドレスのなりすましなどのために、ローカル サーバーでアプリ ID にアクセスする必要がある場合は、get_application_id() 関数を使用します。

実行中のアプリのホスト名を取得するには、get_default_version_hostname() 関数を使用します。

アプリケーションのランタイム環境の検出

コードが本番環境またはローカルの開発用サーバーのどちらで実行されているかを確認するには、GAE_ENV 環境変数の値を調べます。

if os.getenv('GAE_ENV', '').startswith('standard'):
  # Production in the standard environment
else:
  # Local development server

メールサービスの使用

ローカル開発用サーバーは、SMTP サーバーまたはローカルにインストールされた Sendmail を使用して、呼び出しのメールを App Engine のメールサービスに送信できます。

SMTP の使用

SMTP サーバーを使用してメールサポートを有効にするには、次のように dev_appserver.py を呼び出します。

    python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
  --smtp_user=ajohnson --smtp_password=k1tt3ns PATH_TO_YOUR_APP

次のように置き換えます。

  • DEVAPPSERVER_ROOT は、devapp_server.pyアーカイブ バージョンを解凍するフォルダのパスに置き換えます。
  • --smtp_host--smtp_port--smtp_user--smtp_password オプションは、独自の構成値に置き換えます。
  • PATH_TO_YOUR_APP は、アプリケーションのパスに置き換えます。

Sendmail の使用

Sendmail でメールサポートを有効にするには、次のように dev_appserver.py を呼び出します。

  python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --enable_sendmail=yes PATH_TO_YOUR_APP

次のように置き換えます。

  • DEVAPPSERVER_ROOT は、devapp_server.pyアーカイブ バージョンを解凍するフォルダのパスに置き換えます。
  • PATH_TO_YOUR_APP は、アプリケーションのパスに置き換えます。

ローカル サーバーは、sendmail コマンドを使用して、インストールのデフォルト構成でメールを送信します。

URL 取得サービスの使用

アプリケーションが URL 取得 API を使用して HTTP リクエストを送信する場合、ローカル開発用サーバーはデベロッパーのコンピュータからリクエストを直接送信します。プロキシ サーバーを使用してウェブサイトにアクセスしている場合、ローカル サーバーでの URL 取得の動作は本番環境の App Engine と異なることがあります。

ユーザー サービスを使用する

App Engine には、アプリケーションの認証と認可を簡素化するためのユーザー サービスが用意されています。ローカル開発用サーバーは、独自のログインページとログアウト ページで Google アカウントの動作をシミュレートします。

ローカル開発用サーバーでの実行中、関数はローカル サーバー上の /_ah/login/_ah/logout の URL を返します。

コマンドライン引数

ローカル開発用サーバーのコマンド オプションについては、ローカル開発用サーバーのオプションをご覧ください。