1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Django】×PythonAnywhereでのデプロイが上手くいかない時にやってみたこと

Last updated at Posted at 2020-07-21

概要

この記事では__Django-girlsのチュートリアル__を進める初心者向けに、PythonAnywhere上でのConsoleがうまく挙動しなくなった際の留意点を初心者が幾つかまとめておく。

半日くらい分かんなくてもう無理詰んだ、って思っても
まぁ、大体エラー文を読み続けてればなんとかなります。たぶん。

実行環境

  • Windows10 64bit
  • Python 3.6
  • git version 2.27.0.windows.1
  • Chromeブラウザ

エラーが出た際の確認手順

web上でうまく表示されないとか
Something-went-wrong.png

コンソールが途中で止まるとか
Console.jpg

原因は色々考えられるが、

1.まずはリモートリポジトリにあげる前のローカル環境で実行してみよう。

Domein for Qiita.png
python manage.py runserverを実行して、サイトが動いているか(変更が反映されているか)確認。

ここでhtmlやcssが反映されていない場合は、

  • サーバーを再度走らせる
  • ブラウザの更新ボタンを右クリックしてキャッシュクリア&リロード
    を試す。
    反映されない場合、__コードのほうに誤りがないか確認__する。

問題がなければ次のステップ。


2.GitHubにちゃんと変更がpushされているか確認。

ブラウザからリポジトリの中にある、更新したファイルをみてみる。
反映されていない場合、Console上で再度以下のコマンドをたたく。

% git status
% git add --all .
% git status

赤文字が緑になったら選択されているので、そのままコミット。(XXXXはブランチ名)

% git commit
% git push origin XXXX

__詳しい用語の説明__については、他記事で分かりやすくまとめてくれている方がいるのでここでは省略する👉(【Git】オレならこう説明する!Git初心者への用語説明)

※git statusで変更が検出されない場合は以下の手順を試す
% git fetch --all
% git add -A
% git commit -m"recommit" -v
% git push
※マージせなあかんで!と怒られちゃった場合
% git merge --allow-unrelated-histories origin/master

調べたところ、どうも現verでは__関係のないヒストリー同士をマージするにはオプションの追記が必要__らしい。詳しくはこちらの記事👉(:初めてGitHubリポジトリにpushしたらrejectedエラーになったときの対応メモ

※(余談)プルしようとしたら「マージする前にコミットするか隠して!」と怒られた場合👇
ErrorMessage
error: Your local changes to the following files would be overwritten by merge: 
         XXXX.py
Please commit your changes or stash them before you merge.
Aborting
対処法➊:隠す
# 一旦退避してプル
$ git stash
$ git pull origin master
# スタッシュを戻す
$ git stash pop
対処法➋:強制的にマージ(とにかくリモートに合わせれりゃいい!って時にオススメ)
$ git fetch origin
$ git reset --hard origin/master

リモートリポジトリに無事プッシュ出来たら、PythonAnywhere.comへ。


3.PythonAnyWhere上でConsoleエラーが出る時

GitHubまではうまくいってるのに、ブラウザにうまく表示されない。
そん時は、だいたいConsoleを立ち上げればヒントが隠されている。

Consoleを立ち上げて
通常、--nukeオプションを付与して以下のコマンドを実行することで自動でvenvを作り直したりあれこれ自動でやってくれる。

pa_autoconfigure_django.py https://github.com/your-github-username/my-first-blog.git --nuke

これでうまく表示されればそれでOK。

自分の場合、復習がてらもう一度 同一コンソール上からPythonAnywhere.comを作る所からやろうとして、見事に躓いた。

KeyError: 'collectstatic'と表示されとまってしまう。
Console2.jpg

色々と試行錯誤した結果、
__原因はSECRET_KEYが上手く読み込まれてないこと__と分かった。
どうりで、ページは表示されなくなるし作り直そうとしても途中で止まってしまうわけだ・・。.ignoreに指定しているからよく考えなくても当たり前だったorz

__この記事__を参考に別スクリプトでランダム生成してから読み込む形にしていたので、

from django.core.management.utils import get_random_secret_key

secret_key = get_random_secret_key()
text = 'SECRET_KEY = \'{0}\''.format(secret_key)

with open('local_settings.py', 'w') as f:
  print(text, file=f)

に少し変えてPythonAnywhereの__ブラウザ上から一回Run__。

無事SECRET_KEYが生成され、再びBashコンソールから上述の--nuke付コマンドで再構築。
そのまま再度pullして、

$ cd ~/<your-pythonanywhere-domain>.pythonanywhere.com
$ git pull

無事反映。
サイトが表示された。pyhonanywhere django.jpg

思ったこと

Django-girlsのチュートリアル、SECRET_KEYを分離させないのはなんでなんだろう。。
でもまあ、躓いたおかげででGitHuへコミットする流れやらバージョン管理の仕組みやら体感出来て理解ふかマンハッタン島。
この記事が役に立ったらLGMTしてくれると励みになります。


(Reference&&Thanks)
1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?