2017-07-26 1 views
0

frères humainsNginx, gunicorn, django, ubuntu - ne pas afficher les images

Je viens de mettre en place un serveur sur et déployé mon Digital Ocean application. Tout le reste fonctionne bien, y compris mon javascript et CSS. mais pour certaines raisons au-delà de moi, les images téléchargées par un utilisateur ne s'affichent pas

Je pense que j'ai eu une avance mais je ne sais toujours pas où aller.

apprécierions vraiment si vous pouviez me diriger vers la droite

Voici donc mon modèle d'image (upload_to)

class Image(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, 
         related_name='images_created') 
    title = models.CharField(max_length=2000) 
    slug = models.SlugField(max_length=200, 
         blank=True) 
    url = models.URLField() 
    image = models.ImageField(upload_to='images/%Y/%m/%d') 
    description = models.TextField(blank=True, null=True) 
    created = models.DateField(auto_now_add=True, 
              db_index=True) 
    users_like = models.ManyToManyField(settings.AUTH_USER_MODEL, 
    related_name='images_liked', blank=True) 

et voici mon nginx conf

server { 
    listen 80; 
    server_name 67.207.87.22; 

    location = /favicon.ico { access_log off; log_not_found off; } 

    location /static/ { 
     alias /home/kingiyk/stylplus/static/; 
    } 

    location /media/ { 
    alias /home/kingiyk/stylplus/media/; 
    } 




    location/{ 
    include proxy_params; 
    proxy_pass http://unix:/home/kingiyk/stylplus/stylplus.sock; 
} 
} 

Lorsque je télécharge une image, elle est enregistrée dans/home/kingiyk/stylplus/images/2017/07/26

stylplus/images est l'application d'image

Je pense que la partie '26/07/2017' est à la suite de mes upload_to étant « images /% Y /% m /% d (année/mois/jour).

Bien que le téléchargement est réussi, mais l'image ne s'affiche pas je n'ai aucun problème avec mes css et javascript.

Maintenant, je devine qu'il y a un conflit entre mon conf nginx et le chemin vers l'endroit où les images sont stockées. S'il vous plaît, donnez un coup de main. Bravo

+1

Vous dites que vos images sont téléchargées dans '/ home/kingiyk/stylplus/images /' mais votre nginx '/ media /' pointe vers '/ home/kingiyk/stylplus/media /'. –

+0

Vous devez servir les fichiers image avec nginx. Vous devez changer l'emplacement du téléchargement dans/home/kingiyk/stylplus/media/(ou statique). Ou ajoutez un nouveau chemin (images /) à la configuration de nginx. – Tico

+0

hey @Tico. J'ai ajouté mes messages au serveur { listen 80; nom_serveur 67.207.87.22; emplacement =/favicon.ico {access_log off; log_not_found off; } emplacement/statique/{ alias/home/kingiyk/stylplus/static /; Emplacement/media/{ \t alias/home/kingiyk/stylplus/media /; } lieu/{ \t comprennent proxy_params; proxy_pass http: // unix: /home/kingiyk/stylplus/stylplus.sock; } } upload_to - '/ home/kingiyk/stylplus/media /' mais ne peut toujours pas voir les images téléchargées. plus d'idées que vous pourriez partager –

Répondre

0

Cela fonctionne comme ceci: Le serveur Dev de Django fait des choses Très facile à développer. Vous avez juste à mettre sur settings.py un dossier et le serveur Django Dev sert les fichiers de ce dossier, qui est 'statique' par défaut. Collectez les fichiers get statiques à partir des mécanismes internes de Django et placez-les dans ce dossier statique (comme la page d'administration css). Vous n'avez pas besoin de cela sur le dev car le serveur Django regarde dans le dossier lib de Django alors que nginx ne le fait pas. Donc ... pas lié. Pour votre problème, je vous recommande vraiment de changer le dossier où vos images sont téléchargées dans le même dossier où votre CSS est («statique»). Vérifiez si cela fonctionne. Si Works vous pouvez aller et configurer un nouveau dossier sur Settings.py et nginx en prenant l'exemple statique. Regardez comment configurer vos fichiers 'média' sur Django sur ce lien: https://docs.djangoproject.com/en/1.11/howto/static-files/. 'media files' est l'expression que vous devriez rechercher dans le langage Django.

+0

Je pense que le problème provient de mon modèle {{ image.title }} lorsque je remplace "{{image.image}}" par {% static "rango.jpg"%}, une image s'affiche mais img src = "{{image.image}} doest n'affiche pas une image J'ai un modèle de classe nommé image avec un attribut upload_to qui télécharge mes fichiers dans/home/kingiyk/stylplus/static/et dans mes settings.py, j'ai STATIC_ROOT = '/ home/kingiyk/stylplus/static/' STATIC_URL ='/static/'. une idée où je me suis trompé? –