Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Django] Internal error (path) (error 500)

    1 septembre 2014 à 13:33:19

    Bonjour, j'ai un probleme quand j'essai de me connecter sur mon site fait en django, on me met une Internal server error. je vous donne les logs.

    self.load_middleware()
    File "/usr/local/lib/python2.7/dist-packages/django/cor                                                                                        e/handlers/base.py", line 45, in load_middleware
    for middleware_path in settings.MIDDLEWARE_CLASSES:
    File "/usr/local/lib/python2.7/dist-packages/django/con                                                                                        f/__init__.py", line 53, in __getattr__
    self._setup(name)
    File "/usr/local/lib/python2.7/dist-packages/django/con                                                                                        f/__init__.py", line 48, in _setup
    self._wrapped = Settings(settings_module)
    File "/usr/local/lib/python2.7/dist-packages/django/con                                                                                        f/__init__.py", line 134, in __init__
    raise ImportError("Could not import settings '%s' (Is                                                                                         it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
    ImportError: Could not import settings '<projet>.settings'                                                                                         (Is it on sys.path?): No module named <projet>.settings
    

    j'ai chercher sur internet mais je n'ai trouvé que des forums en Anglais et donc je n'ai pas tout compris, j'ai essayer quelques choses et mon wsgi.py ressemble a ça maintenant

    """
    WSGI config for <projet> project.
    
    This module contains the WSGI application used by Django's development server
    and any production WSGI deployments. It should expose a module-level variable
    named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
    this application via the ``WSGI_APPLICATION`` setting.
    
    Usually you will have the standard Django WSGI application here, but it also
    might make sense to replace the whole Django WSGI application with a custom one
    that later delegates to the Django one. For example, you could introduce WSGI
    middleware here, or combine a Django application with an application of another
    framework.
    
    """
    import os,sys
    
    # We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks
    # if running multiple sites in the same mod_wsgi process. To fix this, use
    # mod_wsgi daemon mode with each site in its own daemon process, or use
    # os.environ["DJANGO_SETTINGS_MODULE"] = "<projet>.settings"
    sys.path.append('/lien/vers/projet')
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<projet>.settings")
    
    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()


    Voila si vous avez besoin d'autre chose je peux vous le montrer, merci de votre aide en attendant je retourne dans mes recherches.

    coordialement

    • Partager sur Facebook
    • Partager sur Twitter
      2 septembre 2014 à 12:04:08

      Salut,

      pour lancer ton site, tu es encore en Dev ? ( tu utilises manage.py runserver ? )

      Quel est le contenu de ton settings.py ?

      quel est la structure de ton projet actuellement ?

      Question bête , tu n'as pas laissé "<projet>" tel quel dans ta config ? tu l'as bien remplacé par le bon nom de ton projet ?

      Ch.

      -
      Edité par stopher 2 septembre 2014 à 12:05:48

      • Partager sur Facebook
      • Partager sur Twitter
        2 septembre 2014 à 14:11:35

        Bonjour, alors je le fait tourner avec apache2 ce n'est pas le mode de développement. Donc je n'utilise pas manage.py

        Ma structure est basique, c'est à dire que j'ai mon dossier projet dedans j'ai mes dossiers applications + "coeur du projet" et aussi les dossiers média et templates, mon je.vous envoi mon settings.py au plus vite

        Le mod de développement fonctionné.

        A la place de <projet> c'est le nom de mon projet

        Merci de votre réponse, cordialement 

        -
        Edité par Greatskate 2 septembre 2014 à 14:12:18

        • Partager sur Facebook
        • Partager sur Twitter
          2 septembre 2014 à 15:03:52

          Ok,

          quelle est ta version de Django, Apache ?

          Et la conf de ton vhost donne quoi ?

          tu utilises un virtualenv ?

          Ch.

          • Partager sur Facebook
          • Partager sur Twitter
            2 septembre 2014 à 16:11:29

            je m'y connais pas du tout en apache2 je vois pas vraiment la difference entre vhost et virtualenv .

            apache2 : 2.4.6

            django : 1.5.5

            settings.py:

            # Django settings for EntWick project.
            
            AUTH_PROFILE_MODULE = 'auth.UserProfil'
            DEBUG = False
            TEMPLATE_DEBUG = DEBUG
            APPEND_SLASH = False
            
            ADMINS = (
                # ('Your  Name', 'your_email@example.com'),
            )
            
            MANAGERS = ADMINS
            
            DATABASES = {
                'default': {
                    'ENGINE': 'django.db.backends.mysql', 
                    'NAME': 'database2.sql',                   
                    'USER': '',
                    'PASSWORD': '',
                    'HOST': '',                     
                    'PORT': '',                     
                }
            }
            
            
            ALLOWED_HOSTS = ['www.entwick.fr','www.entwick.no-ip.biz:81']
            
            
            TIME_ZONE = 'Europe/Paris'
            
            # Language code for this installation. All choices can be found here:
            # http://www.i18nguy.com/unicode/language-identifiers.html
            LANGUAGE_CODE = 'fr-FR'
            
            SITE_ID = 1
            
            # If you set this to False, Django will make some optimizations so as not
            # to load the internationalization machinery.
            USE_I18N = True
            
            # If you set this to False, Django will not format dates, numbers and
            # calendars according to the current locale.
            USE_L10N = True
            
            # If you set this to False, Django will not use timezone-aware datetimes.
            USE_TZ = True
            
            
            MEDIA_ROOT = '/chemin/vers/EntWick/media/'
            
            
            MEDIA_URL = '/chemin/vers/EntWick/media/'
            
            
            STATIC_ROOT = ''
            
            
            STATIC_URL = '/static/'
            
            # Additional locations of static files
            STATICFILES_DIRS = (
            
                '/chemin/vers/EntWick/static',
            )
            
            
            STATICFILES_FINDERS = (
                'django.contrib.staticfiles.finders.FileSystemFinder',
                'django.contrib.staticfiles.finders.AppDirectoriesFinder',
            #    'django.contrib.staticfiles.finders.DefaultStorageFinder',
            )
            
            # Make this unique, and don't share it with anybody.
            SECRET_KEY = '88gaxc-)ag^i*two8a$du)-y@8h!^hl+gw0iippsv9wajvnb*)'
            
            # List of callables that know how to import templates from various sources.
            TEMPLATE_LOADERS = (
                'django.template.loaders.filesystem.Loader',
                'django.template.loaders.app_directories.Loader',
            #     'django.template.loaders.eggs.Loader',
            )
            
            MIDDLEWARE_CLASSES = (
                'django.middleware.common.CommonMiddleware',
                'django.contrib.sessions.middleware.SessionMiddleware',
                'django.middleware.csrf.CsrfViewMiddleware',
                'django.contrib.auth.middleware.AuthenticationMiddleware',
                'django.contrib.messages.middleware.MessageMiddleware',
            
            )
            
            ROOT_URLCONF = 'EntWick.urls'
            
            
            WSGI_APPLICATION = 'EntWick.wsgi.application'
            
            TEMPLATE_DIRS = (
            	"templates/"
            
            )
            
            INSTALLED_APPS = (
                'django.contrib.auth',
                'django.contrib.contenttypes',
                'django.contrib.sessions',
                'django.contrib.sites',
                'django.contrib.messages',
                'django.contrib.staticfiles',
                'jeu',
                'combat',
                'evolution',
                'map',
                'armurerie',
                'artisanat',
                'hoteldevente',
                'multijoueur',
                # Uncomment the next line to enable the admin:
                'django.contrib.admin',
                # Uncomment the next line to enable admin documentation:
                # 'django.contrib.admindocs',
            )
            
            SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
            
            
            LOGGING = {
                'version': 1,
                'disable_existing_loggers': False,
                'filters': {
                    'require_debug_false': {
                        '()': 'django.utils.log.RequireDebugFalse'
                    }
                },
                'handlers': {
                    'mail_admins': {
                        'level': 'ERROR',
                        'filters': ['require_debug_false'],
                        'class': 'django.utils.log.AdminEmailHandler'
                    }
                },
                'loggers': {
                    'django.request': {
                        'handlers': ['mail_admins'],
                        'level': 'ERROR',
                        'propagate': True,
                    },
                }
            }

            vhost : entwick.conf

            	WSGIPythonPath /home/jedinod/EntWick #je l'ai mis la car sinon il me met une ereur avec <VirtualHost>
            <VirtualHost *:81>
            	ServerAdmin gautier.debrabander@gmail.com
            	ServerName entwick.fr
            	ServerAlias entwick.fr,entwick.no-ip.biz
            	DocumentRoot /chemin/vers/EntWick
            	<Directory />
            		Options FollowSymLinks
            		AllowOverride None
            	</Directory>
            	<Directory /chemin/vers/EntWick>
            		Options Indexes FollowSymLinks MultiViews
            		AllowOverride None
            		Order allow,deny
            		allow from all
            	</Directory>
            	WSGIScriptAlias / /chemin/vers/EntWick/EntWick/wsgi.py
            	<Directory /chemin/vers/EntWick/EntWick>
            	<Files wsgi.py>
            	Order deny,allow
            	Allow from all
            	</Files>
            	</Directory>
            	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
            	<Directory "/usr/lib/cgi-bin">
            		AllowOverride None
            		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            		Order allow,deny
            		Allow from all
            	</Directory>
            
            	ErrorLog /var/log/apache2/error.entwick.log
            
            	# Possible values include: debug, info, notice, warn, error, crit,
            	# alert, emerg.
            	LogLevel warn
            
            	CustomLog /var/log/apache2/access.log combined
            
                Alias /doc/ "/usr/share/doc/"
                <Directory "/usr/share/doc/">
                    Options Indexes MultiViews FollowSymLinks
                    AllowOverride None
                    Order deny,allow
                    Deny from all
                </Directory>
            
            </VirtualHost>


            cordialement

            -
            Edité par Greatskate 3 septembre 2014 à 11:54:46

            • Partager sur Facebook
            • Partager sur Twitter
              3 septembre 2014 à 9:49:38

              Virtualenv, c'est uniquement au niveau de ton dev Python, celà te permet de "cloisonner" tes projets dans des environnement python virtuels , et d'installer uniquement les packages necessaires aux versions souhaités pour faire fonctionner ton projet.

              Ainsi si un projet A avec une dépendance à la version 1.0 ne supporte pas la nouvelle version de cette dépendance,

              Lorsque tu aura un projet B qui utilise cette même dépendance mais cette fois à la version 2, le fait d'utiliser des environnements virtuels va permettre à tes deux projets de fonctionner, sans se marcher dessus ( sans utiliser la lib de l'autre  ).

              Le vhost ( virtual host ) permet de créer des conf différentes pour chaque site géré et hébergé par le même serveur Apache . 

              Pour en revenir à ton problème, il ne te manque pas les lignes

              WSGIPythonPath /chemin/vers/EntWick
              <Directory /chemin/vers/EntWick/EntWick> <Files wsgi.py>
              Order deny,allow

              <tt class="docutils literal">Allow from all</tt> </Files> </Directory>
              • Partager sur Facebook
              • Partager sur Twitter
                3 septembre 2014 à 11:18:15

                Donc ce code la on doit le mettre dans le vhost et pas dans le httpd.conf?

                Merci de ton aide en tout cas je vai essayer d'intégré se code a mon vhost

                • Partager sur Facebook
                • Partager sur Twitter
                  3 septembre 2014 à 11:37:27

                  oui ,

                  pour apache, tu as httpd.conf, pour la configuration générale et partagées entres tout tes vhost ,

                  puis dans chaque vhost ( 1 vhost = 1 site ) tu spécifies sa propre conf

                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 septembre 2014 à 11:47:53

                    d'qccord je savais pas merci ! Maintenant j'ai une nouvelle erreur ...j'ai commencé mes recherches mais pas trouvé de solution pour le moment
                     mod_wsgi (pid=31368): Exception occurred processing WSGI script '/vers/chemin/EntWick/EntWick/wsgi.py'.
                    
                     ImproperlyConfigured: Error importing middleware django.contrib.auth.middleware: "cannot import name utils"

                     je vais également mettre a jour mes fichiers plus haut

                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 septembre 2014 à 12:24:25

                      Tu as bien installé mod_wsgi sur ton serveur ?

                      sudo apt-get install libapache2-mod-wsgi


                      Ch.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        3 septembre 2014 à 12:35:15

                        j'ai trouvé pourquoi enfn en tout cas maintenant j'ai une autre erreur, en gros j'ai déplacé WSGIScriptAlias / /chemin/vers/EntWick/EntWick/wsgi.py en haut du fichier
                        • Partager sur Facebook
                        • Partager sur Twitter
                          3 septembre 2014 à 12:45:44

                          Et la nouvelle erreur ? c'est quoi ?

                          Ch.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            3 septembre 2014 à 12:50:44

                            Des soucis d'importation entre application -- c'est a ce moment la que tu regrettes d'avoir fait trop d'applications
                            • Partager sur Facebook
                            • Partager sur Twitter
                              3 septembre 2014 à 12:58:00

                              Ce qui est bizare c'est qu'il n'y a pas d'erreur avec la version de devellopement
                              • Partager sur Facebook
                              • Partager sur Twitter
                                3 septembre 2014 à 13:09:08

                                Greatskate a écrit:

                                Ce qui est bizare c'est qu'il n'y a pas d'erreur avec la version de devellopement


                                C'est pour ça que je suis persuadé que c'est un probleme de conf niveau apahce/wsgi et non de ton app .

                                Perso j'utilise Gunicorn que je trouve plus simple à mettre en place .

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  3 septembre 2014 à 13:10:32

                                  Et je peux utiliser Gunicorn et pache2 pour un autre site basique html ?

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    3 septembre 2014 à 14:02:10

                                    Ginicorn n'est là que pour le coté wsgi, pour tout ce qui est statique (html, js png .... ) ça ne change rien , c'est apache qui gère cette partie.

                                    Aprés comme je te l'ai dit, tout se configure dans les Vhost

                                    Donc tu peux avoir un site utilisant Gunicorn, l'autre uwsgi, et un autre en PHP et pour finir un site purement statique .

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      3 septembre 2014 à 14:15:29

                                      Et la en l'occurence je dois aussi utiliser supervisor?
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        3 septembre 2014 à 14:30:11

                                        je vais quand meme essayer avec wsgi

                                        -
                                        Edité par Greatskate 3 septembre 2014 à 14:41:10

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          3 septembre 2014 à 14:45:58

                                          Greatskate a écrit:

                                          Et la en l'occurence je dois aussi utiliser supervisor?


                                          Non, pas avec le mod_wsgi d'apache , tu peux utiliser supervisor, si tu gères toi même les process uWSGI, c'est un autre mode de fonctionnement. Dans ce cas, apache fonctionne en mode proxy pour les requêtes, et les transmets aux process uWSGI, et pour les requêtes de fichiers statiques, il les traites lui-même.

                                          Pour ce mode de fonctionnement, je préfère utiliser Nginx à laplace d'apache, et Gunicorn à la place de uWSGI.

                                          Mais ça ne reste qu'une histoire de préférence perso.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            3 septembre 2014 à 14:47:22

                                            	WSGIPythonPath /chemin/vers/EntWick
                                            	WSGIScriptAlias / /chemin/vers/EntWick/EntWick/wsgi.py
                                            	<Directory /chemin/vers/EntWick/EntWick>
                                            	<Files wsgi.py>
                                            	Order deny,allow
                                            	Allow from all
                                            	</Files>
                                            	</Directory>
                                            <VirtualHost *:81>
                                            	ServerAdmin gautier.debrabander@gmail.com
                                            	ServerName entwick.fr
                                            	ServerAlias entwick.fr,entwick.no-ip.biz
                                            	DocumentRoot /chemin/vers/EntWick
                                            
                                            	<Directory />
                                            		Options FollowSymLinks
                                            		AllowOverride None
                                            	</Directory>
                                            	<Directory /chemin/vers/EntWick>
                                            		Options Indexes FollowSymLinks MultiViews
                                            		AllowOverride None
                                            		Order allow,deny
                                            		allow from all
                                            	</Directory>
                                            	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
                                            	<Directory "/usr/lib/cgi-bin">
                                            		AllowOverride None
                                            		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                                            		Order allow,deny
                                            		Allow from all
                                            	</Directory>
                                            
                                            	ErrorLog /var/log/apache2/error.entwick.log
                                            
                                            	# Possible values include: debug, info, notice, warn, error, crit,
                                            	# alert, emerg.
                                            	LogLevel warn
                                            
                                            	CustomLog /var/log/apache2/access.log combined
                                            
                                                Alias /doc/ "/usr/share/doc/"
                                                <Directory "/usr/share/doc/">
                                                    Options Indexes MultiViews FollowSymLinks
                                                    AllowOverride None
                                                    Order deny,allow
                                                    Deny from all
                                                </Directory>
                                            
                                            </VirtualHost>
                                            avec mon entwick.conf comme cela, je ne peux plus accéder a mon site statique et ça ne marche pas
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              3 septembre 2014 à 14:48:46

                                              J'ai vue ton cours sur le deploiement django sur ton site, je pense faire comme toi parceque j'en ai marre d'apache et surtout je comprend rien du tout

                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              [Django] Internal error (path) (error 500)

                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                              • Editeur
                                              • Markdown