Django Python

[デプロイ]PythonAnywhereでWebサイトを簡単に公開する

PythonAnyWhere」を使用すると、Djangoなどで作成したWebサイトを簡単に公開することができます。

いわゆるデプロイと言われるやつですね。

デプロイというと、herokuとかが有名ですが、Pythonを使用しているなら「PythonAnyWhere」でも問題ないです。

就職や転職の際にポートフォリオを企業に見せると思うので、その際にも活用できます。

自分の自慢のサイトを世界に公開していきましょう!

PythonAnyWhereに登録

まずは「PythonAnyWhere」にユーザー登録をしていきましょう。

こちらにアクセスしてユーザー登録してください。

ちなみに無料プランだとユーザー名はドメイン名に含まれてしまうので、本名などを設定しないように気をつけてください。

ユーザー登録してログインするとこんな画面になります。

GitHubにリポジトリ作成

次に「GitHub」にリポジトリを作成していきます。

GitHub」とは、簡単にいうとファイルの管理と変更履歴を保存して置ける場所です。

GitHub」で常にファイルを管理している方はこのステップは飛ばしてください。

アカウント作成とリポジトリの作成

そもそも「GitHub」のアカウントがない方は以下からアカウントを作成してください。

アカウントが作成できたらログインできたら、右上の自分のアイコンから「Your profile」を選択して、自分のページにいきましょう。

こんか画面が出てくるので、「Repositories」に移動してください。

右上の「New」を押してください。

上のように入力&チェックを入れてください。

GitHub」ではできる限り英語を使ってください。

英語が苦手な方は翻訳アプリなど使っていただいて問題ないです。

翻訳アプリはこちらの記事などを参考にしてください。

入力できたら、「Create repository」をクリックしてください。

そうするとこのような画面が出てきます。

ここにファイルなどを管理できます。

では「Code」をクリックして、赤枠の部分を押してください。コピーしてくれます。

リポジトリにがファイルなどを入れる

コピーできたらそのまま「terminal」を開いてください。

# git clone 先ほどコピーしたもの
# 僕の場合
git clone git@github.com:cardene777/pythonanywere.git

terminal」を開いたら「Desktop」に移動して、次のコマンドを入力してください。

これは先ほど作成したリポジトリを自分の手元に持ってくるコマンドです。

もしエラーが出てしまった場合はこの記事を参考にしてください!

それ以外のエラーはお手数ですが、TwitterのDMやコメントで教えてください。

では本当に持って来れたの確認しましょう。

terminal」で次のようなコマンドを打ってください。

ls

これで先ほど作成したリポジトリの名前があれば持って来れています。

今現在自分が開発しているアプリのファイルが入っているディレクトリの場所を確認してください。

それを先ほど持ってきたリポジトリの中にコピーしていきます。(コピーではなく移動しても問題ないです。)

デスクトップにいる前提で次のコマンドを実行していきます。

# cp コピー元 コピー先
# cp 開発中のファイルなどが入ったディレクトリのデスクトップからの相対パス 先ほどcloneしてきたリポジトリ名
# 例
cp develop/todo pythonanywhere

これで先ほど持ってきたリポジトリの中にファイルなどをコピーできました。

確認していきましょう。

# 先ほど持ってきたリポジトリに移動
# cd リポジトリ名
cd pythonanywhere
ls

これで配下に先ほどコピーしてきたディレクトリがあれば完璧です。

では最後に「GitHub」の方にその変更を反映させていきましょう。

次のコマンドを無心で打ってください。

git init   # 初期化
git add .
git commit -m "first commit"
git push

これでエラーが出て来なければ「GitHub」のページに戻ってページをリロードしてください。

先ほどコピーしてきたディレクトリやファイルがあれば完璧です。

コンソールでの下準備

GitHub」に無事にディレクトリなどを持って来れた方は「PythonAnyWhere」に戻りましょう。

リポジトリを持ってくる

Bash」からコンソールを起動してください。

これは「terminal」とほとんど同じなので怖がらないでください。

上の部分から念の為もう一度コピーしておきます。

起動できたら次のコマンドを打ってください。

# git clone 上でコピーしたもの
git clone git@github.com:cardene777/pythonanywere.git

これで「PythonAnyWhere」の方にもリポジトリを持ってくることができました。

仮想環境の作成

仮想環境とはその名の通り仮想的な環境のことです。

イメージとしてはMacの環境の上に仮想的なMacの環境を作成するイメージです。

詳しくはこちらなどを参考にしてください。

では早速作成していきます。

# mkvirtualenv 環境名 --python=pythonバージョン
mkvirtualenv todo --python=python3.6

これで先頭に環境名がつけば完成です。

必要なパッケージのインストール

最後に必要なパッケージをインストールしていきます。

アプリの中で使用している外部パッケージはここでインストールしていきましょう。

# 必須
pip install django
pip install mysqlclient

# django-allauthを使用している方
pip install django-allauth
pip install psycopg2
# 画像を使用しているなら
pip install Pillow
・
・
・

これで下準備は完了です。

Webからの操作

では次は「Web」に移動して操作していきましょう。

先ほどの「コンソール」の右上から「Web」をクリックしてください。

仮想環境に指定

左の「Add a new web app」をクリックして、「Manual configulation」→「仮想環境作成時に指定したpythonバージョン」を選択して「Next」を押してWebアプリを作成してください。

作成するとこんな画面が出てきます。

少し下の方にスクロールして、「Virtualenv」のところに赤枠をクリックしてください。

先ほど作成した仮想環境名を入れてチェックボタンを押してください。

WSGI Configuration Fileの編集

Code」にある「WSGI Configuration file」をクリックして中身を次のように書き換えてください。

# +++++++++++ DJANGO +++++++++++
# To use your own django app use code like this:
import os
import sys
#
## assuming your django settings file is at '/home/cardene/mysite/mysite/settings.py'
## and your manage.py is is at '/home/cardene/todo/manage.py'
path = '/home/cardene/todo'
if path not in sys.path:
    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'config.settings'

# then:
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

自分の環境に合わせて書き換える必要がある場所が2箇所あります。

path = '/home/cardene/todo'

ここを「/home/ユーザー名/リポジトリ名/manage.pyがあるディレクトリ」に置き換えてください。

os.environ['DJANGO_SETTINGS_MODULE'] = 'config.settings'

ここを「settings.pyがあるディレクトリ名.settings.py」に書き換えてください。

最後に「Save」を押してください。

settings.pyの編集

赤線のところをクリックして「settings.py」に移動してください。

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
ALLOWED_HOSTS = ['localhost', '.pythonanywhere.com']

上記を追加して、「Save」を押してください。

staticファイル反映

staticファイルの反映をさせていきます。

赤線をクリックして「コンソール」に移動してください。

manage.py」が配下にあるディレクトリで次のコマンドを実行してください。

python manage.py collectstatic

そうするとパスが最後の方に出力されるのでコピーしてください。

Web」に戻り、「Static files:」の場所までスクロールしてください。

URLに「/static/」と入力し、「Directory」に先ほどコピーしたものを貼り付けてください。

DB作成

次に「Database」を作成していきます。

Databases」をクリックして、「MySQL」を選択して、「Database」名を入力して「Create」ボタンを押してください。

settings.py」に追記していきます。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '①',
        'USER': '②',
        'PASSWORD': '③',
        'HOST': '④',
        'PORT': '',
    }
}

①に「Databases」の「Start a console on:」をを入力してください。

②と③に「Database」を作成した時の「Username」と「Password」を入力してください。

④に「Databases」の「Database host address:」を入力してください。

サイトを開く

今まで行ってきた変更を反映させるためにリロードしましょう。

赤線の部分をクリックしてください。

自分が作成していたアプリが表示されていたら成功です!

もしエラーが出ていたら、「Error log:」→「Server log:」→「Access log:」の順に確認してみてください。

最後に

今回は「PythonAnyWhere」で自分で作成したWebアプリを公開する方法をみてきました。

エラーにはまると結構大変ですが、表示できた時の喜びは大きいので頑張ってください!

何か質問などがあれば気軽に下のTwitterやここのコメントで聞いてください。

それでは!

-Django, Python
-,