Forum Programmation.web Django et erreurs 500

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
0
13
nov.
2015

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  (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  (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 :

      tail /var/log/httpd/ermaion.com_access_log
      82.239.17.37 - - [14/Nov/2015:11:13:19 +0100] "GET /bundle/discover/ HTTP/1.1" 302 218
      82.239.17.37 - - [14/Nov/2015:11:13:19 +0100] "GET /accounts/login/ HTTP/1.1" 200 1782
      82.239.17.37 - - [14/Nov/2015:11:13:21 +0100] "GET / HTTP/1.1" 302 218
      82.239.17.37 - - [14/Nov/2015:11:13:23 +0100] "GET /bundle/collection/ HTTP/1.1" 302 -
      82.239.17.37 - - [14/Nov/2015:11:13:23 +0100] "GET /accounts/login/?next=/bundle/collection/ HTTP/1.1" 200 1819
      87.91.122.47 - - [14/Nov/2015:11:30:17 +0100] "POST /accounts/login/ HTTP/1.1" 200 1848
      87.91.122.47 - - [14/Nov/2015:11:30:26 +0100] "POST /accounts/login/ HTTP/1.1" 200 1848
      87.91.122.47 - - [14/Nov/2015:11:30:37 +0100] "POST /accounts/login/ HTTP/1.1" 500 1215
      87.91.122.47 - - [14/Nov/2015:11:30:38 +0100] "GET /favicon.ico HTTP/1.1" 301 -
      87.91.122.47 - - [14/Nov/2015:11:30:38 +0100] "GET /favicon.ico/ HTTP/1.1" 404 1253
      tail /var/log/httpd/static.ermaion.com_access_log 
      82.239.17.37 - - [14/Nov/2015:11:13:14 +0100] "GET /static/img/logo-ermaion.png HTTP/1.1" 200 678
      82.239.17.37 - - [14/Nov/2015:11:13:14 +0100] "GET /static/img/title-ribbon-left.png HTTP/1.1" 200 301
      82.239.17.37 - - [14/Nov/2015:11:13:14 +0100] "GET /static/img/title-ribbon-right.png HTTP/1.1" 200 274
      82.239.17.37 - - [14/Nov/2015:11:13:14 +0100] "GET /static/css/fonts/baskervaldx-bol-webfont.woff HTTP/1.1" 200 41237
      82.239.17.37 - - [14/Nov/2015:11:13:14 +0100] "GET /static/css/fonts/baskervaldx-reg-webfont.woff HTTP/1.1" 200 40157
      82.239.17.37 - - [14/Nov/2015:11:13:14 +0100] "GET /static/img/favicon.ico HTTP/1.1" 200 860
      82.239.17.37 - - [14/Nov/2015:11:13:17 +0100] "GET /static/css/zinnia.css HTTP/1.1" 200 853
      82.239.17.37 - - [14/Nov/2015:11:13:17 +0100] "GET /static/img/bundle_top_bg_blue.jpg HTTP/1.1" 200 21021
      82.239.17.37 - - [14/Nov/2015:11:13:17 +0100] "GET /static/img/title-ribbon-left-short-green.png HTTP/1.1" 200 183
      82.239.17.37 - - [14/Nov/2015:11:13:17 +0100] "GET /static/img/title-ribbon-right-green.png HTTP/1.1" 200 215
      • [^] # Re: et les logs ?

        Posté par  (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  (site web personnel) . Évalué à 1.

          Justement ces journaux là sont vides à parts quelques tentatives de piratages…

          • [^] # Re: et les logs ?

            Posté par  (site web personnel) . Évalué à 1.

            Voici un extrait du journal d’erreurs central (pas celui du vhost qui est vide) :

            # tail /var/log/httpd/error_log
            [Fri Nov 13 21:40:03.350363 2015] [lbmethod_heartbeat:notice] [pid 4281:tid 139963880032320] AH02282: No slotmem from mod_heartmonitor
            [Fri Nov 13 21:40:03.353230 2015] [mpm_event:notice] [pid 4281:tid 139963880032320] AH00489: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips mod_fcgid/2.3.9 mod_wsgi/3.4 Python/2.7.5 configured -- resuming normal operations
            [Fri Nov 13 21:40:03.353253 2015] [core:notice] [pid 4281:tid 139963880032320] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
            [Fri Nov 13 22:38:59.914631 2015] [mpm_event:notice] [pid 4281:tid 139963880032320] AH00492: caught SIGWINCH, shutting down gracefully
            [Fri Nov 13 22:39:01.252656 2015] [core:notice] [pid 5028:tid 140092438587456] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
            [Fri Nov 13 22:39:01.254113 2015] [suexec:notice] [pid 5028:tid 140092438587456] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
            [Fri Nov 13 22:39:01.281762 2015] [auth_digest:notice] [pid 5028:tid 140092438587456] AH01757: generating secret for digest authentication ...
            [Fri Nov 13 22:39:01.282718 2015] [lbmethod_heartbeat:notice] [pid 5028:tid 140092438587456] AH02282: No slotmem from mod_heartmonitor
            [Fri Nov 13 22:39:01.286781 2015] [mpm_event:notice] [pid 5028:tid 140092438587456] AH00489: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips mod_fcgid/2.3.9 mod_wsgi/3.4 Python/2.7.5 configured -- resuming normal operations
            [Fri Nov 13 22:39:01.286804 2015] [core:notice] [pid 5028:tid 140092438587456] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
  • # Django et erreurs 500

    Posté par  . É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  (site web personnel) . Évalué à 1. Dernière modification le 15 novembre 2015 à 15:11.

      Tu n'as rien dans /var/log/httpd/ermaion.com_error_log ?

      Non rien.

      Est-ce que le système n'essaierait pas d'envoyer des mails ?

      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  . É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  . É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).

  • # C’était SELINUX

    Posté par  (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.