Bonjour,
Je rencontre quelques soucis avec un site basé sur Django ; deux erreurs pour être exact :
- Des erreurs 500 lorsqu’un utilisateur cherche à se connecter ou à créer un compte,
- Aucun courriel n’est réellement expédié.
Le contexte
Le site utilise Django 1.5, Apache 2.4 le tout sous Centos 7 avec selinux activé. J’ai évidement vérifié les contextes selinux et ils sont normalux pour ce genre de fichiers.
Les fichiers statiques sont servis à parts d’un sous-domaine.
Quelques précisions
Il est important de souligner que le site fonctionne parfaitement avec le serveur de développement intégré à Django, tant concernant les erreurs 500 que les courriels.
Voici les fichiers de configurations d’Apache :
<VirtualHost *:80>
ServerAdmin corlat@ermaion.com
DocumentRoot "/var/www/html/ermaion.com"
ServerName ermaion.com
ErrorLog /var/log/httpd/ermaion.com_error_log
TransferLog /var/log/httpd/ermaion.com_access_log
Header set Access-Control-Allow-Origin "*"
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip
ExpiresActive On
ExpiresDefault "modification plus 1 month"
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) /accounts/login/ [R=302]
RewriteRule /bundle/discover/ /accounts/login/ [R=302]
WSGIDaemonProcess ermaion.com python-path=/var/www/html/ermaion.com:/opt/ermaion/lib/python2.7/site-packages
WSGIProcessGroup ermaion.com
WSGIScriptAlias / /var/www/html/ermaion.com/musicbundle/wsgi.py
<Directory /var/www/html/ermaion.com/musicbundle>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/static.ermaion.com
ServerName static.ermaion.com
Header set Access-Control-Allow-Origin "*"
ErrorLog /var/log/httpd/static.ermaion.com_error_log
TransferLog /var/log/httpd/static.ermaion.com_access_log
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip
ExpiresActive On
ExpiresDefault "access plus 1 month"
<Directory /var/www/html/static.ermaion.com>
Options -Indexes
</Directory>
Merci d’avance pour votre aide.
# et les logs ?
Posté par Sébastien Maccagnoni (site web personnel) . Évalué à 2.
Tout dépannage de serveur commence en regardant les logs. Si tu veux de l'aide, il faut montrer les logs :)
[^] # Re: et les logs ?
Posté par Ermaion (site web personnel) . Évalué à 1.
Oui exact mais comme les logs d’erreurs sont vides je n’y avait pas pensé.
Voici les logs d’accès :
[^] # Re: et les logs ?
Posté par François GUÉRIN (Mastodon) . Évalué à 2. Dernière modification le 14 novembre 2015 à 14:31.
… le fichier errors.log serait plus parlant ! SI tu as une config commune apache, c'est dans /var/log/apache2/errors.log. Si tu as une config par vhost, bah je sais pas.
[^] # Re: et les logs ?
Posté par Ermaion (site web personnel) . Évalué à 1.
Justement ces journaux là sont vides à parts quelques tentatives de piratages…
[^] # Re: et les logs ?
Posté par Ermaion (site web personnel) . Évalué à 1.
Voici un extrait du journal d’erreurs central (pas celui du vhost qui est vide) :
# Django et erreurs 500
Posté par laaapin . Évalué à 2.
Bonjour,
Tu n'as rien dans /var/log/httpd/ermaion.com_error_log ?
Et dans les logs de l'application ?
Est-ce que le système n'essaierait pas d'envoyer des mails ?
[^] # Re: Django et erreurs 500
Posté par Ermaion (site web personnel) . Évalué à 1. Dernière modification le 15 novembre 2015 à 15:11.
Non rien.
Tout à fait à chaque erreur 500 un email est sensé être envoyé mais ils ne partent jamais alors que postfix fonctionne parfaitement et que le serveur intégré lui parvient à envoyer les emails (mais pas d’erreurs 500 alors).
# Django et erreurs 500
Posté par laaapin . Évalué à 2.
Je pencherais pour des adresses mails non conformes.
Regarde les logs de postfix.
L'envoi de mail peut être rendu non bloquant : l'utilisation de l'argument fail_silently dans la fonction send mail.
En tous cas, ça doit être soit dans le log apache static.ermaion.com_error_log, soit dans le log d'erreur de l'appli si tu en as défini un.
# Sentry?
Posté par Nab . Évalué à 2.
Salut,
Pour avoir de meilleurs logs, j'utilise Sentry, ça permet d'avoir une stack détaillée de tes erreurs (en plus de l'avoir l'erreur en temps réel).
[^] # Re: Sentry?
Posté par Ermaion (site web personnel) . Évalué à 1.
Merci pour cette aide, ça à l’air simple à mettre en place.
# C’était SELINUX
Posté par Ermaion (site web personnel) . Évalué à 1.
Merci à tous pour votre aide, SELINUX était le coupable… j’ai envie de dire encore une fois.
Il ne me reste plus qu’a trouver quels contextes changer.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.