I have been able to solve the issue, by changing the apache virtual conf to 
this:

WSGIDaemonProcess aldeimbg.org user=aldeimbg group=aldeimbg threads=25 
python-path=/home/aldeimbg/python:/home/aldeimbg/env/lib/python2.7/site-packages
WSGIProcessGroup aldeimbg.org
WSGIScriptAlias / /home/aldeimbg/python/BalkanCMS/wsgi.py
WSGIPassAuthorization On

<Directory /home/aldeimbg/python/BalkanCMS>
Order deny,allow
Allow from all
</Directory>

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>

I came to this insight thanks to the info on this 
page: https://code.google.com/p/modwsgi/wiki/IntegrationWithDjango.

The difference with the old apache configuration is the addition of these 
arguments to the WSGIDaemonProcess definition: user=aldeimbg group=aldeimbg 
threads=25. When I remove them and try again, the error 500 appears again, 
so obviously I'm obliged to explicitly define the user, group and threads.

Graham, I'd like to thank you very much for your help, which was extremely 
useful to find out where to start searching for a solution regarding this 
problem.

Arjan

On Monday, November 30, 2015 at 1:32:22 AM UTC+2, Graham Dumpleton wrote:
>
> 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 <[email protected] 
> <javascript:>> wrote:
>
> Now I do get some response:
> [Sat Nov 28 13:19:21 2015] [info] mod_wsgi (pid=21273): Shutdown requested 
> 'aldeimbg.org'.
> [Sat Nov 28 13:19:21 2015] [info] mod_wsgi (pid=21273): Stopping process '
> 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/
>
> On Sat, Nov 28, 2015 at 6:17 AM, Graham Dumpleton <[email protected] 
> <javascript:>> 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 <[email protected] 
>> <javascript:>> 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/
>> """
>>
>> 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
>>>
>>> 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 <[email protected]> 
>>> 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 <[email protected]> 
>>>> 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
>>>> ServerAlias www.aldeimbg.org
>>>> ServerAlias webmail.aldeimbg.org
>>>> ServerAlias admin.aldeimbg.org
>>>> ServerAlias 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 
>>>> python-path=/home/aldeimbg/env/lib/python2.7/site-packages
>>>> WSGIProcessGroup 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_error_log
>>>> CustomLog /var/log/virtualmin/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
>>>> RewriteRule ^(.*) https://aldeimbg.org:20000/ [R]
>>>> RewriteCond %{HTTP_HOST} =admin.aldeimbg.org
>>>> RewriteRule ^(.*) https://aldeimbg.org:10000/ [R]
>>>> RemoveHandler .php
>>>> RemoveHandler .php5
>>>> php_admin_value engine Off
>>>> IPCCommTimeout 31
>>>> FcgidMaxRequestLen 1073741824
>>>> <Files awstats.pl>
>>>> AuthName "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"
>>>> 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
>>>> RedirectMatch /mailman/([^/\.]*)(.cgi)?(.*) 
>>>> 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/
>>>> """
>>>>
>>>> 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 [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.
>>>>
>>>>
>>>>
>>> -- 
>>> 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.
>>>
>>>
>>>
>> -- 
>> 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] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at http://groups.google.com/group/modwsgi.
>> For more options, visit 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.
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at http://groups.google.com/group/modwsgi.
>> For more options, visit 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] <javascript:>.
> To post to this group, send email to [email protected] <javascript:>
> .
> Visit this group at http://groups.google.com/group/modwsgi.
> For more options, visit 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.

Reply via email to