Pregunta

Estoy tratando de implementar mi aplicación Django a mi VPS. Así que seguí varios tutoriales y el único problema que estoy teniendo es que no puedo conseguir que se presenten mis archivos estáticos. A continuación, puede encontrar la estructura de mis archivos en el VPS.

  • Virtual Env: / OPT / MYAPPS /
  • Proyecto Django: / OPT / MYAPPS / UNIPROGRESS /
  • Archivos estáticos: / Opt / MyApps / Uniprogress / estática /

nginx config: / etc / nginx / sites-disponibles / unifrogress

server {
    server_name 188.xxx.xxx.93;

    access_log off;

    location /static/ {
        alias /opt/myapps/uniprogress/static/;
    }

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
    }
}

y finalmente en mi configuración de django.py:

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

# Template Dirs

TEMPLATE_DIRS = (
    os.path.join(SETTINGS_PATH, 'templates'),
)

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/

STATIC_ROOT = '/opt/myapps/uniprogress/static/'
STATIC_URL = '/static/'

También utilizado: python manage.py collectstatic pero aún así mis archivos estáticos no aparecerán.

actualización El tutorial que utilicé se puede encontrar en Océano digital .

Revisé la doble que los archivos existen en el servidor.

También puedo acceder a archivos estáticos como: http://188.xxx. xxx.93 / estática / css / bootstrap.css .

pero en mi código fuente http://188.xxx.xxx .93: 8001 / , vincula archivos estáticos usando el puerto.

Eso significa: <link href="/static/css/bootstrap.css" rel="stylesheet">

Entonces, intenta encontrar bootstrap.csss en http://188.xxx.xxx.93 : 8001 /static/bootstrap.css y el archivo no existen (tiene que eliminar el poste para que funcione).

¿Fue útil?

Solución

para servir archivos estáticos hacerlo en NGGINX LEVEL como

server {
server_name 188.xxx.xxx.93;

access_log off;

location ~ ^/(static)/  {
  #  root:- you static files path
  #  alias /opt/myapps/uniprogress/static/;
     root /opt/myapps/uniprogress/static/;
}

location / {
    proxy_pass http://127.0.0.1:8001;
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_set_header X-Real-IP $remote_addr;
    add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
}

Ahora todos los archivos estáticos servirán desde su Nginx.

Otros consejos

Su STATIC_ROOT está recopilando archivos estáticos en:

/ OPT / MYAPPS / UNIPROGRESS / OPT / MYAPPS / UNIPROGRESS / estática /

que no coincide con la configuración de su servidor, lo que apunta a:

Opt / MyApps / Uniprogress / estática /

static_root es solo una carpeta que sostiene todos sus archivos estáticos (imágenes, CSS, TODO) en un solo lugar para la implementación, así que configúrelo en algo así como '/ Collected_Static /' y Fije la configuración del servidor.

Compruebe esto

1 Si el más antiguo está disponible por NGINEX, me refiero al permiso de la carpeta.

2 o haz esto

Reemplazar esto:

STATIC_ROOT = '/opt/myapps/uniprogress/static/'

con este

STATIC_ROOT = ''

y agregue esto en la configuración

STATICFILES_DIRS = (
     '/opt/myapps/uniprogress/static/',
)

Espero que esto funcione.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top