LoginSignup
0
1

PythonAnywhereにFlaskのチュートリアルWebアプリをデプロイする方法

Last updated at Posted at 2024-07-02

この記事では、flaskのチュートリアルを参考して作成したプログラムを、PythonAnywhereにをデプロイする方法を紹介します。

PythonAnywhereにflaskをデプロイする準備

最初にFlaskの公式チュートリアルを参考に、ローカルでwebアプリを開発します。

ローカル開発環境のディレクトリ構成

プロジェクト名(*1)/
├── プロジェクト名(*2)/
│   ├── static/
│   │   ├── style.css
│   │   その他ファイル...
│   │   
│   ├── templates/
│   │   ├── base.html
│   │   その他ファイル...
│   │   
│   ├── __init__.py
│    その他ファイル...
│   
├── venv
└── instance

PythonAnywhereの準備

アカウントを登録

アカウントを登録を登録しましょう。

フリープランだとウェブアプリのドメイン名にアカウント名が含まれます。公開しても問題ないアカウント名にするのか無難かと思います。

https://アカウント名.pythonanywhere.com/〇〇

FlaskのWebアプリのデプロイ準備

以下の順番アクセスしでデプロイの準備をします。

  1. 左上のWebをクリック
  2. 左上にあるAdd a new web appをクリック
  3. Your web app's domain nameをフリープランならNext
  4. Select a Python Web frameworkFlaskを選択
  5. Select a Python versionは各自の環境に合わせて選択
  6. Quickstart new Flask projectはそのままで問題なし

デプロイ

デプロイするファイルの準備

今回は直接ファイルをアップロードします。
プロジェクト名(*1)の階層でファイルを以下のように変更し、zipファイルを作成します。ちなみにしなくてもできますが、少し手間だと思います。

プロジェクト名(*1)/
└──プロジェクト名(*2)/
    ├── static/
    │   ├── style.css
    │   その他ファイル...
    │   
    ├── templates/
    │   ├── base.html
    │   その他ファイル...
    │   
    ├── __init__.py
     その他ファイル...

ファイルのアップロード

今回は、直接ファイルをアップロードする手順を紹介します。
以下の手順でアップロードします。

  1. 左上のFilesをクリック
  2. /home/アカウント名の階層で、Upload a fileをクリックし、先ほど作成したプロジェクト名(*1).zipをアップロード
  3. 同じ階層でOpen Bash console hereをクリックし、以下のコマンドを実行してzipファイルを展開
$ unzip プロジェクト名(*1).zip

zipファイル展開後、確認として、以下のディレクトリに、init.pyがあることを確認してください。

/home/アカウント名/プロジェクト名(*1)/プロジェクト名(*2)/__init__.py

必要なライブラリをPythonAnywhereでpip installする

各自の開発に合わせて適宜、使用するライブラリをpip installします。
インスールする際は以下の様にしないとうまくいかないです。

$ pip install --user <<インストールしたいもの>>

仮想環境を利用する際に使用するコマンド

仮想環境の作成
$ mkvirtualenv myvirtualenv

再アクティブ化
$ workon myvirtualenv

非アクティブ化
$ deactivate

Flaskチュートリアルのようにデータベースを初期化する場合(Sqliteの場合)

チュートリアルと同じコマンドなら、以下のように実行するとできました。

~/プロジェクト名(*1) $ flask --app プロジェクト名(*2) init-db

うまくいけば、プロジェクト名(*2)と同じ階層に、instanceのフォルダができると思います。

/home/アカウント名/プロジェクト名(*1)/

Static filesの設定

Staticとtemplatesの設定をします。
WebのページにあるStatic filesへ以下のように設定をします。
クリックすると、入力できます。

URL Directory
/static/ /home/アカウント名/プロジェクト名(*1)/プロジェクト名(*2)/static
/static/ /home/アカウント名/プロジェクト名(*1)プロジェクト名(*2)/templates
Enter URL Enter path

Codeの設定

WebのCode:の設定を行います。

Source code:を以下のように設定してください

/home/アカウント名/プロジェクト名(*1)/プロジェクト名(*2)/

Working directory:を以下のように設定してください

/home/アカウント名/

WSGI configuration file:の設定

以下のように設定してください。

import sys

project_home = '/home/アカウント名/プロジェクト名(*1)/'
if project_home not in sys.path:
    sys.path = [project_home] + sys.path

from プロジェクト名(*2) import create_app
application = create_app()

コメント部分は消してあります。
チュートリアルと関数名、クラス名を想定しています。(create_app())

Securityの設定

適宜設定してください。
暗号通信にしたり、アクセスするためのパスワードを簡単に設定できます。

終わりに

色々調べた果てにやっとの思いでデプロイできたので、その情報を共有したいと思い作成しました。
お役に立てれば幸いです。

間違っている点などコメントしていただけると、非常に嬉しいです。

引用・参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1