AzureというMicorosoftからでているクラウドサービスがあります
学生であればMicrosoft Imagineに登録することでWeb App等のサービスを無料で使うことができます
そこで私はWeb Appサービスを使ってpythonにて形態素解析するWebアプリを作りました
この記事でAzureのWebアプリをpythonで作るまでの一連の流れを書き留めておきます
前提として、Azureのアカウント取得済みで進行します
また、後述に出てきますがGitHubでデプロイするため、GitHubアカウント取得済みで書いていきます
Web Appの新規作成
リソースの作成から”Web App”を選択
アプリ名を書いたり、OS等の選択をしたりする
サブスクリプションはImagineに登録済みであれば勝手に”Microsoft Imagine”となっています(学生以外のひとはどのように表示されるかわかりません)
App Serevice プラン/場所では、デフォルトでもおkですが私は物理的に近いところ(日本)にしました
ダッシュボードにピン留めにチェックを作るとアクセスしやすくなるためつけておくと良いと思います
あとは作成するとWeb Appが作られます
Web Appの設定
左の項目にあるダッシュボードまたは、App Serviceに作成されたアプリケーションがるため、それを選択します
アプリケーション設定を開き、お好きなPythonバージョンを選択する
この例では3.4を選択しました
これでAzureでpythonを動かすことができます
プログラムの作成
Azureで動かすためのプログラムを作ります
はじめにサンプルをダウンロードしてきます
githubに上がっているためクローンをしてくる
git clone https://github.com/Azure-Samples/python-docs-hello-world
2018/04/07現在では以下のようなファイルがあります
このファイルの中で重要なものを赤で塗っておきます
- .gitignore
- LICENSE
- main.py
- ptvs_virtualenv_proxy.py
- requirements.txt
- web.2.7.config
- web.3.4.config
注意として、ファイル名を変えるとデプロイするときにもれなく認識しなくなります
main.py
ここでプログラムを書いていきます
サンプルではFlaskというモジュールを使っているため、それに従って書きます(ネットで調べるとDjangoもいけるらしい)
書き方は下記のサイトが参考になります
requirements.txt
使いたいモジュールを入れるところです
numpyとか使いたい人はここにモジュール名とバージョンを入れておきます
Flask==0.12.1
ptvs_virtualenv_proxy.py / web.2.7.config / web.3.4.config
Azureが勝手に認識するファイル
これらのファイルは基本編集しないがデプロイするときに一緒に入れます
Azureへデプロイ
Azureへのデプロイ方法はOneDriveやDropBoxなどいろいろありますが、ここではGitHubにてデプロイを行います
はじめに、Githubで新しいリポジトリを作成します
そして、プログラム作成にて赤で塗ったファイルをコミットします
コミットしたことを確認後、Azureへもどる
デプロイ設定にてGitHubを選択後、AzureがGitHubへのアクセスを許可し、上記で作成したリポジトリを選択します
選択後、OKするとAzureへデプロイされます
起動の確認
main.pyをサンプルファイルのままデプロイし、WebサイトへアクセスするとHelloWorldがでてきます
お疲れ様でした
公式にもPythonで動かす方法があるのですが、デプロイ方法がAzure Cloud ShellとGitオンリーであったり、Azureでpythonつかう設定が抜けていたりしてかなり分かりづらくて自分が作ったものを動かすのに大変でした・・・
自分で作ったもの
これを使って形態素解析するWebアプリをつくりました
形態素解析したい文章をpostするとjsonで帰ってくる簡単なものです
違う記事にまとめますが、実行結果は下記のようになります
>python .\testpost.py "これはテストです" { "status": "OK", "result": [ { "part": "名詞", "surface": "これ" }, { "part": "助詞", "surface": "は" }, { "part": "名詞", "surface": "テスト" }, { "part": "助動詞", "surface": "です" } ] }
コメント