【Django】本番環境(実稼働サーバ)上でだけ画像アップロード系処理がエラーとなる場合の対応

カテゴリ:Django 投稿:2022年6月7日22:58、更新:2022年6月27日1:28

・記事の概要 

Djangoで作成したアプリでローカルでは正常であるが、本番環境でだけ画像アップロード系処理がエラーとなる場合の対応を記載します。


・この記事でできるようになること 

本番環境でも画像アップロード系処理が正常に動作できるようになります。

settings.py debug=Falseにしたことで発生している場合、

プロジェクトディレクトリ内の「urls.py」で以下のような記載がある方はおおよそこの記事の事象かと思います。

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)


・実際の手順 

①mediaディレクトリの作成

以下のようにmediaディレクトリを作成してください。

sudo mkdir /var/www/media


settings.pyへの追記

以下をsetting.pyに追記(変更)しましょう。

MEDIA_URL = '/media/'
MEDIA_ROOT = '/var/www/media'


confへの追記

「/etc/nginx/conf.d」配下のプロジェクトconf内に以下を追記しましょう。

server {

        #追記部分
       location /media{
                alias /var/www/media;
       }

}


再起動

以下でnginxを再起動し、その後にdjangoも再起動をかけます。

sudo systemctl restart nginx


④確認

本番サーバ上のアプリで画像系処理を確認してみてください。


・まとめ 

いかがだったでしょうか。

環境差異のエラーが出てしまうと、なかなか追いにくいですがこちらでもし解消すれば幸いです。

コメント一覧

コメント投稿ページへ


書いている人

のぎ
PG->SE->PMとして働き、現在はIT企業で新卒採用の担当をしています。長期育休取得明けで0歳娘の対応に毎日バタバタです。笑
採用業務をしつつ社内利用ツールなど作成しており、当ブログも勉強の一環でコーディングして作成しています。 エンジニア領域、人事・採用領域、育児関連など発信していきます。