ローカル開発用サーバーを使用すると、本番環境での App Engine アプリケーションの実行をシミュレートしながら、App Engine バンドル サービスにアクセスできます。
シミュレートされた環境では、システム関数や PHP 5 モジュールのインポートに関してサンドボックスの制限がいくつかありますが、リクエストのタイムアウトや割り当てなどには制限がありません。
App Engine 用 SDK のライブラリによって提供される Datastore、Memcache、タスクキューなどのサービスを、ローカル開発用サーバーでローカルに実行してシミュレートすることもできます。アプリケーションが開発用サーバーで動作している場合でも、Google API の HTTP エンドポイントを使用して、本番環境のインフラストラクチャに対するリモート API 呼び出しを実行できます。
始める前に
PHP 5 はサポートが終了しているため、dev_appserver.py の最新バージョンを使用してアプリケーションをローカルで実行することはできません。devapp_server.py のアーカイブ バージョンをダウンロードする手順は次のとおりです。
アーカイブから、サポートが終了したランタイム用の
dev_appserver.pyサーバーを含む圧縮フォルダをダウンロードします。ディレクトリの内容をローカル ファイル システム(
/homeディレクトリなど)に抽出します。dev_appserver.pyはgoogle_appengine/ディレクトリにあります。
ローカル開発用サーバーをセットアップする
ローカル開発用サーバーツールを実行するには、次の設定を行う必要があります。
バージョン 2.7.12 以降の Python 2 インタープリタがインストールされていることを確認します。
シェル内の
DEVAPPSERVER_ROOT環境変数を Python 2 インタープリタのパスに設定します。
ローカル開発用サーバーを実行する
ローカル開発用サーバーを設定し、アプリの app.yaml 構成ファイルを作成した後、dev_appserver.py コマンドを使用すると、アプリをローカルで実行できます。
ローカル開発用サーバーを起動するには:
app.yaml構成ファイルが格納されているディレクトリでdev_appserver.pyコマンドを実行します。Windows / macOS
アプリへのディレクトリ パスを指定します。たとえば次のようにします。
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py [PATH_TO_YOUR_APP]また、特定のサービスの構成ファイルを指定することもできます。たとえば次のようにします。
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py app.yamlポートを変更する場合は、
--portオプションを含めます。python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --port=9999 [PATH_TO_YOUR_APP][DEVAPPSERVER_ROOT]は、devapp_server.pyのアーカイブ バージョンを解凍するフォルダのパスに置き換えます。Linux / cust. php-cgi
Linux を使用している場合や、
php-cgiのカスタム バージョンを使用する場合、ディレクトリ パスをphp-cgiに指定する必要があります。ローカルマシンに独自のバージョンの App Engine PHP 拡張機能を構築します。
--php_executable_pathオプションと--php_gae_extension_pathオプションの両方を指定してローカル開発用サーバーを起動します。python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --php_executable_path=[PATH_TO_PHP_CGI] --php_gae_extension_path=[PATH_TO_APPENGINE_EXTENSION] app.yaml次のように置き換えます。
- DEVAPPSERVER_ROOT は、
devapp_server.pyのアーカイブ バージョンを解凍するフォルダのパスに置き換えます。 --php_executable_pathは、PHP インタープリタの場所に置き換えます。--php_gae_extension_pathは、前の手順で作成したgae_runtime_module.soファイルの場所に置き換えます。
- DEVAPPSERVER_ROOT は、
dev_appserver.pyコマンド オプションについて詳しくは、ローカル開発用サーバーのオプションをご覧ください。ローカル開発用サーバーが起動し、リクエストを待機します。ウェブブラウザで http://localhost:8080/ にアクセスすると、アプリの動作を確認できます。
--portオプションでカスタムポートを指定した場合は、そのポートでブラウザを開くようにしてください。
ローカル サーバーをコマンドラインから停止するには、次のキーを押します。
- macOS または Linux: Control+C
- Windows: Ctrl+Break
アプリケーション ID を指定する
メールアドレスのなりすましなどのために、ローカル サーバーでアプリ ID を使用する必要がある場合は、AppIdentityService::getApplicationId 関数を使用します。実行中のアプリのホスト名を取得するには、AppIdentityService::getDefaultVersionHostname 関数を使用します。
アプリケーションのランタイム環境の検出
コードが本番環境またはローカル開発用サーバーのどちらで実行されているかを確認するには、SERVER_SOFTWARE 環境変数の値を調べます。
if (strpos(getenv('SERVER_SOFTWARE'), 'Development') === 0){
echo 'Local development server';
} else {
echo 'Production';
}
データを保存する
PHP 用 App Engine は、PHP のストリーム API を介して Cloud Storage に対する読み取りと書き込みをサポートします。PHP ストリームの実装をサポートする PHP 関数(fopen、fwrite、file_get_contents など)を使用する場合、Cloud Storage に対する読み取りと書き込みを行うには Cloud Storage URI(gs://)を指定します。
ローカル開発用サーバーでは、リクエスト間で維持される一時的なローカル ファイルの読み書きによって、この機能がエミュレートされます。
ローカル Datastore の参照
ローカル開発用サーバーを使用してアプリがローカル Datastore にデータを書き込んでいる場合は、ローカル開発用コンソールでそのデータを参照できます。
ローカル Datastore を参照するには:
ローカル開発用コンソールで Datastore Viewer にアクセスしますURL:
http://localhost:8000/datastoreローカル Datastore のコンテンツを参照します。
ユーザー サービスを使用する
App Engine には、アプリケーションの認証と認可を簡素化するためのユーザー サービスが用意されています。ローカル開発用サーバーは、独自のログインページとログアウト ページで Google アカウントの動作をシミュレートします。ローカル開発用サーバーでの実行中、createLoginURL および createLogoutURL 関数は、ローカル サーバー上の /_ah/login および /_ah/logout の URL を返します。
メールを使用する
ローカル開発用サーバーは、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の各オプションを実際の構成値に置き換えます。
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 のアーカイブ バージョンを抽出するフォルダのパスに置き換えます。
ローカル サーバーは sendmail コマンドを使用し、インストールのデフォルト構成に従ってメールのメッセージを送信します。
URL 取得を使用する
アプリケーションが URL 取得 API を使用して HTTP リクエストを送信する場合、ローカル開発用サーバーはデベロッパーのコンピュータからリクエストを直接送信します。プロキシ サーバーを使用してウェブサイトにアクセスしている場合、ローカル サーバーでの URL 取得の動作は本番環境の App Engine と異なることがあります。
XDebug を使用してローカルでデバッグする
XDebug デバッガとの互換性があるデバッガを使用する場合、xdebug モジュールがインストールされていれば、ローカル開発用サーバーで XDebug を使用できます。
Linux または MacOS 上の開発用サーバーで XDebug を有効にするには:
IDE での接続用の idekey と一緒に
XDEBUG_CONFIG環境変数をエクスポートします。export XDEBUG_CONFIG="idekey=netbeans-xdebug remote_host=localhost"--php_remote_debugging=yesを指定して開発用サーバーを起動します。