LoginSignup
0
1

More than 3 years have passed since last update.

Windows10でPython3.7アプリ「Hello World!」をGoogle App Engine スタンダード環境にデプロイする

Last updated at Posted at 2019-10-13

GAEにおけるPython開発環境の設定

参考:https://cloud.google.com/python/setup

image.png

Python 2 と Python 3 の最新バージョンのインストール

Python のウェブサイトから Python 2 と Python 3 両方の最新バージョンのWindowsインストーラをダウンロードし、インストールします。

【Python2をインストールする理由】Cloud SDK は Python で作成されています。アプリの開発に使用する Python のバージョンにかかわらず、Cloud SDK は Python 2.7.9 以降が必要になります。ただし、Python 3 virtualenv を使用している場合でも、Cloud SDK が Python 2 のインストールを検出し、使用できます。

virtualenv のインストールと使用

virtualenvをインストールします。

py -3 -m pip install --upgrade virtualenv

次のコマンドで、virtualenvのバージョンを確認できます。

py -3 -m virtualenv --version

virtualenv がインストールされたら、プロジェクト内に仮想環境を作成できます。次の virtualenv により、venv フォルダに Python のインストール全体の仮想コピーを作成します。
※ Python 3.7をC:\Python37にインストールしている場合、つぎのようにpython.exeのパスを指定します。

cd <my-prpject-folder>
py -3 -m virtualenv --python "C:\Python37\python.exe" venv

コピーが作成されたら、次のように仮想環境を有効化して、Python の virtualenv のパスを shell に通します。

.\venv\Scripts\activate

仮想環境を有効化にすると、他のプロジェクトやグローバルの Python インストールに影響を与えずにパッケージをインストールできます。
たとえば、pipコマンドにパスが通っており、この仮想環境にgoogle-cloud-storageをインストールできます。

pip install google-cloud-storage

仮想環境の使用をやめてグローバル Python に戻る場合は、次のコマンドで無効化できます。

deactivate

image.png

Cloud SDK をインストールして、App Engine 用に GCP プロジェクトを設定

参考:https://cloud.google.com/appengine/docs/standard/python3/quickstart

image.png

Cloud SDK のインストール

Google Cloud SDK のドキュメントから、最新のCloud SDK のインストーラをダウンロードし、インストールします。
※ gcloud init を実行する前に、GCPでプロジェクトを事前に作成しておくことをお勧めします。

インストールが完了したら、次のオプションを受け入れます。
- Cloud SDK シェルを起動する
- gcloud init を実行する

プロジェクトの確認と設定

プロジェクトが作成されたことを確認します。

gcloud projects describe [YOUR_PROJECT_ID]

次のようなプロジェクトの詳細が表示されます。

createTime: year-month-hour
lifecycleState: ACTIVE
name: project-name
parent:
id: '433637338589'
type: organization
projectId: project-name-id
projectNumber: 499227785679

プロジェクトで App Engine アプリを初期化し、そのリージョンを選択します。

gcloud app create --project=[YOUR_PROJECT_ID]

プロンプトが表示されたら、App Engine アプリケーションを配置するリージョンを選択します。
※アプリのリージョンを設定した後で変更することはできません。

ここで、プロジェクトで課金が有効になっていることを確認します。アプリケーションを App Engine にデプロイするには、課金アカウントをプロジェクトにリンクする必要があります。

課金を有効にします。

Python 3.7 用の App Engine 拡張機能

次のコマンドを実行して、Python 3.7 用の App Engine 拡張機能が含まれる gcloud コンポーネントをインストールします。
※コマンドプロンプトを管理者権限で実行している必要があります。

gcloud components install app-engine-python

Hello World サンプルアプリ

Gitをインストール

Hello World アプリをダウンロードするために、Gitをダウンロードし、インストールします。

Hello World アプリをダウンロードする

Hello World サンプルアプリ リポジトリのクローンをローカルマシンに作成します。

cd C:\workgit
git clone https://github.com/GoogleCloudPlatform/python-docs-samples

ローカルマシンで Hello World を実行する

プロジェクトの外部のディレクトリにvirtualenvで Python 仮想環境を作成し、それを有効化します。

cd C:\workgit
mkdir myenv
cd myenv
py -3 -m virtualenv --python "C:\Python37\python.exe" venv
.\venv\Scripts\activate

プロジェクト ディレクトリに移動し、依存関係をインストールします。

cd C:\workgit\python-docs-samples/appengine/standard_python37/hello_world
pip install -r requirements.txt

アプリケーションを実行します。

python main.py

image.png

ウェブブラウザに次のアドレスを入力します。

http://localhost:8080

Ctrl+C キーを押してアプリケーションを終了します。

仮想環境の使用をやめてグローバル Python に戻る場合は、次のコマンドで無効化できます。

deactivate

App Engine にデプロイして実行する

App Engine スタンダード環境にデプロイする

standard_python37/hello_world ディレクトリから次のコマンドを実行して、Hello World アプリをデプロイします。

cd C:\workgit\python-docs-samples/appengine/standard_python37/hello_world
gcloud app deploy

デプロイ時のエラーの対処

APIを有効にする旨の指示(エラー)が出たので、指示に従って、有効にします。
image.png
image.png

再度、実行するとデプロイに成功します。

image.png

クリーンアップ

課金されないようにするには、GCP プロジェクトを削除してプロジェクト内のすべてのリソースへの課金を停止します。

  1. GCP Console で [プロジェクト] ページに移動します。プロジェクト ページに移動
  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

まとめ

  • Python2とPython3をインストールし、仮想環境(virtualenv)を設定しました。
  • Google Cloud SDK をインストールし、Python環境を構築しました。
  • 仮想環境を有効化し、Python3.7とFlaskとで、アプリ「Hello World!」をローカルで実行しました。
  • ローカル環境で実行したアプリをデプロイし、GAE上で実行しました。
  • 課金されないように作成したGCPプロジェクトを削除しました。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1