【Django】DjangoアプリをPythonAnywhereにデプロイする方法

#概要
DjangoアプリをPythonAnywhereにデプロイした際の手順をまとめました。
なお本稿は、PythonAnywhereでアカウント登録、GitHubにpushしていることを前提に進めます。

**環境：**```python3.8.10```　```django3.2.6```
**事前準備：**PythonAnywhereでアカウント登録、GitHubにpush

・PythonAnywhereのアカウント登録→[PythonAnywhere公式サイト](https://www.pythonanywhere.com/)
・GitHubにpushする方法→[こちらの記事](https://yu-report.com/entry/gitpush/)を参考にしてみてください。


##1. 下準備編
###1.1　APIトークンを発行する

PythonAnywhereのダッシュボードを開いてください。
画面右上の「Account」からAccountページに移動します。
「API Token」のタブに切り替え、「Create new API token」のボタンを押下し発行します。
![スクリーンショット 2021-09-07 170726.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1280658/5fb39b28-35a5-5ee3-cb54-a315de88f330.png)

###1.2　PythonAnywhereをインストールする

画面左上のPythonAnywhereのロゴを押下してダッシュボードに戻ります。
「New console:」の下にある「Bash」ボタンを押下して、PythonAnywhereのコマンドラインを開いてください。
以下のコードを実行し、PythonAnywhereをインストールします。
※```pip3.6```の部分については、自分の環境に合わせてバージョン指定します。

```terminal
$ pip3.6 install --user pythonanywhere
```
```Successfully installed (...) pythonanywhere- (...)```の行で終了したら、インストール成功です！

##2.　デプロイ編
###2.1　GitHubからアプリを自動的に構成する

以下のコードを実行します。
※```python=3.6```の部分については、自分の環境に合わせてバージョン指定します。
※```python=3.6```の後には、あなたのGitHubリポジトリのURLが入ります。
このコードを叩くと、仮想環境の設定や、データベースの設定など諸々を自動で行ってくれます。

```terminal
$ pa_autoconfigure_django.py --python=3.6 https://github.com/hogehoge.git
```

###2.2　データベースの管理者アカウントを作成
仮想環境に入って、管理者アカウントを作成します。
※「ユーザー名」は、PythonAnywhereのユーザー名です。

```terminal
$ cd ユーザー名.pythonanywhere.com              #homeから移動
$ workon ユーザー名.pythonanywhere.com          #仮想環境に入る
$ python manage.py migrate
$ python manage.py createsuperuser             #ユーザー名・パスワードはメモしておく！
```

###2.3　WSGI Configuration Fileの編集

再度PythonAnywhereのダッシュボードに戻り、「Web」に移動します。
![スクリーンショット 2021-09-07 191609.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1280658/76c34476-2756-1a37-0ef0-0ab7aad5921e.png)
「Code」の「WSGI configuration file」をクリックします。
![InkedInkedスクリーンショット 2021-09-07 191736_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1280658/84ce224d-b3c1-ccfd-0db2-26a08836e0b6.jpeg)
２箇所だけ次のように編集してください。

```python:wsgi
$ path = '/home/ユーザー名/リポジトリ名/manage.pyがあるディレクトリ'    
$ os.environ ['DJANGO_SETTINGS_MODULE'] = 'settings.pyがあるディレクトリ名.settings'   
```

編集が終わったら、画面右上の「Save」を押下して保存します。

###2.4　settings.pyの編集

先ほど編集したWSGI Configuration Fileの上にある「Working directory」をクリックしてください。
settings.pyに移動したら、以下を追加して「Save」ボタンで保存します。

```python:settings.py
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
ALLOWED_HOSTS = ['localhost', '.pythonanywhere.com']
```

現時点でサイトが見えるようになっていますが、CSSは反映されていません。

##3.　staticファイル設定編
###3.1　staticファイルを反映する
PythonAnywhereのダッシュボードに戻り、「Bash」ボタンを押下しコマンドラインを開きます。

```terminal
$ python manage.py collectstatic        #静的ファイルを集める 
```
上のコードを実行すると、パスが最後の方に出力されるのでそれをコピーしてください。


###3.2　staticファイルのパスを設定する
PythonAnywhereのダッシュボードに戻り、「Web」に移動します。
![スクリーンショット 2021-09-07 191609.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1280658/76c34476-2756-1a37-0ef0-0ab7aad5921e.png)

「Static files:」でstaticファイルのパスを設定します。
Directory下の青字になっている部分をクリックし、手順3.1でコピーしたパスを張り付けてください。
![スクリーンショット 2021-09-08 160054.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1280658/efaf02ef-3021-70cb-774e-f7ed73e1c320.png)

###3.3　サイトを開いて確認する
「Web」のページを上にスクロールし、「Reload xxxx.pythonanywhere.com」ボタンを押下し、これまでの作業を反映させます。
![スクリーンショット 2021-09-08 160405.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1280658/51ee3f77-efa2-5515-d5df-5b04a00dba66.png)
「Web」ページ上部にある「Configuration for ...」の部分をクリックすると、ローカル環境で見えていたDjangoアプリが見れるはずです。:relaxed: