Несколько сайтов с Django и Apache - не удается заставить работать оба сайта одновременно
У нас есть два сайта, сделанных на Django, один является форком другого (то же имя проекта), поэтому у нас были проблемы с неправильной загрузкой settings.py для второго сайта в mod_wsgi. Поэтому мы перевели mod_wsgi в режим демона, чтобы разделить два сайта, чтобы этого не произошло.
Один сайт работает нормально, когда другой либо отключен, либо настроен неправильно. Как только второй сайт приводится в соответствие с тем, что должно работать, он не работает, и это приводит к падению первого сайта, выдавая нам ошибку Apache 500 Error.
Вот файл conf.d, который мы имеем для одного из них:
WSGIDaemonProcess {siteName}.co.uk python-home=/var/www/vhosts/{siteName}.co.uk/venv python-path=/var/www/vhosts/{siteName}.co.uk/website/{djangoProject}
WSGIProcessGroup {siteName}.co.uk
WSGIScriptAlias / /var/www/vhosts/{siteName}.co.uk/website/{djangoProject}/{djangoProject}/wsgi.py
WSGIPythonHome /var/www/vhosts/{siteName}.co.uk/venv
WSGIPythonPath /var/www/vhosts/{siteName}.co.uk/website/{djangoProject}
<VirtualHost *:80>
ServerName {siteName}.co.uk
ServerAlias www.{siteName}.co.uk
<Directory /var/www/vhosts/{siteName}.co.uk/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
<Directory /var/www/vhosts/{siteName}.co.uk/website/{djangoProject}/{djangoProject}>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
CustomLog /var/log/httpd/{siteName}.co.uk-access.log combined
ErrorLog /var/log/httpd/{siteName}.co.uk-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
</VirtualHost>
Примечание: Файл одинаков для двух сайтов, за исключением того, что {siteName} отличается. {djangoProject} одинаковы, так как один является модифицированным клоном другого.
В журнале apache также появляется ошибка, что для файла mysite.log было отказано в разрешении, этот файл для обоих сайтов имеет разрешение 777 через chmod, но эта ошибка все еще сохраняется.
Эта ошибка кажется странной, поскольку когда один из сайтов настроен на запуск, он работает нормально, эта ошибка возникает только когда оба сайта пытаются запустить одновременно.
Кто-нибудь знает, что мы можем упустить?
- apache mod_wsgi обрабатывает только одну виртуальную среду для всех vhost, поэтому WSGIPythonHome может быть определен только один раз .
- все остальные определения WSGIxxx специфичны для каждого vhost и поэтому должны быть размещены внутри оператора virtual host:
WSGIPythonHome /var/www/vhosts/venv
<VirtualHost *:80>
WSGIDaemonProcess {siteName}.co.uk python-home=/var/www/vhosts/{siteName}.co.uk/venv python-path=/var/www/vhosts/{siteName}.co.uk/website/{djangoProject}
WSGIProcessGroup {siteName}.co.uk
WSGIScriptAlias / /var/www/vhosts/{siteName}.co.uk/website/{djangoProject}/{djangoProject}/wsgi.py
WSGIPythonPath /var/www/vhosts/{siteName}.co.uk/website/{djangoProject}
...