LoginSignup
0
1

Djangoをpythonanywhereでdeployしたときの注意事項や備忘録

Last updated at Posted at 2023-05-05

基本はこちらを参照しましたが、追加で色々やる必要があったので、その備忘録

pythonanywhere

pythonanywhereは無料で利用できるが、使用期間をクリックし更新しなければ
3ヶ月ほどで、期限が切れるため注意
api tokenの作成もここで行なっておく

Djnagoをdeploy

consoleにアクセスし、黒いCLI画面から諸々の操作を行う。

git pullする

githubのkeyを作成し、pull可能にする。
githubのkey取得に手間取り、pullの許可も行う。

以下を参考にpull

git pull https://ghp_hogehoge@github.com/username/repositoyname.git

mysqlのconsoleから、databaseを作成する。

consoleに入って、databaseを作成する

settings.pyを本番用にカスタマイズする必要があるため
mysqlのhostnameを調べる
→databaseタブからhostnameが見れる

pip install mysqlclientも実行しておきましょう

以下のようになります
hostname: <username>.mysql.pythonanywhere-services.com
name: <username>$test_db

wsgiの記述を変更

書き方がダメだったのか、setdefaultの書き方だとエラーが出たので、変更しました

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'test.settings')
↓
os.environ['DJANGO_SETTINGS_MODULE'] = 'test.settings'

また、本番のpathも追加で記述が必要になります。
このpathの追加がかなり調べるのがしんどかった

完成コード

python wsgi.py
import os

import sys
#追加
path = '/home/username/test/test1'
if path not in sys.path:
    sys.path.append(path)


from django.core.wsgi import get_wsgi_application
#変更
os.environ['DJANGO_SETTINGS_MODULE'] = 'test.settings'

application = get_wsgi_application()

static file

djangoではstatic fileにcssや画像データを格納するみたいです
このあたりのpath周りをセッティング

settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    BASE_DIR / 'static',
    
]
STATIC_ROOT = '/home/username/test/static'

python manage.py collectstatic
を実行するとstaticフォルダに移動される
この時、staticフォルダを手動で作る必要あり

form.is_valid()

formを使い登録するところでエラーが発生
debug=Trueには本番ではあまりやらない方がいいので、localで対応

messageをtemplate上に出して、確認を行う

form = UserCreationForm(request.POST)
for e in form:
        messages.error(request,e.errors)

また、databaseのエラーも出たが、migrateがうまくいっていなかったみたい。
きちんとやり直すといいかも

#その他
localでdotenvを使用していたが、本番ではうまく機能しなかった
また後ほど調査してみる

0
1
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
0
1