That log output doesn’t even show mod_wsgi attempting to load the WSGI script file. So if that corresponds to the time of the request, then the error is happening before mod_wsgi gets a chance to do anything.
Now you said you tried a WSGI hello world. Was that with a separate VirtualHost configuration, or did you simply swap the contents of the Django WSGI script file with a hello world? If the issue is with the Apache configuration, then swapping the Django WSGI script file with a WSGI hello world should fail as well. Graham > On 28 Nov 2015, at 10:23 PM, Arjan van Eersel <balkantechnolog...@gmail.com> > wrote: > > Now I do get some response: > [Sat Nov 28 13:19:21 2015] [info] mod_wsgi (pid=21273): Shutdown requested > 'aldeimbg.org <http://aldeimbg.org/>'. > [Sat Nov 28 13:19:21 2015] [info] mod_wsgi (pid=21273): Stopping process > 'aldeimbg.org <http://aldeimbg.org/>'. > [Sat Nov 28 13:19:21 2015] [info] mod_wsgi (pid=21273): Destroying > interpreters. > [Sat Nov 28 13:19:21 2015] [info] mod_wsgi (pid=21273): Cleanup interpreter > ''. > [Sat Nov 28 13:19:21 2015] [info] mod_wsgi (pid=21273): Terminating Python. > [Sat Nov 28 13:19:21 2015] [info] mod_wsgi (pid=21273): Python has shutdown. > [Sat Nov 28 11:19:24 2015] [info] mod_wsgi (pid=700): Attach interpreter ''. > [Sat Nov 28 11:19:24 2015] [info] mod_wsgi (pid=700): Adding > '/home/aldeimbg/env/lib/python2.7/site-packages' to path. > [Sat Nov 28 11:21:23 2015] [debug] mod_deflate.c(700): [client 195.230.7.52] > Zlib: Compressed 538 to 325 : URL / > [Sat Nov 28 11:21:23 2015] [debug] mod_deflate.c(700): [client 195.230.7.52] > Zlib: Compressed 538 to 325 : URL /favicon.ico, referer: > http://www.aldeimbg.org/ <http://www.aldeimbg.org/> > > On Sat, Nov 28, 2015 at 6:17 AM, Graham Dumpleton <graham.dumple...@gmail.com > <mailto:graham.dumple...@gmail.com>> wrote: > Ensure LogLevel in Apache configuration, at global as well as virtual host > scope, is ‘info’ and not ‘warn’. > > Then capture any extra messages from mod_wsgi around time of request. If > mod_wsgi isn’t logging anything then it isn’t even getting to mod_wsgi. > > Graham > >> On 27 Nov 2015, at 4:10 PM, Arjan van Eersel <balkantechnolog...@gmail.com >> <mailto:balkantechnolog...@gmail.com>> wrote: >> >> Nothing seems to happen, no output appears in the apache logs, but I might >> be applying the middleware in a wrong way. >> Here is my wsgi.py file: >> >> """ >> WSGI config for BalkanCMS 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.7/howto/deployment/wsgi/ >> <https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/> >> """ >> >> import os >> import sys >> >> sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), >> "../../"))) >> sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), >> "../"))) >> os.environ.setdefault("DJANGO_SETTINGS_MODULE", "BalkanCMS.settings") >> >> from django.core.wsgi import get_wsgi_application >> application = get_wsgi_application() >> >> # Logging WSGI middleware. >> >> import pprint >> >> class LoggingMiddleware: >> def __init__(self, application): >> self.__application = application >> >> def __call__(self, environ, start_response): >> errors = environ['wsgi.errors'] >> pprint.pprint(('REQUEST', environ), stream=errors) >> >> def _start_response(status, headers, *args): >> pprint.pprint(('RESPONSE', status, headers), stream=errors) >> return start_response(status, headers, *args) >> >> return self.__application(environ, _start_response) >> >> application = LoggingMiddleware(application) >> >> On Thursday, November 26, 2015 at 1:53:37 PM UTC+2, Graham Dumpleton wrote: >> Lets now confirm that the 500 is coming from Django or whether is from >> Apache. >> >> Use a WSGI middleware wrapper described in: >> >> https://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Tracking_Request_and_Response >> >> <https://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Tracking_Request_and_Response> >> >> to capture the request and response. >> >> Is the application actually returning a 500, or perhaps instead returning a >> different error code. >> >> There are cases where for a non 200 error code other than 500 that Apache >> can try and map it to an ErrorDocument but if that is mapping back into the >> application and also has an error, Apache will fall back to generating a 500 >> response. >> >> So lets just make sure we know what is going in and out of the application >> and that it looks like what is expected. >> >> Also check what gets logged in the Apache access log at the same time. >> >> Am sleeping now, so will see what you find in the morning. >> >> Graham >> >>> On 26 Nov 2015, at 10:40 PM, Arjan van Eersel <balkantec...@ <>gmail.com >>> <http://gmail.com/>> wrote: >>> >>> Debug mode is enabled, still get only the error 500. >>> >>> Is there a way to get or log those exception details? These details should >>> put me on the right track to solve the issue. >>> >>> Arjan >>> >>> On Thursday, November 26, 2015 at 1:30:09 PM UTC+2, Graham Dumpleton wrote: >>> As first step, enable DEBUG mode in Django settings module to see if that >>> fixes the issue or at least causes a description of the error in the >>> browser. >>> >>> It is quite common to get a 500 error response delivered back from Django >>> with no record of the exception being logged. This is because Django >>> doesn’t log exception details by default. >>> >>> Graham >>> >>>> On 26 Nov 2015, at 9:34 PM, Arjan van Eersel <balkantec...@ <>gmail.com >>>> <http://gmail.com/>> wrote: >>>> >>>> I'm trying to deploy a Django site through apache 2 as a wsgi daemon. Yet >>>> I keep getting an error 500 message, but no message in the apache logs at >>>> all. How can I get more information on what causes this error? >>>> >>>> I also made a quick helloworld wsgi app to test, here everything goes >>>> fine, so the problem seems to be related to the django app. The server >>>> uses virtualmin for management of the virtual host. And I've searched (and >>>> found) many related issues on the internet, still whatever I try I can't >>>> fix this problem. The irony is that I can run other instances of the same >>>> app without any problems on the same server. There are 3 other sites >>>> running on exactly the same app on the same server. >>>> >>>> Virtual host settings: >>>> SuexecUserGroup "#1237" "#1136" >>>> ServerName aldeimbg.org <http://aldeimbg.org/> >>>> ServerAlias www.aldeimbg.org <http://www.aldeimbg.org/> >>>> ServerAlias webmail.aldeimbg.org <http://webmail.aldeimbg.org/> >>>> ServerAlias admin.aldeimbg.org <http://admin.aldeimbg.org/> >>>> ServerAlias autoconfig.aldeimbg.org <http://autoconfig.aldeimbg.org/> >>>> >>>> #LogLevel debug >>>> >>>> Alias /static /home/aldeimbg/python/BalkanCMS/static >>>> <Directory /home/aldeimbg/python/BalkanCMS/static> >>>> Order deny,allow >>>> Allow from all >>>> </Directory> >>>> >>>> Alias /media /home/aldeimbg/python/UserContent/media >>>> <Directory /home/aldeimbg/python/UserContent/media> >>>> Order deny,allow >>>> Allow from all >>>> </Directory> >>>> >>>> WSGIDaemonProcess aldeimbg.org <http://aldeimbg.org/> >>>> python-path=/home/aldeimbg/env/lib/python2.7/site-packages >>>> WSGIProcessGroup aldeimbg.org <http://aldeimbg.org/> >>>> WSGIApplicationGroup %{GLOBAL} >>>> WSGIScriptAlias / /home/aldeimbg/python/BalkanCMS/wsgi.py >>>> WSGIPassAuthorization On >>>> >>>> <Directory /home/aldeimbg/python/BalkanCMS> >>>> #Require all granted >>>> Order allow,deny >>>> Allow from all >>>> </Directory> >>>> >>>> ErrorLog /var/log/virtualmin/aldeimbg.org <http://aldeimbg.org/>_error_log >>>> CustomLog /var/log/virtualmin/aldeimbg.org >>>> <http://aldeimbg.org/>_access_log combined >>>> ScriptAlias /cgi-bin/ /home/aldeimbg/cgi-bin/ >>>> ScriptAlias /awstats/ /home/aldeimbg/cgi-bin/ >>>> ScriptAlias /AutoDiscover/AutoDiscover.xml >>>> /home/aldeimbg/cgi-bin/autoconfig.cgi >>>> ScriptAlias /Autodiscover/Autodiscover.xml >>>> /home/aldeimbg/cgi-bin/autoconfig.cgi >>>> ScriptAlias /autodiscover/autodiscover.xml >>>> /home/aldeimbg/cgi-bin/autoconfig.cgi >>>> >>>> <Directory /home/aldeimbg/cgi-bin> >>>> allow from all >>>> AllowOverride All >>>> Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch >>>> </Directory> >>>> RewriteEngine on >>>> RewriteCond %{HTTP_HOST} =webmail.aldeimbg.org >>>> <http://webmail.aldeimbg.org/> >>>> RewriteRule ^(.*) https://aldeimbg.org:20000/ >>>> <https://aldeimbg.org:20000/> [R] >>>> RewriteCond %{HTTP_HOST} =admin.aldeimbg.org <http://admin.aldeimbg.org/> >>>> RewriteRule ^(.*) https://aldeimbg.org:10000/ >>>> <https://aldeimbg.org:10000/> [R] >>>> RemoveHandler .php >>>> RemoveHandler .php5 >>>> php_admin_value engine Off >>>> IPCCommTimeout 31 >>>> FcgidMaxRequestLen 1073741824 >>>> <Files awstats.pl <http://awstats.pl/>> >>>> AuthName "aldeimbg.org <http://aldeimbg.org/> statistics" >>>> AuthType Basic >>>> AuthUserFile /home/aldeimbg/.awstats-htpasswd >>>> require valid-user >>>> </Files> >>>> Alias /dav /home/aldeimbg/public_html >>>> Alias /pipermail /var/lib/mailman/archives/public >>>> <Location /dav> >>>> DAV on >>>> AuthType Basic >>>> AuthName "aldeimbg.org <http://aldeimbg.org/>" >>>> AuthUserFile /home/aldeimbg/etc/dav.digest.passwd >>>> Require valid-user >>>> ForceType text/plain >>>> Satisfy All >>>> RemoveHandler .php >>>> RemoveHandler .php5 >>>> RewriteEngine off >>>> </Location> >>>> RedirectMatch /cgi-bin/mailman/([^/\.]*)(.cgi)?(.*) >>>> https://aldeimbg.org:10000/virtualmin-mailman/unauthenticated/$1.cgi$3 >>>> <https://aldeimbg.org:10000/virtualmin-mailman/unauthenticated/$1.cgi$3> >>>> RedirectMatch /mailman/([^/\.]*)(.cgi)?(.*) >>>> https://aldeimbg.org:10000/virtualmin-mailman/unauthenticated/$1.cgi$3 >>>> <https://aldeimbg.org:10000/virtualmin-mailman/unauthenticated/$1.cgi$3> >>>> Redirect /mail/config-v1.1.xml /cgi-bin/autoconfig.cgi >>>> >>>> wsgi.py: >>>> >>>> """ >>>> WSGI config for BalkanCMS 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.7/howto/deployment/wsgi/ >>>> <https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/> >>>> """ >>>> >>>> import os >>>> import sys >>>> >>>> sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), >>>> "../../"))) >>>> sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), >>>> "../"))) >>>> os.environ.setdefault("DJANGO_SETTINGS_MODULE", "BalkanCMS.settings") >>>> >>>> from django.core.wsgi import get_wsgi_application >>>> application = get_wsgi_application() >>>> >>>> settings.py >>>> >>>> DEBUG = True (tried with False too, but get the same error) >>>> >>>> TEMPLATE_DEBUG = True >>>> >>>> ALLOWED_HOSTS = ['*',] >>>> >>>> I can access the app through manage.py runserver without problems >>>> >>>> Apache version info: >>>> Server version: Apache/2.2.22 (Ubuntu) >>>> Server built: Jul 24 2015 17:25:42 >>>> Server's Module Magic Number: 20051115:30 >>>> Server loaded: APR 1.4.6, APR-Util 1.3.12 >>>> Compiled using: APR 1.4.6, APR-Util 1.3.12 >>>> Architecture: 64-bit >>>> Server MPM: Prefork >>>> threaded: no >>>> forked: yes (variable process count) >>>> Server compiled with.... >>>> -D APACHE_MPM_DIR="server/mpm/prefork" >>>> -D APR_HAS_SENDFILE >>>> -D APR_HAS_MMAP >>>> -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) >>>> -D APR_USE_SYSVSEM_SERIALIZE >>>> -D APR_USE_PTHREAD_SERIALIZE >>>> -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT >>>> -D APR_HAS_OTHER_CHILD >>>> -D AP_HAVE_RELIABLE_PIPED_LOGS >>>> -D DYNAMIC_MODULE_LIMIT=128 >>>> -D HTTPD_ROOT="/etc/apache2" >>>> -D SUEXEC_BIN="/usr/lib/apache2/suexec" >>>> -D DEFAULT_PIDLOG="/var/run/apache2.pid" >>>> -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" >>>> -D DEFAULT_LOCKFILE="/var/run/apache2/accept.lock" >>>> -D DEFAULT_ERRORLOG="logs/error_log" >>>> -D AP_TYPES_CONFIG_FILE="mime.types" >>>> -D SERVER_CONFIG_FILE="apache2.conf" >>>> >>>> mod_wsgi version >>>> ii libapache2-mod-wsgi 3.3-4ubuntu0.2 >>>> Python WSGI adapter module for Apache >>>> >>>> Python version: 2.7.3 >>>> >>>> -- >>>> You received this message because you are subscribed to the Google Groups >>>> "modwsgi" group. >>>> To unsubscribe from this group and stop receiving emails from it, send an >>>> email to modwsgi+u...@ <>googlegroups.com <http://googlegroups.com/>. >>>> To post to this group, send email to mod...@ <>googlegroups.com >>>> <http://googlegroups.com/>. >>>> Visit this group at http://groups.google.com/group/modwsgi >>>> <http://groups.google.com/group/modwsgi>. >>>> For more options, visit https://groups.google.com/d/optout >>>> <https://groups.google.com/d/optout>. >>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "modwsgi" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to modwsgi+u...@googlegroups.com <>. >>> To post to this group, send email to mod...@googlegroups.com <>. >>> Visit this group at http://groups.google.com/group/modwsgi >>> <http://groups.google.com/group/modwsgi>. >>> For more options, visit https://groups.google.com/d/optout >>> <https://groups.google.com/d/optout>. >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "modwsgi" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to modwsgi+unsubscr...@googlegroups.com >> <mailto:modwsgi+unsubscr...@googlegroups.com>. >> To post to this group, send email to modwsgi@googlegroups.com >> <mailto:modwsgi@googlegroups.com>. >> Visit this group at http://groups.google.com/group/modwsgi >> <http://groups.google.com/group/modwsgi>. >> For more options, visit https://groups.google.com/d/optout >> <https://groups.google.com/d/optout>. > > > -- > You received this message because you are subscribed to a topic in the Google > Groups "modwsgi" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/modwsgi/YFMbpUIZ3Kg/unsubscribe > <https://groups.google.com/d/topic/modwsgi/YFMbpUIZ3Kg/unsubscribe>. > To unsubscribe from this group and all its topics, send an email to > modwsgi+unsubscr...@googlegroups.com > <mailto:modwsgi+unsubscr...@googlegroups.com>. > To post to this group, send email to modwsgi@googlegroups.com > <mailto:modwsgi@googlegroups.com>. > Visit this group at http://groups.google.com/group/modwsgi > <http://groups.google.com/group/modwsgi>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > > -- > You received this message because you are subscribed to the Google Groups > "modwsgi" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to modwsgi+unsubscr...@googlegroups.com > <mailto:modwsgi+unsubscr...@googlegroups.com>. > To post to this group, send email to modwsgi@googlegroups.com > <mailto:modwsgi@googlegroups.com>. > Visit this group at http://groups.google.com/group/modwsgi > <http://groups.google.com/group/modwsgi>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- You received this message because you are subscribed to the Google Groups "modwsgi" group. To unsubscribe from this group and stop receiving emails from it, send an email to modwsgi+unsubscr...@googlegroups.com. To post to this group, send email to modwsgi@googlegroups.com. Visit this group at http://groups.google.com/group/modwsgi. For more options, visit https://groups.google.com/d/optout.