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.
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
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
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><Fileswsgi.py> Order deny,allow <tt class="docutils literal">Allowfromall</tt>
</Files></Directory>
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
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.
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
[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.
avec mon entwick.conf comme cela, je ne peux plus accéder a mon site statique et ça ne marche pas