Here is an example of how I do it. Naturally, you will have to change the paths / names of the projects based on your installation (for example, SSL on port 443, but it also works on port 80):
LoadModule wsgi_module modules/mod_wsgi.so LoadModule ssl_module modules/mod_ssl.so WSGISocketPrefix /var/run/wsgi NameVirtualHost *:443 Listen 443 <VirtualHost *:443> ServerName your.server.com ErrorLog /home/user/apache_errors.log WSGIDaemonProcess project1-https python-home=/home/user/.virtualenvs/project1 WSGIScriptAlias /project1 /var/www/html/project1/project1/wsgi.py process-group=project1-https application-group=project1-https WSGIProcessGroup project1-https Alias /project1/static/ /var/www/html/project1/static/ WSGIDaemonProcess project2-https python-home=/home/user/.virtualenvs/project2 WSGIScriptAlias /project2 /var/www/html/project2/project2/wsgi.py process-group=project2-https application-group=project2-https WSGIProcessGroup project2-https Alias /project2/static/ /var/www/html/project2/static/ </VirtualHost>
Virtualenv performs customization and the path to Python when configured in this way.
source share