Установка mod_wsgi
зависит от того, какая у вас ОС. Проверьте инструкции. Если вы используете CentOS или RedHat, я бы порекомендовал посмотреть на IUS Community; они предоставляют репозиторий с установленными пакетами yum для Python 3.6 и mod_wsgi
. Версия mod_wsgi
, которую вы устанавливаете, должна быть скомпилирована с той же версией Python, которую вы используете в своей виртуальной среде.
Тогда вам нужно правильно настроить VirtualHost
. Если у вас есть хост в корне, он должен быть последним в вашем определении. Вот пример:
<VirtualHost *:443>
TimeOut 300
SSLEngine On
ServerName mysite.example.com
# Set to the lobal Application Group
WSGIApplicationGroup %{GLOBAL}
# Pass Authorizations through to the WSGI app for Django REST Framework Token Auth
WSGIPassAuthorization On
WSGIDaemonProcess subsite-develop-https python-home=/web/subsite-develop/venv request-timeout=300 user=apache group=apache
WSGIProcessGroup subsite-develop-https
WSGIScriptAlias /subsite /web/subsite-develop/config/wsgi.py process-group=subsite-develop-https
<Directory /web/subsite-develop/config>
Require all granted
</Directory>
Alias /subsite/static/ /web/subsite-develop/static/
<Directory /web/subsite-develop/static>
Header always set Access-Control-Allow-Origin "*"
Require all granted
</Directory>
WSGIDaemonProcess django-mysite-develop-https python-home=/web/django-mysite-develop/venv request-timeout=300 user=apache group=apache
WSGIProcessGroup django-mysite-develop-https
WSGIScriptAlias / /web/django-mysite-develop/config/wsgi.py process-group=django-mysite-develop-https
<Directory /web/django-mysite-develop/config>
Require all granted
</Directory>
Alias /static/ /web/django-mysite-develop/static/
<Directory /web/django-mysite-develop/static>
Header always set Access-Control-Allow-Origin "*"
Require all granted
</Directory>
Alias /media/ /var/media/mysite-www/
<Directory /var/media/mysite-www>
Require all granted
</Directory>
</VirtualHost>
В этом примере будет размещен один сайт в /subsite/
, а другой в корне, /
. Обратите внимание, что корневой сайт стоит последним. Это также означает, что вы не сможете использовать маршрут /subsite/
в корневом проекте, так как Apache перенаправит его через определение WSGIScriptAlias
.
Это также для сайта с TLS; возможно, вам придется переключить 443
на 80
и удалить SSLEngine On
, если вы не используете TLS. WSGIPassAuthorization
предназначен для токенов Django REST Framework, возможно, вы также можете удалить его, но я оставил его для более полного примера. Это для Apache 2.4+, когда они переключились на синтаксис Require all granted
.
Сообщество IUS, если на RedHat / CentOS: https://ius.io/