【Django入門】PythonAnywhereを使ってみた。

※ 当サイトではアフィリエイト広告を利用しています。リンクは広告リンクも含みます。

この記事は約7分で読めます。
広告

ローカルで動いているDjangoのプロジェクトをPythonAnywereにデプロイしてみました。クレカ登録はせずBeginner: Free0/monthで使います。デプロイできるのは1個です。
デプロイしたものは3か月に1回、ログインして「Run until 3 months from today」ボタンをクリックする必要があります。
忘れてもリスタートできます。
動かすことが目的なのでSECRET_KEYなどセキュリティの対応はしてません。
他のサイトで紹介されているAPIトークン取得やpipでpythonanywhereはしていません。この辺は全く調べていません。
できるだけ簡単に動かしてみたかったのでローカルで動いているものを使いました。
GitHubにpushしPythonAnywhereにクローン、数か所の修正、設定でデプロイしています。
またデータベースはsqlite3を使い、migrateやsuperuser作成はせずローカルで作ったものがdb.sqlite3に入っているので、そのまま使用しています。
その後Https化とMySQL化も行いました。

完成品:ノウハウ掲示板(管理画面を利用した掲示板)

広告

登録

PythonAnywhereにて”Start running Python online in less than a minute!”をクリック→”Create a Beginner account”をクリック
Username,Email,Password,Password(agein),利用規約のチェックボックスでRegisterで完了です。
メールでPythonAnywhere: confirm your email addressが来ます。私の場合spam扱いでしたが、click this linkをクリックするとDashboardの上にでていたメッセージが消えました。(自己責任でお願いします。)

デプロイ

ローカルで動いているものをGitHubにpushしておきます。
PythonAnywhereでNew consoleのBashをクリックするとコンソールが立ち上がります。

git clone https://ghp_oそれぞれ違うgitubのトークン@github.com/miyamiko/knowhow.git
でPythonAnywhereにコードをクローンします。

右のハンバーガーメニューのFilesでクローンしたファイルが見れます。
右上のWEBをクリック
Add a new web app→ドメインichige.pythonanywhere.comが作られたことを知らせられる
Next
Select a Python Web framework→Django
Select a Python version→Python 3.10 (Django 4.0.6)ローカルで動かしていた最新にした。
Create new web appCloseでProJect Name(デフォルトmysite)とDirectory(デフォルト/home/ichige)はデフォルトのまま。
Next
Configuration for ichige.pythonanywhere.comが出るので一応完成。
しかしアクセスするとDjangoのデフォルト画面が表示されます。
目次へ

動くように修正

Webの中段にあるCode:のところをクローンしたものに修正します。
Source code:
/home/ichige/mysite→/home/ichige/knowhow(クローンしたプロジェクト)

Go to directory
Working directory:
/home/ichige/(ここはデフォルトのままでok)

Go to directory
WSGI configuration file:/var/www/ichige_pythonanywhere_com_wsgi.pyを以下のように自分のプロジェクトに修正

import os
import sys

# add your project directory to the sys.path
project_home = '/home/ichige/mysite'→'/home/ichige/knowhow'(クローンしたプロジェクトの場所を指定)
if project_home not in sys.path:
    sys.path.insert(0, project_home)

# set environment variable to tell django where your settings.py is
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'→'pj_login.settings'(settings.pyの場所を指定、下図参照)

# serve django via WSGI
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Filesでsettings.pyを修正(自分のドメインをALLOWED_HOSTSに追加)
ALLOWED_HOSTS = ['ichige.pythonanywhere.com']

WEBでreload ichige.pythonanywhere.comをクリックしないと変更が反映されません。
これで動くようになります。
目次へ

他のアプリに切り替えてみた

最初に作ったmysiteはdjango-admin startproject mysiteが実行されたときと同じ状態のようなので
consoleでアプリを新規作成するところからやってみた。

cd mysite
python manage.py startapp hajimete_app
以降は下の記事の通りに作り

Webの中段にあるCode:のところをもとに戻した。

略
project_home = '/home/ichige/mysite'
if project_home not in sys.path:
    sys.path.insert(0, project_home)

# set environment variable to tell django where your settings.py is
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
略

WEBでreload ichige.pythonanywhere.comをクリックして自分のドメインにアクセスするとちゃんと変更されていた。

その他

Https化

ドメインはhttpですがhttpsに変更可能です。
Web設定ページの中段に「Security:」があります。そこのForce HTTPS:ボタンを「Enabled」に切り替えreload ichige.pythonanywhere.comをクリックするとHttpsになります。

MySQL化

sqlite3から無料のMySQLへ変更しました。(パスワードはsettings.pyに書かないで.envなどを使って隠したほうがいいかも)
Databases→MySQL
MySQL用パスワード作成→Initialize MySQL
settings.py変更

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': BASE_DIR / 'db.sqlite3',
#     }
# }
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'ichige$default',←下図のYour Databases:Name
        'USER': 'ichige',←下図のUsername
        'PASSWORD': 'MySQL用パスワード作成で作ったもの',
        'HOST': 'ichige.mysql.pythonanywhere-services.com',←下図のDatabase host address
    }
}

コンソールで
python manage.py createsuperuser
python manage.py migrate
reload ichige.pythonanywhere.comをクリックするとMySqlに変わります。

あとがき

ローカルで動いているものだったらGitHub経由で簡単にデプロイできた。新規にPythonAnywhere上でもDjangoのアプリが作れる。
目次へ

MENTAやってます(ichige)
イチゲをOFUSEで応援する(御質問でもOKです)

コメント

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