skip to Main Content

I have a Django app which is deployed in local network using Apache + mod_wsgi under Windows. When I run python manage.py runserver, everything works fine. But when I start the Apache Service, I cannot access the app. The only response I get from the access.log is the error code 408. Below is my httpd.conf:

LoadFile "c:/users/felix/appdata/local/programs/python/python37/python37.dll"
LoadModule wsgi_module "c:/users/felix/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/users/felix/appdata/local/programs/python/python37"

ServerName localhost

WSGIScriptAlias / "D:/dev/test_server/django/django/wsgi_windows.py"
Listen 8000
<VirtualHost *:8000>
    WSGIPassAuthorization On
    ErrorLog "logs/django.error.log"
    CustomLog "logs/django.access.log" combined

    Alias /static "D:/dev/test_server/staticfiles"
    <Directory "D:/dev/test_server/staticfiles">
        Require all granted
    </Directory>

    <Directory "D:/dev/test_server/django/django">
        <Files wsgi_windows.py>
            Require all granted
        </Files>
    </Directory>

    <Directory />
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

And below is the wsgi_windows.py file:

# Activate the virtualenv
activate_this = 'D:/dev/test_server/.venv/Scripts/activate_this.py'
exec(open(activate_this).read(), dict(__file__=activate_this))

import os  # noqa
import sys  # noqa
import site  # noqa

# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('D:/dev/test_server/.venv/Lib/site-packages')

# Add the app's directory to the PYTHONPATH
sys.path.append('D:/dev/test_server/django')
sys.path.append('D:/dev/test_server/django/django')

os.environ['DJANGO_SETTINGS_MODULE'] = 'django.settings'
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django.settings")

from django.core.wsgi import get_wsgi_application  # noqa
application = get_wsgi_application()

I’d appreciate any ideas or hints on the issue.

2

Answers


    1. start apache at command line with ‘httpd’ and look for error messages. If Apache has a problem at startup there is no message in the log files.
    2. check error.log
      You can place ‘print(‘xyz’) even in the settings.py and elsewhere and this way by checking error.log see how your app is setup and how far a request is processed. If your app get stuck somewhere like this you find the code where it is stuck
    Login or Signup to reply.
  1. I have the same error after install scipy library and use it in some scrip in django. I found that some libraries like "numpy" and "scipy" only work in the Python main interpreter and you have to force the WSGI to run in the global app group to run it. Adding this line in my conf file work for me.

    WSGIApplicationGroup %{GLOBAL}
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search