Google App Engine で Python サンプルアプリをデプロイ でデプロイしたサンプルアプリを編集してみます。
今まで、[Hello World!] と表示されていたものを [Hello Python!] と表示されるように編集します。
環境
- Ubuntu 16.04.1 LTS
Google Cloud SDK をインストール
パッケージをインストール
$ sudo apt install wget
$ sudo apt install git
Create an environment variable for the correct distribution
$ export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
$ echo ${CLOUD_SDK_REPO}
cloud-sdk-xenial
Add the Cloud SDK distribution URI as a package source
$ echo "deb https://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
deb https://packages.cloud.google.com/apt cloud-sdk-xenial main
$ ls -la /etc/apt/sources.list.d/
total 12
drwxr-xr-x 2 root root 4096 Jan 28 17:18 .
drwxr-xr-x 6 root root 4096 Jan 2 15:25 ..
-rw-r--r-- 1 root root 64 Jan 28 17:18 google-cloud-sdk.list
$ cat /etc/apt/sources.list.d/google-cloud-sdk.list
deb https://packages.cloud.google.com/apt cloud-sdk-xenial main
Import the Google Cloud Platform public key
$ wget https://packages.cloud.google.com/apt/doc/apt-key.gpg -O - | sudo apt-key add -
- 参考にしたページでは crul を使って apt-key.gpg をダウンロードしていましたが、なぜかうまくいかなかったので wget を使いました。
Update the package list and install the Cloud SDK
$ sudo apt-get update && sudo apt-get install google-cloud-sdk
$ which gcloud
/usr/bin/gcloud
認証
以下実行
$ gcloud init[You must log in to continue. Would you like to log in (Y/n)?] で [Y] を入力
[
Go to the following link in your browser:
] と表示され、https://accounts.google.com/o/oauth2/auth?redirect_uri=...
で始まる URL が表示されたのでブラウザで開くGoogle アカウントを選択
[Google Cloud SDK が次の許可をリクエストしています] と表示されたので内容を確認して [許可] をクリック
[このコードをコピーし、アプリケーションに切り替えて貼り付けてください] に続き、コードが表示された
コマンドの画面に戻り、[Enter verification code] にブラウザで表示されたコードを張り付け
[Pick cloud project to use] が表示されたので [mytest-20161229] を選択
App Engine アプリのソースコードを編集
リポジトリを確認
Google Developers Console にアクセス
プロジェクトを選択
左上のメニューアイコンをクリックし [開発] を選択
左側のメニューで「レポジトリ」をクリック
以前にデプロイしたサンプルアプリのリポジトリ名 [python-gae-quickstart] を確認できたのでこのリポジトリのソースコードを編集します。
Cloud Repository をローカルにクローン
$ gcloud source repos clone python-gae-quickstart --project=mytest-20161229
ローカルの Git リポジトリに移動
$ cd python-gae-quickstart/
ディレクトリの内容を確認
$ ls -la
total 60
drwxrwxr-x 4 ubuntu ubuntu 4096 Jan 28 21:08 .
drwxrwxr-x 3 ubuntu ubuntu 4096 Jan 28 21:08 ..
-rw-rw-r-- 1 ubuntu ubuntu 247 Jan 28 21:08 appengine_config.py
-rw-rw-r-- 1 ubuntu ubuntu 170 Jan 28 21:08 app.yaml
-rw-rw-r-- 1 ubuntu ubuntu 3045 Jan 28 21:08 CONTRIB.md
drwxrwxr-x 8 ubuntu ubuntu 4096 Jan 28 21:08 .git
drwxrwxr-x 4 ubuntu ubuntu 4096 Jan 28 21:08 lib
-rw-rw-r-- 1 ubuntu ubuntu 11357 Jan 28 21:08 LICENSE
-rw-rw-r-- 1 ubuntu ubuntu 424 Jan 28 21:08 main.py
-rw-rw-r-- 1 ubuntu ubuntu 342 Jan 28 21:08 .playground
-rw-rw-r-- 1 ubuntu ubuntu 2761 Jan 28 21:08 README.md
-rw-rw-r-- 1 ubuntu ubuntu 275 Jan 28 21:08 requirements.txt
-rw-rw-r-- 1 ubuntu ubuntu 2812 Jan 28 21:08 vendor.py
Git のメールアドレスとユーザー名を設定
$ git config --global user.email "Gmail のメールアドレス"
$ git config --global user.name "名前"
試しに main.py を編集
編集した箇所を確認
$ git diff
diff --git a/main.py b/main.py
index 0438961..72d3af2 100644
--- a/main.py
+++ b/main.py
@@ -9,7 +9,7 @@ app.config['DEBUG'] = True
@app.route('/')
def hello():
"""Return a friendly HTTP greeting."""
- return 'Hello World!'
+ return 'Hello Python!'
@app.errorhandler(404)
インデックスに編集した main.py を追加
$ git add main.py
コミット
$ git commit -m 'test edit'
Cloud Repository に push
$ git push -u origin master
Cloud Repository を GAE アプリに反映
Google Cloud Shell を開始
Cloud Shell でプロジェクトのディレクトリに移動
$ cd src/mytest-20161229/
Cloud Repository からクローン
$ gcloud source repos clone python-gae-quickstart --project=mytest-20161229
ディレクトリを確認
$ ls -la
total 16
drwxr-xr-x 4 fishrimper fishrimper 4096 Jan 28 23:29 .
drwxr-xr-x 4 fishrimper fishrimper 4096 Jan 28 16:03 ..
drwxr-xr-x 4 fishrimper fishrimper 4096 Jan 28 23:29 python-gae-quickstart
drwxr-xr-x 4 fishrimper fishrimper 4096 Jan 28 22:31 python_gae_quickstart-2016-12-29-22-39
- python-gae-quickstart/ が今回クローンしたディレクトリ
- python_gae_quickstart-2016-12-29-22-39/ が前回クローンしたディレクトリ
今回クローンしたディレクトリを確認
$ cd python-gae-quickstart/
$ ls -la
total 60
drwxr-xr-x 4 fishrimper fishrimper 4096 Jan 28 23:29 .
drwxr-xr-x 4 fishrimper fishrimper 4096 Jan 28 23:29 ..
-rw-r--r-- 1 fishrimper fishrimper 247 Jan 28 23:29 appengine_config.py
-rw-r--r-- 1 fishrimper fishrimper 170 Jan 28 23:29 app.yaml
-rw-r--r-- 1 fishrimper fishrimper 3045 Jan 28 23:29 CONTRIB.md
drwxr-xr-x 8 fishrimper fishrimper 4096 Jan 28 23:29 .git
drwxr-xr-x 4 fishrimper fishrimper 4096 Jan 28 23:29 lib
-rw-r--r-- 1 fishrimper fishrimper 11357 Jan 28 23:29 LICENSE
-rw-r--r-- 1 fishrimper fishrimper 425 Jan 28 23:29 main.py
-rw-r--r-- 1 fishrimper fishrimper 342 Jan 28 23:29 .playground
-rw-r--r-- 1 fishrimper fishrimper 2761 Jan 28 23:29 README.md
-rw-r--r-- 1 fishrimper fishrimper 275 Jan 28 23:29 requirements.txt
-rw-r--r-- 1 fishrimper fishrimper 2812 Jan 28 23:29 vendor.py
$ cat main.py
from flask import Flask
app = Flask(__name__)
app.config['DEBUG'] = True
# Note: We don't need to call run() since our application is embedded within
# the App Engine WSGI application server.
@app.route('/')
def hello():
"""Return a friendly HTTP greeting."""
return 'Hello Python!'
@app.errorhandler(404)
def page_not_found(e):
"""Return a custom 404 error."""
return 'Sorry, nothing at this URL.', 404
アプリをテスト
プレビューインスタンスの開始
$ dev_appserver.py ./app.yaml「ウェブでプレビュー」でアプリをプレビュー
Cloud Shell 上部の「ウェブでプレビュー」アイコンをクリック
「ポート上でプレビュー 8080」を選択
ブラウザでプレビューが開かれ、「Hello Python!」と表示されました。
プレビューインスタンスの終了
Cloud Shell で Ctrl+C キーを押して、アプリケーションのインスタンスを終了
アプリをデプロイ
$ gcloud app deploy app.yaml --project mytest-20161229 You are about to deploy the following services: - mytest-20161229/default/20170128t234354 (from [/home/fishrimper/src/mytest-20161229/python-gae-quickstart/app.yaml]) Deploying to URL: [https://mytest-20161229.appspot.com] Do you want to continue (Y/n)?Y 入力して続けました。
変更されたこと確認
$ w3m -dump https://mytest-20161229.appspot.com
Hello Python!
0 件のコメント:
コメントを投稿