Django4 Ubuntu22 media files設定まとめ

Django4 Ubuntu22 media files設定まとめ

Django4 Ubuntu22 media files設定まとめ

Django4 Ubuntu22 media files設定まとめ

意味:

media files(メディアファイルズ)とは、djangoフレームワークにおいて、画像ファイルのことです。例えば、pngjpgなどはmedia filesに含まれます。

別名:

静的ファイル

コマンド:


MEDIA_URL = '/media/' #templateからmedia filesを参照するために指定するパス。絶対パスで指定。

MEDIA_ROOT = os.path.join(BASE_DIR, 'media') #開発用設定
MEDIA_ROOT = '/var/www/media/' #デプロイ用設定

cd /var/www/
rm -rf media #消去

cp -r /hikari/front/media /var/www/media #デプロイ用にコピー

#Gunicornの動作確認
sudo systemctl status gunicorn #状態確認
sudo systemctl restart gunicorn #再起動
sudo systemctl enable gunicorn #自動再起動の設定

#nginx設定
#MEDIA_ROOTと異なる 
#MEDIA_ROOT = /var/www/media/
#Nginx = /var/www/ 
server {

location /media/ {
root /var/www;
}

}

#その他
ディレクトリのパーミッションを確認して外部からアクセスできるようにしておくこと

解説:

djangoは、デベロップメント環境とデプロイ環境で、media filesの配置を分けています。

探究資料:


Django project.
ジャンゴプロジェクト.

スポンサーさん

エラー debug=False 環境で画像が表示されない

問題:


Deploy環境で画像がブラウザで表示されない。

原因:


Djangoでは debug=True の場合と debug=False の場合で Media files の扱いが変わります。この仕様はデフォルトで debug=False の場合、各 app フォルダの直下にある static files (画像やCSS) が参照されなくなります。

対策:


debug=False、つまりデプロイ環境の場合は python manage.py collectstatic コマンドで、各 app フォルダの直下にある static files を、1つのフォルダに集めます。そして、集めたフォルダへ、ウェブサーバーを参照させます。
Media files は、プロジェクト直下の urls.py を以下のように設定し debug=True の場合と debug=False の場合で使い分けます。

コマンド:



#settings.pyの設定
MEDIA_URL = '/media/' #templateからmedia filesを参照するために指定するパス。絶対パスで指定。

MEDIA_ROOT #画像のアップロード先を設定
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') #開発用設定
MEDIA_ROOT = '/var/www/media/' #デプロイ用設定

#urls.pyの設定
from django.urls import path, re_path
from django.conf.urls.static import static
from django.conf import settings
from django.views.static import serve

urlpatterns = [
...
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += [re_path(r'^media/(?P.*)$', serve, {'document_root': settings.MEDIA_ROOT,}),]

#Gunicornの動作確認
sudo systemctl status gunicorn #状態確認
sudo systemctl restart gunicorn #再起動
sudo systemctl enable gunicorn #自動再起動の設定

#nginx設定
#MEDIA_ROOTと異なる 
#MEDIA_ROOT = /var/www/media/
#Nginx = /var/www/ 
server {

location /media/ {
root /var/www;
}

}

#その他
Media files のあるディレクトリのパーミッションを確認して、外部からアクセスできるようにしておくこと


Django4 Ubuntu22 media files 探究資料

科目別 By Curriculum


大学受験  情報科学(Computer science)

単元別 By Subject


情報科学  プログラミング(Programming)
情報科学  パイソン (Python)
情報科学  ウェブ(Web)
情報科学  ウィンドウズ (Windows)
情報科学  リナックス (Linux)
情報科学  ギットハブ (Github)
情報科学  ジャンゴ (Django)

対象児童生徒 By Age


中学数学(二次関数まで!)を履修し終えている生徒
コンピューターの基礎知識を学びたい生徒
自分でプログラム(program)を書きたい生徒
情報科学(Computer Science)を学びたい生徒
大学受験生(国公立高校生+私立中高一貫校生)
大学生+社会人(基礎からやり直したい生徒)


プロ家庭教師コンピューター教材で、重要語句の日本語訳・韓中英訳・別名・解説をまとめています。オンライン学習用で、生徒・保護者・教員・家庭教師のために、無料ダウンロードを提供します。

スポンサーさん