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 <[email protected]> > 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 [email protected] <>. >> To post to this group, send email to [email protected] <>. >> 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 [email protected] > <mailto:[email protected]>. > To post to this group, send email to [email protected] > <mailto:[email protected]>. > 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/modwsgi. For more options, visit https://groups.google.com/d/optout.
