2018/02/11

GCP: Google App Engine上にPython(Flask)アプリを立ち上げる手順



  • Goal
    開発環境も何も無い状態から、GAE(Google App Engine)上にFlaskアプリ(Hello World)を30分以内に立ち上げる。
    GAEは、Standard Environmentなので、Pythonは、2.7
  • How
    1. GCP上に新プロジェクト作成(xxxxx-test−0001) ⇒ 手順割愛
    2. GCP上で、GAEを有効にする。 ⇒ 手順割愛
      初めてのアプリ作成で、Pythonを選ぶ。
      チュートリアルはやらなくて良いので、途中で抜ける。
      1プロジェクトで、1GAEアプリしか持てない。
    3. GCP上に新VMインスタンス(Ubuntu16.4)作成(dev001) ⇒ 手順割愛
      TYPEはMicro(無料マシン)でOK。
      別にローカルマシンがあればそれでもOK。
    4. VM(dev001)の設定 ー 開発環境構築
        4-1. 初期設定 + Pyenv + GAEのSDKの導入
          以下のファイルを実行
       
         ~$ . UbuntuSetupForGAE.sh

        4-2. Localに開発用フォルダの作成とPyenvのセットアップ      
           

    5. Deploy
      localでのテスト。main.pyがあるディレクトリで以下を実行
          $ 
    dev_appserver.py .
     
       Deploy。 main.pyがあるディレクトリで以下を実行する
          $ appcfg.py update --noauth_local_webserver -A "project id" -V "version" .

    6. 確認する。以下のURLにアクセスする。
      
    https://”projectid”.appspot.com
         



  • Notes
    これを使って、LineのBotなどマイクロサービスを立ち上げれる
    main.pyの編集と必要なlibのインストールが必要
  • Thanks!!

  • 2017/12/09

    木村家の人々

    昔見て、ものすごい衝撃的だった映画。”守銭奴”という言葉を覚えた映画。
    今なら、もっと別の小銭稼ぎ方法があるかも。あと、今じゃもう放送できないのかな。
    妻とみたが、妻にもまあまあ好評。
    昔見た時は、たしか親と見ていて気まずかった記憶あり。。。

    木村家の人々

    2017/12/02

    Pyenv + virtualenv のセットアップ手順 on AWS-EC2

    AWSのEC2 RHEL7.4(Ubuntuの場合は、パッケージの部分だけ違う) に Pyenv+virtualenv をセットアップする手順

    1.インストール


    2.チェックとちょこっと設定
    #切り替え可能なバージョンチェック
    [ec2-user@ip-10-0-0-174 ~]$ pyenv versions
    * system (set by /home/ec2-user/.pyenv/version)
    #インストール可能なPythonバージョンを確認
    [ec2-user@ip-10-0-0-174 ~]$ pyenv install -l
    Available versions:
      2.1.3
      2.2.3
      2.3.7
      2.4
      2.4.1

      2.4.2
    #新しいPythonのバージョンをインストール
    [ec2-user@ip-10-0-0-174 ~]$ pyenv install 2.7.13
    Downloading Python-2.7.13.tar.xz...
    -> https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz
    Installing Python-2.7.13...
    Installed Python-2.7.13 to /home/ec2-user/.pyenv/versions/2.7.13
    #2.7.13が追加された。
    [ec2-user@ip-10-0-0-174 ~]$ pyenv versions
    * system (set by /home/ec2-user/.pyenv/version)
      2.7.13
    #2.7.13をベースに、"testpy"という環境を構築する
    [ec2-user@ip-10-0-0-174 ~]$ pyenv virtualenv 2.7.13 testpy
    Collecting virtualenv
      Downloading virtualenv-15.1.0-py2.py3-none-any.whl (1.8MB)
        100% |████████████████████████████████| 1.8MB 638kB/s 
    Installing collected packages: virtualenv
    Successfully installed virtualenv-15.1.0
    New python executable in /home/ec2-user/.pyenv/versions/2.7.13/envs/testpy/bin/python2.7
    Also creating executable in /home/ec2-user/.pyenv/versions/2.7.13/envs/testpy/bin/python
    Installing setuptools, pip, wheel...done.
    Requirement already satisfied: setuptools in /home/ec2-user/.pyenv/versions/2.7.13/envs/testpy/lib/python2.7/site-packages
    Requirement already satisfied: pip in /home/ec2-user/.pyenv/versions/2.7.13/envs/testpy/lib/python2.7/site-packages
    #"testpy"が追加された
    [ec2-user@ip-10-0-0-174 ~]$ pyenv versions
    * system (set by /home/ec2-user/.pyenv/version)
      2.7.13
      2.7.13/envs/testpy
      testpy
    #開発用のディレクトリ"pyproject"のPython環境を"testpy"に変更する
    [ec2-user@ip-10-0-0-174 ~]$ cd pyproject/
    #今のバージョンは、2.7.5だが。。
    [ec2-user@ip-10-0-0-174 pyproject]$ python -V
    Python 2.7.5
    #Pyenvで変更すると
    [ec2-user@ip-10-0-0-174 pyproject]$ pyenv local testpy 
    (testpy) [ec2-user@ip-10-0-0-174 pyproject]$ python -V
    Python 2.7.13

    バージョン2.7.13へと変更された。

    Docker CE のセットアップ手順 on RHEL7.4 (AWS-EC2)

    AWSのEC2 RHEL7.4 にDocker CEをセットアップする手順

    1.インストール

    2.チェックとちょこっと設定

    #パーミッションがなく、sudoなしで操作できない。
    [ec2-user@ip-10-0-0-174 ~]$ docker ps
    Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.32/containers/json: dial unix /var/run/docker.sock: connect: permission denied

    #sudoなしで起動できるようにする
    #グループを作るー以下の場合はすでに存在していた。
    [ec2-user@ip-10-0-0-174 ~]$ sudo groupadd docker
    groupadd: group 'docker' already exists
    #dockerグループに追加する
    [ec2-user@ip-10-0-0-174 ~]$ sudo usermod -aG docker $USER

    このあと、ログインし直すと。。。
    [ec2-user@ip-10-0-0-174 ~]$ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [ec2-user@ip-10-0-0-174 ~]$ docker version
    Client:
     Version:      17.09.0-ce
     API version:  1.32
     Go version:   go1.8.3
     Git commit:   afdb6d4
     Built:        Tue Sep 26 22:41:23 2017
     OS/Arch:      linux/amd64

    Server:
     Version:      17.09.0-ce
     API version:  1.32 (minimum version 1.12)
     Go version:   go1.8.3
     Git commit:   afdb6d4
     Built:        Tue Sep 26 22:42:49 2017
     OS/Arch:      linux/amd64
     Experimental: false

    sudoなしで使える! インストール完了。

    2017/10/28

    CSVファイルを読み込んでlist型と辞書型に格納 - Python


    • Goal
      PythonでCSVファイルを読み込んで、List型と辞書型、集合型に格納する
    • How
      CSVモジュールのreaderメソッドを使う

      マスターファイルを作る。 テキストファイル menu.csv
       
      UDON001,500
      UDON0012,700
      SUSHI0123,1200
      TONKATSU001,2000
      RAMEN10,1000

    • Result
      (pytest2.7.13)~/pytest$ python CSVtoListDic.py 
      List
      [['UDON001', '500'], ['UDON0012', '700'], ['SUSHI0123', '1200'], ['TONKATSU001', '2000'], ['RAMEN10', '1000']]
      5
      Dic
      {'TONKATSU001': '2000', 'UDON001': '500', 'RAMEN10': '1000', 'UDON0012': '700', 'SUSHI0123': '1200'}
      5
      Set
      set(['TONKATSU001', 'UDON001', 'SUSHI0123', 'UDON0012', 'RAMEN10'])

      5

    2017/10/22

    GCP: Google App Engineにアプリーケーションをデプロイする方法 ー GAE/Py


    • 備忘メモ
      Google App Engine にデプロイするコマンド
      EC2上のUbuntu16.04からデプロイ
      APP.yamlファイルがあるディレクトリで実行すること


    (pytest2.7.13) ubuntu@ip-10-0-0-253:~/pytest$ appcfg.py update --noauth_local_webserver -A "projectid" -V "version" .←Main.pyがあるディレクトリで流しているので。。。
    • 結果 --- これは何も更新されてないけど

      10:43 AM Application: (was: None); version:  (was: None)
      10:43 AM Host: appengine.google.com
      10:43 AM Starting update of app: , version: 
      10:43 AM Getting current resource limits.
      10:43 AM Scanning files on local disk.
      10:43 AM Scanned 500 files.
      10:43 AM Cloning 896 application files.
      10:43 AM Compilation starting.
      10:43 AM Compilation completed.
      10:43 AM Starting deployment.
      10:43 AM Checking if deployment succeeded.
      10:43 AM Deployment successful.
      10:43 AM Checking if updated app version is serving.
      10:43 AM Completed update of app: , version:

    テキストファイルをRDBのテーブル(イメージは、品番マスターとか)風に使う - Python


    • Goal
      ChatBotが受信したテキストメッセージと、テキストファイル(CSV)をマッチングさせる。テキストファイルのままで、品番マスタの用に使って参照させる。
    • 準備
      マスターファイルを作る
      テキストファイル menu.csv
       
      UDON001,500
      UDON0012,700
      SUSHI0123,1200
      TONKATSU001,2000
      RAMEN10,1000
    • How
      1. unicodedata を使って、ひらがな・カタカナ・漢字判定と、全角・半角変換する
      2. lineでテキストファイルから1行取得して、比較を繰り返す
      3. 先頭からで一致したら抜き出す

    • 結果

      (pytest2.7.13) ubuntu@ip-10-0-0-253:~/pytest$ python testmatch.py
      UDON001,500
    • Thanks!!
      以下、参考にさせて頂きました。
      http://minus9d.hatenablog.com/entry/2015/07/16/231608