Итак, я часами осматривался, и это поставило меня в тупик.
У меня есть приложение, которое еще не запущено, и мой клиент хочет, чтобы оно было разделено на менее стабильное и более стабильное. Итак, я решил переместить версию для разработчиков в /var/www/dev
, а полустабильную версию скопировать в /var/www/master
(пока это не будет отлажено, полустабильная версия также находится в /var/www
, чтобы не нарушать доступ слишком сильно). Идея в том, что domain.com
всегда будет работать, а новые материалы/тесты будут на dev.domain.com
.
Поэтому, согласно документации apache, теперь у меня есть два виртуальных хоста :
<VirtualHost _default_:443>
ServerAdmin [email protected]
DocumentRoot "/var/www/master"
ServerName domain.com
SSLEngine on
# [ssl stuff]
Header add Strict-Transport-Security "max-age=15768000"
WSGIDaemonProcess master_wsgi user=www-data group=www-data
WSGIScriptAlias /master "/var/www/master/src/main.py"
# [ Aliases .... ]
<Directory "/var/www/master/src">
Options +ExecCGI
AddHandler wsgi-script .py
Order allow,deny
Allow from all
</Directory>
<Directory "/var/www/master">
Options +ExecCGI
AddHandler wsgi-script .py
Order allow,deny
Allow from all
</Directory>
<Location /master>
# [HTTP auth stuff]
WSGIProcessGroup master_wsgi
</Location>
# modules, cache, error directories, etc
</VirtualHost>
Затем продублировано то же самое, за исключением:
DocumentRoot "/var/www/dev"
ServerName dev.domain.com
ServerPath /dev/
и все остальные экземпляры master
в псевдонимах, демоне и т. д. становятся dev
(я буквально сделал replace-string
). Процесс демона и группа процессов были мне преследованием другого ответа SO, который не удался из-за требования подкаталога (поскольку, по-видимому, они оба должны быть в одном VirtualHost, но я не могу указать DocumentRoot
в <Location>
)
Теперь, если я сделаю это, все, что я получу, это список файлов для обоих. Правильный список файлов, заметьте, но только списки файлов. Если я перейду к любому из них и изменю WSGIScriptAlias
на /
, где находится старая копия, он отлично работает с этим файлом python, как всегда (хотя, конечно, это означает, что материал разработчика фактически указывает на старые шаблоны, так что это нехорошо, поскольку Я не могу менять шаблоны, только скрипты, так как templateDir = os.path.realpath(os.path.dirname(os.path.realpath(__file__)) + "/../templates/") + "/"
всегда /var/www/templates
).
Это не ошибка, он просто дает списки файлов, поэтому он указывает в нужном месте, но WSGIScriptAlias не делает то, что должен? Что мне не хватает?
Если это уместно, вот что перед соответствующим VH в httpd.conf
, хотя я в этом сомневаюсь:
LoadModule wsgi_module modules/mod_wsgi.so
WSGICallableObject app
WSGIPythonHome /usr/local/bin/python
NameVirtualHost *:80
<VirtualHost *:80>
ServerName domain.com
Redirect permanent / https://domain.com/
## Heading ##</VirtualHost>
python
в этом каталоге). Причина в том, что в конечном итоге каждый подкаталог по сути является зеркалом ветки git (выпуск будет иметь ряд этих организационных изменений), поэтому в идеале они должны быть полностью автономными. Следовательно, шаблоны, упомянутые в/var/www/master/src
, будут ссылаться на шаблоны в/var/www/master/templates
, и то же самое сdev
. Идея состоит в том, чтобы посмотреть каталогmain.py
, а затем выбрать соответствующий шаблон. 28.08.2014/
, я мог бы указать на один каталог, если он запрашивает поддомен, и на другой, если нет .... который должен быть чем-то вродеRequest.host_url
в webob с некоторым разделением и проверка, но я действительно хотел бы, чтобы все это было самодостаточным на данный момент (см. предостережение о выпуске выше). Это две версии одного и того же, а не два отдельных приложения — они должны вести себя именно так. 28.08.2014