I am serving a django site with apache and wsgi utilizing an apache config as follow:

  Alias /media/ /var/www/media/
  Alias /files/ /var/www/files/
  WSGIDaemonProcess fc processes=5 threads=5 display-name=%{GLOBAL}
  WSGIProcessGroup fc
  WSGIScriptAlias / /home/path/to/django.wsgi

The application is offered within the root directory from the host. I would like how to change this in order to serve it at http://host/app1 and the other one, having a different django setting, at http://host/app2

How do i alter the config to get this done?


You might attempt to make other folder with second settings.py and make symbolic links for your applications, locales, static, templates, web addresses.py etc.

I've multiple projects using same applications so I have insert them in stand alone folder that we put into python path. I additionally use same database for sites, however i have different SITE_ID in order to specify wchich site i wish to have my content. By doing this i'm able to have completely different websites using different templates, styles and pictures getting exactly the same content. If JS scripts are identical on sites i produce a symlink.

You will need a group of WSGI* directives for every project. That second parameter to WSGIScriptAlias informs Apache in which the project lives within the tree WSGI removes this prefix prior to the URL is passed to Django's URL resolver.

For instance:

WSGIDaemonProcess app1 threads=15
WSGIScriptAlias /app1 /var/www/django_project1/django.wsgi
<Location /app1>
WSGIProcessGroup app1

WSGIDaemonProcess app2 threads=15
WSGIScriptAlias /app2 /var/www/django_project2/django.wsgi
<Location /app2>
WSGIProcessGroup app2

I've not attempted to optimize this there might be an easy method. But this will enable you to get running.