Flaskについて調べていたら、「herokuにデプロイして~」「簡単なデプロイ方法」というワードをよく見かけました。
・・・デプロイとは何ぞや??
DevOpsの親戚的なものかな?とか、とんちんかんなことを考えていたのですが。
deploy:配備する、配置する
だそうで。ざっくり言えば、使えるようにアップするぐらいのイメージかな?
というわけで、自分も作ったアプリを「デプロイ」してみました。自分がエラーで引っかかったところも合わせながら書いていきます。
##デプロイマンへの道のり
###アカウントの作成
公式サイトにアクセスする。アクセスしたら、Start running~をクリックする。
Beginnerプランを選んで、Create a Beginner account をクリック。
※他のプランは有償なので注意
項目に各情報を入力する。利用規約とプライバシーポリシー&クッキーポリシー(I agree to~)にチェックを入れたら、Register をクリック。
Usernameは半角英数字のみ(このアカウントのままアンダーバー入れようとしたらNGだった)
###ファイルのアップロード
ファイルのアップロード方法には①Git経由、②アップロード経由 の2種類存在する。自分の場合は②を選択することにした(楽だから)
アップロードするファイルの構成は下記の通り。
tatuya/
|__tatuya.py
|__templates/
|__form.html #入力用
|__test.html #出力用
|__static/
|__style.css #入力用デザイン
|__style2.css #出力用デザイン
Files>Open another fileを選択。次の画面にUpload a file が現れるので、該当のzipファイルをアップロードする。
Consoles>$Bashでコンソール画面を開く。unzipでアップしたファイルを解凍しておく。
unzip tatuya.zip
###デプロイ
コンソールを開き、仮想環境の設定とモジュールのインポートを行う。
#仮想環境の作成(todoがファイル名、Pythonバージョンは各自決める)
mkvirtualenv todo --python=python3.9
#利用するモジュールのインポート
pip install Flask
pip install jaconv
Web>Add a new web appをクリック。framework:manual configuration、version:Python3.9を選択。
仮想環境のパスを通す。Virtualenv>Enter~をクリック。タブに指定したファイル名(ここではtodo)を入れてチェック。
Code>WSGI Configuration file を選択。pyファイルを書き換える。
ファイルからFlaskの記述部分だけ残して、あとは削除する。中身を下記のように書き換える。
Code>Working directory を選択。パスをファイルが入っているところに書き換える。
Static files でメインファイル以外のパスを通す(htmlやcssなど)
Reloadをクリックして設定を反映させる。その後URLから、ファイルの中身が反映されていることを確認する。
Security>Force HTTPS でEnabledに変更しておく。
###補足
Flaskの場合、ローカル環境下だとhost=○○で実行させていることがある(自分もそうだった)。ただpythonanywhere内ではエラーになるらしいので、app.run()に変更する必要あり。
###デプロイしたアプリ
ちゃんとクラウド上で使えそうです。
元ネタはこれ。
##まとめ
何とかデプロイマンになれた。
##参照
https://help.pythonanywhere.com/pages/Flask/
https://qiita.com/tonytani37/items/60c7185b7cc235f45daf
https://www.pythonanywhere.com/forums/topic/12440/