Dogo-San
Dogo-San

Reputation: 375

media files aren't serving in django app on cpanel

I have a django app running on cpanel (I'm not sure if is a problem of my django app or cpanel server), when the debug mode is set up True. I can see all the media files, like profiles pictures or pdf files, etc. But when the debug mode is set up False, you can't see the media files on the app. This is my configuratios on the settings.py file.

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
    ]
STATIC_URL = '/static/'
STATIC_ROOT = '<app-directory>/public_html/static'

# Media files
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

# Crispy Form Theme - Bootstrap 3
CRISPY_TEMPLATE_PACK = 'bootstrap3'

# For Bootstrap 3, change error alert to 'danger'
from django.contrib import messages
MESSAGE_TAGS = {
    messages.ERROR: 'danger'
}

Upvotes: 3

Views: 6320

Answers (3)

Mad Javad
Mad Javad

Reputation: 534

I have this issue for 1 day but I found solution. You can install this two packages dj-static static3 with pip:

$ pip install dj-static static3

then change your wsgi.py file like below:

.
.
.
from dj_static import Cling
.
.
.
application = Cling(get_wsgi_application())

Upvotes: 0

Ali Alavizadeh
Ali Alavizadeh

Reputation: 143

I don't actually solve it yet but you can do as below to solve your issue:

1 - Setup your media and static root:

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

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

2 - Activate your virtual enviroment on cpanel then run this command:

python manage.py collectstatic

3 - After you did that 2 folder will create at root of your app on cpanel "static" and "media" folder copy both of them into "public_html" directory

4 - go to the setup python app in cpanel and find your app and restart it.

It will solve the issue for me but every time when i upload some picture i should go and just copy the media files into public_html

Upvotes: 0

Nazkter
Nazkter

Reputation: 1110

To deploy a production server, you need to set 3 things

  1. deactivate the DEBUG configuration:

DEBUG = False

This disable all extra function for development.

  1. define a static root directory in the settings file:

STATIC_ROOT = '/this/is/a/path/to/statics'

This, indicate where all the static files should be saved.

  1. run the command to collect all static files:

python manage.py collectstatic

This saves all statics files in the directory configured by STATIC_ROOT

The official documentation for deployment: https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/#static-root-and-static-url

Upvotes: 5

Related Questions