Question

J'essaie de déployer mon application Django sur mon VPS.J'ai donc suivi plusieurs tutoriels et le seul problème que j'ai est que je n'arrive pas à faire apparaître mes fichiers statiques.Vous trouverez donc ci-dessous la structure de mes fichiers sur le VPS.

  • Environnement virtuel :/opt/mesapplications/
  • Projet Django :/opt/mesapplications/uniprogress/
  • Fichiers statiques :/opt/mesapps/uniprogress/static/

Configuration Nginx :/etc/nginx/sites-available/uniprogress

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"';
    }
}

et enfin dans mon django settings.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/'

J'ai aussi utilisé : python manage.py collectstatic mais mes fichiers statiques n'apparaissent toujours pas.

MISE À JOURLe tutoriel que j'ai utilisé se trouve sur Océan numérique.

J'ai vérifié que les fichiers existent sur le serveur.

Je peux également accéder à des fichiers statiques tels que : http://188.xxx.xxx.93/static/css/bootstrap.css.

MAIS Dans mon code source http://188.xxx.xxx.93:8001/, il lie les fichiers statiques à l'aide du port.

Cela signifie: <link href="/static/css/bootstrap.css" rel="stylesheet">

Il essaie donc de trouver bootstrap.css à l'adresse http://188.xxx.xxx.93:8001/static/bootstrap.css et le fichier n'existe pas (il faut supprimer la publication pour que cela fonctionne).

Était-ce utile?

La solution

Pour servir des fichiers statiques, faites-le au niveau nginx comme

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"';
}
}

Désormais, tous les fichiers statiques seront diffusés depuis votre nginx.

Autres conseils

Votre STATIC_ROOT collecte des fichiers statiques à l'adresse :

/opt/myapps/uniprogress/opt/myapps/uniprogress/static/

Cela ne correspond pas à la configuration de votre serveur, qui pointe vers :

opt/myapps/uniprogress/static/

STATIC_ROOT est juste un dossier qui contient tous vos fichiers statiques (images, CSS, tout) au même endroit pour le déploiement, alors définissez-le sur quelque chose comme « /collected_static/ » et corrigez la configuration du serveur.

Vérifiez ces choses

1 Si l'ancien statique est accessible par nginx, je veux dire l'autorisation du dossier .

2 Ou fais ceci

Remplacez ceci :

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

avec ça

STATIC_ROOT = ''

Et ajoutez ceci dans les paramètres

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

J'espère que cela fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top