【Python-Django開発】ビルド時に’collectstatic’ exited with exit code 1エラーが発生する

こんばんは!トラブルシューティング記録ログです。
この記録が誰かの役に立てればこの上なき幸せ・・・

問題

Python-DjangoプロジェクトをWebサーバへデプロイしたのに(今回私は、Azure App Serviceへのデプロイ時にこのエラーに遭遇しました)ローカルで見えていたDjangoのデフォルトページが見えない・・・!

なぜだ・・!

デプロイ時のログを眺めてみると、どうやら”Collectstatic”という処理が正常に完了していない様子。(Exit code 1で終了している)

さらに「django.core.exceptions.ImproperlyConfigured: You’re using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.」なる文言も。

## デプロイ時のログ
・・・(中略)・・・
15:07:09 WebAppLinuxPythonDjango013: Running collectstatic...
15:07:14 WebAppLinuxPythonDjango013: Traceback (most recent call last):
15:07:14 WebAppLinuxPythonDjango013:   File "manage.py", line 15, in <module>
15:07:15 WebAppLinuxPythonDjango013:     execute_from_command_line(sys.argv)
15:07:15 WebAppLinuxPythonDjango013:   File "/tmp/8d933b15444405e/antenv/lib/python3.8/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
15:07:15 WebAppLinuxPythonDjango013:     utility.execute()
15:07:15 WebAppLinuxPythonDjango013:   File "/tmp/8d933b15444405e/antenv/lib/python3.8/site-packages/django/core/management/__init__.py", line 375, in execute
15:07:15 WebAppLinuxPythonDjango013:     self.fetch_command(subcommand).run_from_argv(self.argv)
15:07:15 WebAppLinuxPythonDjango013: 'collectstatic' exited with exit code 1.
15:07:15 WebAppLinuxPythonDjango013:   File "/tmp/8d933b15444405e/antenv/lib/python3.8/site-packages/django/core/management/base.py", line 316, in run_from_argv
15:07:15 WebAppLinuxPythonDjango013: Done in 6 sec(s).
15:07:15 WebAppLinuxPythonDjango013:     self.execute(*args, **cmd_options)
15:07:16 WebAppLinuxPythonDjango013: Preparing output...
15:07:16 WebAppLinuxPythonDjango013:   File "/tmp/8d933b15444405e/antenv/lib/python3.8/site-packages/django/core/management/base.py", line 353, in execute
15:07:16 WebAppLinuxPythonDjango013:     output = self.handle(*args, **options)
15:07:16 WebAppLinuxPythonDjango013:   File "/tmp/8d933b15444405e/antenv/lib/python3.8/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 188, in handle
15:07:16 WebAppLinuxPythonDjango013:     collected = self.collect()
15:07:16 WebAppLinuxPythonDjango013:   File "/tmp/8d933b15444405e/antenv/lib/python3.8/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 114, in collect
15:07:16 WebAppLinuxPythonDjango013: Copying files to destination directory '/tmp/_preCompressedDestinationDir'...
15:07:16 WebAppLinuxPythonDjango013:     handler(path, prefixed_path, storage)
15:07:16 WebAppLinuxPythonDjango013:   File "/tmp/8d933b15444405e/antenv/lib/python3.8/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 343, in copy_file
15:07:16 WebAppLinuxPythonDjango013:     if not self.delete_file(path, prefixed_path, source_storage):
15:07:16 WebAppLinuxPythonDjango013:   File "/tmp/8d933b15444405e/antenv/lib/python3.8/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 249, in delete_file
15:07:16 WebAppLinuxPythonDjango013:     if self.storage.exists(prefixed_path):
15:07:16 WebAppLinuxPythonDjango013:   File "/tmp/8d933b15444405e/antenv/lib/python3.8/site-packages/django/core/files/storage.py", line 308, in exists
15:07:16 WebAppLinuxPythonDjango013:     return os.path.exists(self.path(name))
15:07:16 WebAppLinuxPythonDjango013:   File "/tmp/8d933b15444405e/antenv/lib/python3.8/site-packages/django/contrib/staticfiles/storage.py", line 43, in path
15:07:16 WebAppLinuxPythonDjango013:     raise ImproperlyConfigured("You're using the staticfiles app "
15:07:16 WebAppLinuxPythonDjango013: django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.
15:07:52 WebAppLinuxPythonDjango013: Done in 36 sec(s).
15:07:52 WebAppLinuxPythonDjango013: Compressing content of directory '/tmp/_preCompressedDestinationDir'...
15:08:17 WebAppLinuxPythonDjango013: Copied the compressed output to '/home/site/wwwroot'
15:08:17 WebAppLinuxPythonDjango013: Removing existing manifest file
15:08:17 WebAppLinuxPythonDjango013: Creating a manifest file...
15:08:17 WebAppLinuxPythonDjango013: Manifest file created.
15:08:17 WebAppLinuxPythonDjango013: Done in 190 sec(s).
15:08:20 WebAppLinuxPythonDjango013: Running post deployment command(s)...
15:08:21 WebAppLinuxPythonDjango013: Triggering recycle (preview mode disabled).
15:08:21 WebAppLinuxPythonDjango013: Deployment successful.
15:08:24: Deployment to "WebAppLinuxPythonDjango013" completed.

解決方法

このエラーについて調べてみると、以下をみつけた。

https://stackoverflow.com/questions/41515999/python-manage-py-collectstatic-noinput-error-when-deploying-django-project-to

どうやら、”STATIC_ROOT”の設定がないことが原因らしい。

・・・STATIC_ROOTってなんだ?なぜ必要なのだ・・?と思ったところでこんな記事もみつけた。これはわかりやすい。

https://qiita.com/saira/items/a1c565c4a2eace268a07

ということで、settings.pyのSTATIC_URLの下に以下の設定を追加。

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

設定追加後再デプロイをすると無事Djangoのデフォルトページに接続できるようになりました!

おしまい

この記事を気に入っていただけたらシェアをお願いします!
ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。