DEBUG=False не показывает статические и медиафайлы в проекте Django на Cpanel
Я просмотрел множество статей и видео на эту тему, но либо ничего не понял, либо решения оказались недостаточными. Буду очень рад, если вы сможете помочь. Я разработал проект Django и развернул его на cPanel. Мои статические и медиафайлы не работают, когда DEBUG = False. Что я должен сделать, чтобы заставить его работать правильно на cPanel? Я не уверен, используется ли Whitenoise на этапе развертывания. Как я могу запустить свой проект Django на cPanel подходящим и полностью функциональным образом? Вот мои текущие коды:
Settings.py:
DEBUG = True
ALLOWED_HOSTS = ['*']
STATIC_URL = '/static/'
STATIC_ROOT = '/home/ayvacioglu/ayvacioglu_v2/static/'
# STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
MEDIA_URL = '/media/'
MEDIA_ROOT = '/home/ayvacioglu/ayvacioglu_v2/media/'
Urls.py:
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('pages.urls')),
path('', include('portfolio.urls')),
path('', include('services.urls')),
path('', include('blog.urls')),
] + static(settings.MEDIA_URL, document_root= settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Если вам нужна любая другая информация, я могу предоставить ее. Большое спасибо
Вид статических файлов django предназначен только для разработки. Он не предназначен для развертывания на производстве (обычно там, где вы устанавливаете debug=False)
Вы должны обслуживать свои статические файлы с помощью веб-сервера, например apache
Посмотрите документацию здесь -> https://docs.djangoproject.com/en/5.0/howto/static-files/deployment/
Вы также можете использовать белый шум для обслуживания файлов, например, так
Установите whitenoise
pip install WhiteNoise==2.0.6
Теперь измените файл wsgi.py следующим образом
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
Обратите внимание, что это не рекомендуется, и вы должны обслуживать статические файлы через apache/gunicorn.
Когда для проекта Django установлено значение DEBUG = False, медиа- и статические файлы не будут загружаться. Для этого необходимо использовать серверы типа nginix и apache.
Надеюсь, следующая страница поможет вам. Github
Не знаю, безопасно ли это, но я добавил эти коды в свой rootapp > urls.py, и все заработало как надо. Я также использовал whitenoise. Может быть, это может быть полезно для кого-нибудь тоже.
from django.contrib import admin
from django.urls import path, include, re_path
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns # new
from django.conf import settings
from django.views.static import serve
urlpatterns = [
#Other url patterns
re_path(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),
re_path(r'^static/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT}), ]