Один и тот же сайт, разные проекты django, обслуживаемые через разные URL
Итак, я нахожусь на:
- Ubuntu 14.04.3 LTS
- Apache / 2.4.7
- Последний мод-wsgi-3.4 построен из исходного кода
- Python 3.4 virtualenv
- Джанго 1,86
У меня есть 2 проекта Django в разных местах:
- / Главная / администратора / MyProject /
- / Главная / Бобы / bobaproject /
Так что каталоги находятся под разными пользователями.
Я пытаюсь обслуживать мой проект на www.example.com и служить boba на www.example.com/boba.
Я следовал за https://gun.io/blog/how-to-install-multiple-django-sites-on-the-same-server/ и установил свой конфигурационный файл Apache:
<VirtualHost *:80>
ServerAdmin a@b.com
ServerName example.com
DocumentRoot /var/www/example.com/public_html
WSGIScriptAlias /boba /home/boba/bobaproject/website/wsgi.py
WSGIDaemonProcess boba python-path=/home/boba/bobaproject:/home/boba/bobaproject/bbenv/lib/python3.4/site-packages
WSGIProcessGroup boba
<Directory /home/boba/bobaproject/website>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static /home/boba/bobaproject/static
<Directory /home/boba/bobaproject/static>
Require all granted
</Directory>
WSGIScriptAlias / /home/admin/myproject/myproject/wsgi.py
WSGIDaemonProcess myproject python-path=/home/admin/myproject:/home/admin/myproject/myprojectenv/lib/python3.4/site-packages
WSGIProcessGroup myproject
<Directory /home/admin/myproject/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static /home/admin/myproject/static
<Directory /home/admin/myproject/static>
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Но я получаю только мой проект как на www.example.com, так и на www.example.com/boba. По отдельности обе конфигурации сайта работают, если я удаляю другую. Вместе они не делают.
Мой порядок объявления приложений wsgi кажется правильным для myproject, который обслуживается базовым URL, объявленным позже. Боба первый
Также каждое приложение wsgi имеет свою собственную группу WSGIProcessGroup. Что может быть не так?
Я продолжаю получать это в журналах ошибок Apache, не уверен, что это уместно:
[Sat Nov 14 16:46:35.305968 2015] [:error] [pid 31518:tid 139634209957760] AssertionError:
[Sat Nov 14 16:46:35.366063 2015] [:error] [pid 31518:tid 139634209957760] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Sat Nov 14 16:46:35.366107 2015] [:error] [pid 31518:tid 139634209957760] Traceback (most recent call last):
[Sat Nov 14 16:46:35.366123 2015] [:error] [pid 31518:tid 139634209957760] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Sat Nov 14 16:46:35.366705 2015] [:error] [pid 31518:tid 139634209957760] assert tlock is not None
[Sat Nov 14 16:46:35.366726 2015] [:error] [pid 31518:tid 139634209957760] AssertionError:
[Sat Nov 14 22:16:36.244778 2015] [:warn] [pid 31724:tid 140082293180288] mod_wsgi: Compiled for Python/3.4.0.
[Sat Nov 14 22:16:36.244939 2015] [:warn] [pid 31724:tid 140082293180288] mod_wsgi: Runtime using Python/3.4.3.
[Sat Nov 14 22:16:36.255767 2015] [mpm_worker:notice] [pid 31724:tid 140082293180288] AH00292: Apache/2.4.7 (Ubuntu) mod_wsgi/3.4 Python/3.4.3 configured -- resuming normal operations
[Sat Nov 14 22:16:36.255818 2015] [core:notice] [pid 31724:tid 140082293180288] AH00094: Command line: '/usr/sbin/apache2'
Спасибо за любую помощь.
1 ответ
Я, кажется, частично решил эту проблему, посмотрев на этот вопрос: обслуживание 2 сайтов django с одинаковым кодом
<VirtualHost *:80>
ServerAdmin a@b.com
ServerName example.com
WSGIScriptAlias /boba /home/boba/bobaproject/website/wsgi.py
WSGIDaemonProcess boba python-path=/home/boba/bobaproject:/home/boba/bobaproject/bbenv/lib/python3.4/site-packages
<Location /boba>
WSGIProcessGroup boba
</Location>
<Directory /home/boba/bobaproject/website>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static /home/boba/bobaproject/static
<Directory /home/boba/bobaproject/static>
Require all granted
</Directory>
WSGIScriptAlias /myproject /home/admin/myproject/myproject/wsgi.py
WSGIDaemonProcess myproject python-path=/home/admin/myproject:/home/admin/myproject/myprojectenv/lib/python3.4/site-packages
<Location /myproject >
WSGIProcessGroup myproject
</Location>
<Directory /home/admin/myproject/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static /home/admin/myproject/static
<Directory /home/admin/myproject/static>
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Использование тега Location вокруг WSGIProcessGroup дает мне приложения django по адресу www.example.com/boba и www.example.com/myproject.
Но я все же предпочел бы приложение myproject по базовому URL example.com, которое я еще не понял.
Примечание. Удаление DocumentRoot не требуется. Сохранение этого приведет к тому, что простые старые документы HTML будут обслуживаться из корневой папки документа для базового URL-адреса www.example.com.