Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot upload media files on CPanel (using django)

I am not able to upload my media files on Cpanel. Initially I was able to upload files but now it shows Error 404 URL Not Found.

There is nothing wrong with my code or my url as it works fine on localhost.

I have checked for permissions of directory in my CPanel File Manager (its 0755).

I have specified + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) in my urls.py file.

My settings.py is:

MEDIA_ROOT = '/my/path/public_html/media'
MEDIA_URL = '/media/'

I am using Django=2.1 and CPanel Shared Hosting

I know its recommended to have a web server to store and serve media files in Production Environment but it would be helpful if I get a solution of this error.

like image 463
Error Avatar asked Aug 09 '20 16:08

Error


People also ask

How do I serve media files in Django?

Unfortunately, the Django development server doesn't serve media files by default. Fortunately, there's a very simple workaround: You can add the media root as a static path to the ROOT_URLCONF in your project-level URLs.

How do I add media to Django settings?

Configuring Media Files in DjangoOpen settings.py file of your project and add the following configuration. MEDIA_URL is the URL that will serve the media files. During development, it doesn't matter much as long it doesn't conflict with any view of the apps.


1 Answers

add this code to passenger_wsgi.py file and change project_name at line 4:

import os
import sys
sys.path.append(os.getcwd())
os.environ['DJANGO_SETTINGS_MODULE'] = 'project_name.settings'
import django.core.handlers.wsgi
from django.core.wsgi import get_wsgi_application
SCRIPT_NAME = os.getcwd()
class PassengerPathInfoFix(object):
    def __init__(self, app):
        self.app = app
    def __call__(self, environ, start_response):
        from urllib.parse import unquote
        environ['SCRIPT_NAME'] = SCRIPT_NAME
        request_uri = unquote(environ['REQUEST_URI'])
        script_name = unquote(environ.get('SCRIPT_NAME', ''))
        offset = request_uri.startswith(script_name) and len(environ['SCRIPT_NAME']) or 0
        environ['PATH_INFO'] = request_uri[offset:].split('?', 1)[0]
        return self.app(environ, start_response)
application = get_wsgi_application()
application = PassengerPathInfoFix(application)

for more: go to here

like image 155
turalmehrali Avatar answered Sep 25 '22 14:09

turalmehrali