PythonAnyWhereにデプロイ方法

lecture

Pythonの勉強して作品を作ったけれども、公開できなくて困ってませんか。
初心者にも優しいホスティングサービスがPythonAnyWhereです。今回はPythonAnyWhereへのデプロイの方法の解説です。

スポンサーリンク

PythonAnyWhereとは

PythonAnyWhereはPythonプログラミング言語に基づくオンライン統合開発環境(IDE)およびWebホスティングサービス(Platform as a service)です。
2012年に Giles Thomas氏とRobert Smithson氏によって設立され、ブラウザ内でサーバーベースのPythonおよびBash コマンドラインインターフェイスにアクセスできるほか、構文を強調表示するコードエディターも提供しています。プログラムファイルは、ユーザーのブラウザを使用してサービスとの間で転送できます。

PythonAnyWhereのポイント

  • 無料で使えるので学習に使える
  • 利用できるフレームワーク Django、 Flask、 Bottle、 web2py etc
  • データベース MySQL も無料利用可(Postgre最低クレジットカード登録が必要)
  • SSL(https://)も可能
  • ダッシュボードの操作が直感的にできている。レンタルサーバー感覚でファイルのやり取りができる。また、ファイルの編集がサーバー上で簡単にできる。
  • 保存可能データサイズは約 12GBだが、個別のパッケージ導入には制限がある。例えばTenserflowのインストールは途中で止まる。

ダッシュボードの主な内容

コンソール操作画面

ファイル設定画面

Webアプリ設定画面

ダッシュボード画面

データベース作成画面

PythonAnyWhereデプロイの手順

  1. GitHubにデータをPush
  2. pythonanywhereでAPI トークンの作成
  3. データベースの準備
  4. PythonAnywhere 用のツールをダウンロード
  5. pa_autoconfigure_django.pyのコマンド実施
  6. エラーなどの対策

基本的に、4 がうまくいけばGitHubからコードをダウンロードして必要な追加のライブラリをインストールしてくれて、尚且つmanage.py migrateまで行ってくれるものです。

GitHubにデータをPush

この操作は「PythonAnyWhereの自動ツール」を使う場合は必要ないです。クローンも自動で実行してくれます。
手動で環境構築する場合は、GitHubにPushしておいたファイルやディレクトリをクローンして取得します。
GitHubを使うと何か特殊なことをおこなている気がしますが、そうではなく普通にFTP送信はセキュリティ上良くないので代わりに使っているだけです。
GitHubにPushするときは、データベース情報やトークン情報、API情報を載せたままにしないように要注意です。

pythonanywhereでAPI トークンの作成

Webアプリ作成の場合、まずこのトークンを作成しておきます。
ヘッダーメニューからaccountを選択、accountページからAPI Tokenタブを選ぶとAPI Toke設定ページです。
とりあえず、Tokenを作成しとおきます。

データベースの準備

PythonAnyWhereの管理画面からグローバルメニューから「Databases」を選択してMySQL(無料)かPostgreSQL(有料)好きな方を選びます。
ユーザー名、パスワード、新規データベース作成と設定を進めるとデータベースの設定所情報が表示されます。

PythonAnyWhereの自動ツールでデプロイと設定

pip3.6 install --user pythonanywhere

GitHubからデータをクローンしてきて、尚且つ必要なライブラリをインストールします。
うまくいけばデータベースのマイグレーションまで済みます。

pa_autoconfigure_django.py --python=3.8 https://github.com/<githubユーザー名>/<リポジトリ名>.git

やり直す場合

pa_autoconfigure_django.py --nuke --python=3.8 https://github.com/haidoro/dj_todo.git

エラーが出た時の対応

自動で設定を行なった場合は`virtualenv` の仮想環境にデプロイされています。
そのためコンソールからコマンドを実行するには`virtualenv` の仮想環境に入って作業する必要があります。

仮想環境を実行

仮想環境から出るコマンド

deactivate

再び仮想環境に新たに入るコマンド

workon <仮想環境名>

環境変数の登録

長くなるので別記事にしました。
PythonAnyWhere環境変数の設定を参考にしてください。

セキュアな通信HTTPSに対応する

HTTPSに対応するにはボタンひとつで可能です。
ダッシュボードのグローバルナビからWebを選択して、Web設定ページの中頃に「Security:」の設定があります。
そこのボタンを「Enabled」に切り替えるだけです。切り替えたら必ず最上部にある「Reload」ボタンでリロードします。
次の画像は「Security:」部分をChromeで日本語化したものです。

タイトルとURLをコピーしました