Je déploie un projet django sur apache2 en utilisant mod_wsgi, mais le problème est que le serveur ne sert pas de pages et il se bloque pendant 10 minutes avant de donner une erreur:
End of script output before headers
Ceci est mon site-available/000-default.conf
:
ServerAdmin webmaster@localhost DocumentRoot /home/artfact/arTfact_webSite/ Alias /static /home/artfact/arTfact_webSite/static Order allow,deny Allow from all Require all granted Order allow,deny Allow from all Require all granted WSGIDaemonProcess artfact_site processes=5 threads=25 python-path=/home/artfact/anaconda/lib/python2.7/site-packages/:/home/artfact/arTfact_webSite WSGIProcessGroup artfact_site WSGIScriptAlias / /home/artfact/arTfact_webSite/arTfact_webSite/wsgi.py
settings.py
""" Django settings for arTfact_webSite project. Generated by 'django-admin startproject' using Django 1.8.5. For more information on this file, see https://docs.djangoproject.com/en/1.8/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/1.8/ref/settings/ """ # Build paths inside the project like this: os.path.join(BASE_DIR, ...) import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = xxxx # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = [] # Application definition INSTALLED_APPS = ( 'django.consortingb.admin', 'django.consortingb.auth', 'django.consortingb.contenttypes', 'django.consortingb.sessions', 'django.consortingb.messages', 'django.consortingb.staticfiles', 'website', 'blog', ) MIDDLEWARE_CLASSES = ( 'django.consortingb.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.consortingb.auth.middleware.AuthenticationMiddleware', 'django.consortingb.auth.middleware.SessionAuthenticationMiddleware', 'django.consortingb.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', ) ROOT_URLCONF = 'arTfact_webSite.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.consortingb.auth.context_processors.auth', 'django.consortingb.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'arTfact_webSite.wsgi.application' # Database # https://docs.djangoproject.com/en/1.8/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } # Internationalization # https://docs.djangoproject.com/en/1.8/topics/i18n/ LANGUAGE_CODE = 'en-us' TIME_ZONE = 'Europe/Paris' USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.8/howto/static-files/ STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR,'media')
wsgi.py
""" WSGI config for arTfact_webSite project. It exposes the WSGI callable as a module-level variable named ``application``. For more information on this file, see https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/ """ from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "arTfact_webSite.settings") application = get_wsgi_application()
Structure du projet
arTfact_webSite/ ├── arTfact_webSite │ ├── __init__.py │ ├── __init__.pyc │ ├── settings.py │ ├── settings.pyc │ ├── urls.py │ ├── urls.pyc │ ├── wsgi.py │ └── wsgi.pyc ├── blog ├── static ├── media └── website ├── admin.py ├── admin.pyc ├── forms.py ├── forms.pyc ├── general_parsingr.py ├── general_parsingr.pyc ├── __init__.py ├── __init__.pyc ├── migrations │ ├── __init__.py │ └── __init__.pyc ├── models.py ├── models.pyc ├── send_mail.py ├── send_mail.pyc ├── static │ └── website ├── templates │ └── website ├── tests.py ├── tests.pyc ├── urls.py ├── urls.pyc ├── views.py └── views.pyc
Dans le arTfact_webSite / urls.py
urlpatterns = [ url(r'^/*', include('website.urls')), ]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Dans le site web / urls.py
urlpatterns = [ url(r'^$', views.index, name='index'), ]
Est-ce que je fais quelque chose de mal ici?
Vous devez définir un ServerName ou un ServerAlias dans votre bloc VirtualHost:
ServerName www.example.com
Je suppose que vos configurations Apache ci-dessus sont dans un bloc VirtualHost comme ceci:
...
Il semble que vous ayez un “a” dans votre fichier wsgi.py entre les lignes
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "arTfact_webSite.settings") a application = get_wsgi_application()
pas sûr si cela est dans votre fichier réel aussi bien.
Essayez d’utiliser la commande:
apachectl configtest
Cela devrait vous aider à isoler ce qui est cassé dans votre configuration apache. Voir ce lien pour plus d’informations: https://httpd.apache.org/docs/2.4/programs/apachectl.html
S’il indique “Syntaxe OK”, vous savez qu’il s’agit d’un problème de configuration plutôt que d’un problème de syntaxe de configuration.
Sinon, publier vos journaux apache2 serait utile.