Google App Engineのテストを実環境と同一のホスト名でアクセスする

twitter連携などをする場合、コールバックURLの制限があるため、
テスト環境でも、実環境と同一のURLにてアクセスしたい場合があります。


通常、Google App Engine Launcherなどで起動した場合、
http://localhost:8080/
にマッピングされるかと思います。

これを、
http://my-android-server.appspot.com/
などにマッピングして起動する方法です。

  1. hostsファイルを用意する

以下はWindowsの場合です。

C:\Windows\System32\drivers\etc\
にある、hostsファイルをhosts.origにコピーします。
また、hostsファイルをhosts.testにコピーし、下記を追加します。

[自マシンのIPアドレス]	[ホスト名(例:my-android-server.appspot.com)]

↓コマンドで行う場合(管理者権限でコマンドプロンプトを起動する必要あり)

copy C:\Windows\System32\drivers\etc\hosts C:\Windows\System32\drivers\etc\hosts.orig
copy C:\Windows\System32\drivers\etc\hosts C:\Windows\System32\drivers\etc\hosts.test
echo 192.168.1.99 my-android-server.appspot.com>>C:\Windows\System32\drivers\etc\hosts.test
  1. 起動用のバッチファイルを作成する

起動用のバッチの内容は以下の通り。

    1. テスト用のhostsファイルを適用する

ホスト名を追加したhostsファイルを適用します。

    1. プロジェクトディレクトリまで移動
    2. サーバ起動

"start /WAIT"
で別窓でサーバを起動し、その終了を待ちます。
テストが終了したら、サーバが起動しているコマンドプロンプトにてCtrl-Cで中断します。

    1. 通常のhostsファイルを復元

元のコマンドプロンプトウィンドウの処理が続行されると、hostsファイルを復元します。

実際は以下のような感じ

copy /Y C:\Windows\System32\drivers\etc\hosts.test C:\Windows\System32\drivers\etc\hosts
cd C:\Users\noboru\workspace_python\my-android-server
start /WAIT C:\Python25\python.exe "C:\Program Files (x86)\Google\google_appengine\dev_appserver.py" src --datastore_path="C:\Users\noboru\workspace_python\my-android-server\db\dev_appserver.datastore" --addres=192.168.1.99 --port=80
copy /Y C:\Windows\System32\drivers\etc\hosts.orig C:\Windows\System32\drivers\etc\hosts
pause

サーバ起動時にDBファイルの位置も指定しています。(--datastore_path)

  1. 起動用のバッチファイルを管理者権限で実行します

hostsファイルの操作や、80番ポートの使用などがあるため、管理者権限での実行が必要です。
起動後、実環境と同様のURLにてアクセスできます。