Archivos estáticos de Django con NGINX y Unicorn.
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).
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.