задавал этот вопрос на тематическом форуме, но ответа не получил, поэтому спрашиваю здесь. судя по соседним темам мой вопрос подходит к этому разделу
помогите пожалуйста разобраться в некоторых общих моментах при размещении на виртуальном(shared) хостинге. у меня сложилось некоторое представление и я его сейчас изложу. если в чём-то буду не прав, то пожалуйста укажите на ошибку. здесь элементарные вещи, но для меня они важны. ещё в конце будет небольшой вопрос
например есть хостинг под 1 сайт. обычно на таком хостинге есть каталог с вирт.окружением(.virtualenvs) и каталог для файлов django-проекта. в .bash_profile или другом подобном файле прописана переменная среды $WORKON_HOME, благодаря кооторой сервер знает какое вирт.окружение используется
сервер(apache, nginx или любой другой) имеет в конфиге секции типа <Virtualhost>. в каждой из них прописано правило, которое при запросе пользователем через браузер адреса определённого вида(например http://project.ru) отдаёт странички определённого django-проекта
то есть порядок такой:
- 1. пользователь ввёл адрес в адресную строку браузера
- 2. браузер выслал заголовки с запросом
- 3. сервер получил заголовки
- 4. сервер на основе конфига <Virtualhost> смотрит файл wsgi.py определённого проекта и берёт из этого файла значение переменной DJANGO_SETTINGS_MODULE
- 5. переменная DJANGO_SETTINGS_MODULE указывает на точку входа django-проекта(то есть на файл settings.py)
- 6. далее django-проект отдаёт сгенерированный html
- 7. сервер отдаёт браузеру html
- 8. браузер отрисовывает страницу в manage.py тоже есть DJANGO_SETTINGS_MODULE, указывающая на settings.py , но на работу сайта это не влияет. это нужно только программисту, если он задумает выполнять различные команды типа python manage.py collectstatic
таким образом при переносе проекта на другой хостинг кроме настройки среды возможно нужно будет менять значения только в трёх файлах:
- settings.py,
- wsgi.py,
- manage.py
если я в общем описал процесс верно, то у меня вопрос такой: если используется виртуальный хостинг, которые рассчитан не на одно приложение, а на несколько, то каким образом организованы виртуальные окружения? например в этом случае в каталоге .virtualenvs будет несколько каталогов, соответствующих определённм виртуальным окружениям. для определённости пусть одно окружение настроено на использование python2.7, а другое - на python3.4. соответственно в каталогах файлов проекта существуют тоже 2 проекта(один работает под python2.7, другой работает под python3.4)
после того как сервер получит запрос от браузера пользователя как он узнает какое именно виртуальное окружение использовать для запуска django-приложения?