こんばんは!トラブルシューティング記録ログです。
この記録が誰かの役に立てればこの上なき幸せ・・・
問題
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.
解決方法
このエラーについて調べてみると、以下をみつけた。
どうやら、”STATIC_ROOT”の設定がないことが原因らしい。
・・・STATIC_ROOTってなんだ?なぜ必要なのだ・・?と思ったところでこんな記事もみつけた。これはわかりやすい。
https://qiita.com/saira/items/a1c565c4a2eace268a07
ということで、settings.pyのSTATIC_URLの下に以下の設定を追加。
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
設定追加後再デプロイをすると無事Djangoのデフォルトページに接続できるようになりました!
おしまい