Django + mod_wsgi + apache2: le serveur se bloque

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.