おさらい−新規プロジェクト追加から公開まで−

当初、自分は、新規プロジェクト作成、コーディング、テスト(実行)まですべてAptana上で行っていたのだが、GAEの本番環境へのデプロイのことを考えると、Google App Engine Launcher を使っておかないと何かと不便だということがわかってきた。
ここであらためて、新規プロジェクトの作成から実行までの手順をもう一度おさらいしてみる。

(1)新規プロジェクトの作成
  1. GAE Launcher にて、Fileメニュー→Create New Application
    • これにより、app.yaml, index.yaml, main.py という3つのファイルが作成される。
    • これを雛形にする。
  2. 念のため実行してみる。
    • GAE Launcher にて、Runボタンを押す
    • アイコンが実行中マーク(緑色)になったら、Browseボタンを押す
    • ブラウザに「Hello, world」と出ればOK。
      • 注意:Runボタン押したら出てくるDOS窓は、出っ放しにしておくこと。これを閉じると実行できなくなる。
(2)プロジェクトの詳細設定
  1. Aptanaを起動。
  2. Fileメニュー→インポート→その他→新規プロジェクトとして既存のフォルダーを使用 を選択。
    • ここで、GAE Launcherで作ったプロジェクトのパスを指定する。
    • これにより、.project, .pydevproject という2つのファイルが作成されるが、これはGAEには直接関係はない。
  3. 個人的に、アプリケーションディレクトリ直下にソースコードを置きたくないため、「src」というフォルダをつくり、その配下に*.pyファイルを置くように設定する。
    • プロジェクトで右クリック→追加→フォルダ を選択し、src というフォルダを作る。
    • main.pyを、srcフォルダ配下へ移動させる。
    • app.yamlの、handlers: の部分を、次のように変更する。
      • 【変更前】script: main.py
      • 【変更後】script: src/main.py
  4. 念のため実行してみる。
    • 実行結果は(1)と同じになります。
  5. 自作の*.pyファイルをimportできるようにする
    • srcフォルダ配下に、「__init__.py」という名前のファイルを追加する。
    • ファイルの中身は空っぽでもOK。
    • こうすることにより、「from src import モジュール名」という使い方ができる。
  6. スタイルシートjavascriptなども、各サブフォルダ配下に置く場合は、同様にサブフォルダを作り、app.yamlにそのサブフォルダまでのルートを指定してやる。

app.yamlの例

handlers:
- url: /scripts
  static_dir: scripts

- url: /stylesheets
  static_dir: stylesheets
  
- url: /.*
  script: src/main.py

過去記事において、さんざん「Importできない」と騒いでいたが、この方法でやるようになってからは、問題は起きていない。

(3)コーディング・テストする
  1. Aptanaで普通にコーディングする。
    • (2)のやり方だと、GAEのモジュールのオートコンプリートができない。できるようになる方法は調べ中。
  2. 実行させるときは、GAE LauncherのRunボタン。
  3. 実行中のログを参照する場合は、GAE LauncherのLogボタン。
(4)アプリケーションをGAEのサーバに置く
  1. まず、GAE Launcherの Dashbord ボタンを押し、新しいアプリケーションを追加する。
    • これをやった時点では、まだアプリケーションはサーバに置かれておらず、実行できない。
    • アプリケーションを実行するためのエリアを確保しただけ、というような状態。
    • 一度これをやると、Dashbordボタンを押すと、管理コンソールが開くようになる。
  2. 次に、GAE LauncherのDeployボタンを押し、現在のソースコード一式をサーバに置く。
    • メールアドレスとパスワードを入れろと言われるので、Googleアカウントのメールアドレスとパスワードを入れる。
    • あとは自動でやってくれる。
  3. これで、サーバに置いたアプリケーションが実行できるようになる。
  4. データストアを使用しており、かつ、インデックスを使用するようなフェッチを行っている場合、インデックスの構築が終わるまでは実行できない(実行時エラーになる)。
    • インデックスは(特別な設定をしない限り)、そのインデックスを使うようなフェッチが行われた際に自動的に構築される。
    • 逆に言うと、そのフェッチが一度も実行されないと、構築されない。
    • なので、本番環境にデプロイしたら、インデックスを構築させるために、フェッチを行う処理を実行させなければならない。
    • インデックスの構築は自動で行われるので、いつ終わるかは保障されない。サーバが混んでいる時などは、構築がなかなか終わらない場合がある。
    • 管理コンソールの「Indexes」のページを見て、Statusが「Serving」になっていない場合は、構築が終わっていない。
    • 構築が終わらない際の対処方法は、ぐぐるとたくさん出てきます。(よくあることらしい・・・)