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.

Reply via email to