Symfoware

Symfowareについての考察blog

Ubuntu 18.04にGoogle App Engine(GAE) + Pythonの開発環境を構築する

以前にも試したことがあるのですが、内容が古くなっているので再度試してみます。
Ubuntu 14.04にGoogle App Engine(GAE) + PHPの開発環境を構築する

今回はPythonの開発が行える環境を構築してみます。


Pythonのセットアップ



こちらを参考にセットアップを勧めていきます。
Google Cloud Platform での Python

Google App Engineは「スタンダード環境」か「フレキシブル環境」が
選択できるようになったようです。
Python クイックスタート

無料で試してみたいので、「スタンダード環境」を選択することにしました。
こちらの手順に進みます。
Quickstart for Python App Engine Standard Environment

まず、GAEのプロジェクトを作成します。

870_01.png

870_02.png

使用する言語はPythonを選択。

870_03.png

リージョンは「asia-northeast1(東京リージョン)」を選択しました。

870_04.png

これでGAEプロジェクトの作成は完了です。


続いてPythonの環境をセットアップ。
Python 開発環境のセットアップ

Python2, Python3とpip、virtualenvをインストールします。


$ sudo apt update
$ sudo apt install python python-dev python3 python3-dev
$ sudo apt install python-pip python3-pip
$ sudo apt install virtualenv
$ sudo apt install curl git



引き続き、Google Cloud SDKのインストールです。
Google Cloud SDK ドキュメント

リポジトリを追加し、aptでインストールできるようです。
手順通りコマンドを実行していきます。

/etc/apt/sources.list.d/google-cloud-sdk.listにリポジトリのパスを記載。
Google Cloudの公開鍵をインポート。

まだUbuntu 18.04(bionic)用のファイルが作成されていないようなので、
17.10(artful)を指定しています。


$ echo "deb http://packages.cloud.google.com/apt cloud-sdk-artful main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -



google-cloud-sdkをインストール。


$ sudo apt update
$ sudo apt install google-cloud-sdk



合わせてPython用のライブラリもインストールします。


$ sudo apt install google-cloud-sdk-app-engine-python-extras



最後に、gcloud initでgoogleアカウントの認証を行います。
※gcloud initだけだとネットワークチェックで止まってしまいました。


$ gcloud init --skip-diagnostics



ブラウザが起動し、アカウントの選択が表示されます。

870_05.png

許可をクリック。

870_06.png

認証完了です。

870_07.png

これで下準備は完了です。
...と思ったのですが、うまく認証できていなかったようです。
Cloud SDK の初期化
こちらを参考に、コンソールモードで初期化しました。


$ gcloud init --console-only



アクセス用のURLが表示されるので、ページを表示。
認証するとキーが表示されるので、それをコピペで貼り付けます。


$ gcloud init --console-only
Welcome! This command will take you through the configuration of gcloud.

Settings from your current configuration [default] are:
core:
disable_usage_reporting: 'True'

Pick configuration to use:
[1] Re-initialize this configuration [default] with new settings
[2] Create a new configuration
Please enter your numeric choice: 1

Your current configuration has been set to: [default]

You can skip diagnostics next time by using the following flag:
gcloud init --skip-diagnostics

Network diagnostic detects and fixes local network connection issues.
Checking network connection...done.                                            
Reachability Check passed.
Network diagnostic (1/1 checks) passed.

You must log in to continue. Would you like to log in (Y/n)? Y

Go to the following link in your browser:

     # このURLをブラウザで表示
    https://accounts.google.com/o/oauth2/auth?redirect_uri=xxxx


Enter verification code: [ブラウザに表示されたキーを入力]
You are logged in as: [example@gmail.com].

Pick cloud project to use:
[1] py-symfoware
[2] Create a new project
Please enter numeric choice or text value (must exactly match list
item): 1

Your current project has been set to: [py-symfoware].
...(略)...






プログラムの作成



実際にGAEで動作するプログラムを作成してみます。
py-sampleというディレクトリにサンプルを作成していきます。


$ mkdir py-sample
$ cd py-sample/



virtualenvでPython2の仮想環境を作成。


$ virtualenv --python python2 --no-site-packages env



仮想環境に切り替えます。


$ source env/bin/activate



最低限必要なファイルは2つ。

・app.yaml


  1. runtime: python27
  2. api_version: 1
  3. threadsafe: true
  4. handlers:
  5. - url: /.*
  6. script: main.app
  7. skip_files:
  8. - env/



skip_filesでvirtualenvが使用するディレクトリをアップロード対象から除外しています。

・main.py


  1. # -*- coding:utf-8 -*-
  2. import webapp2
  3. class MainPage(webapp2.RequestHandler):
  4.     def get(self):
  5.         self.response.headers['Content-Type'] = 'text/plain'
  6.         self.response.write('Hello, World!')
  7. app = webapp2.WSGIApplication([
  8.     ('/', MainPage),
  9. ], debug=True)



ファイルを作成したら、デバッグサーバーを起動します。


$ dev_appserver.py app.yaml



http://localhost:8080/にアクセス。

870_08.png

動いてくれました。

Ctrl + Cでデバッグサーバーを終了。
deactivateでvirtualenvの仮想環境を終了します。


$ deactivate





作成したアプリケーションの公開



gcloud app deployで作成したアプリケーションをデプロイします。


gcloud app deploy --version [バージョン名] --project [プロジェクト名]



こんな感じのコマンドでデプロイしました。


$ gcloud app deploy --version pre-prod-1 --project py-symfoware
Services to deploy:

descriptor:     [/home/baranche/dev/gae/py-sample/app.yaml]
source:         [/home/baranche/dev/gae/py-sample]
target project: [py-symfoware]
target service: [default]
target version: [pre-prod-1]
target url:     [https://py-symfoware.appspot.com]


Do you want to continue (Y/n)? Y

Beginning deployment of service [default]...
Some files were skipped. Pass `--verbosity=info` to see which ones.
You may also view the gcloud log file, found at
[/home/baranche/.config/gcloud/logs/2018.05.03/22.51.44.267350.log].
╔════════════════════════════════════════════════════════════╗
╠═ Uploading 2 files to Google Cloud Storage                ═╣
╚════════════════════════════════════════════════════════════╝
File upload done.
Updating service [default]...done.                                            
Setting traffic split for service [default]...done.                            
Deployed service [default] to [https://py-symfoware.appspot.com]

You can stream logs from the command line by running:
$ gcloud app logs tail -s default

To view your application in the web browser run:
$ gcloud app browse



gcloud app browseで公開したアプリケーションをブラウザで表示してくれます。


$ gcloud app browse



870_09.png
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2018/05/03(木) 23:02:54|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<LINE developersアカウントの登録とMessaging APIの基本設定 | ホーム | OpenCV + Pythonで特定の図形を検出する2(特徴量検出による図形の判定)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
https://symfoware.blog.fc2.com/tb.php/2165-63e652f3
この記事にトラックバックする(FC2ブログユーザー)