Когда pserve запускается по умолчанию, оно запускает пирамидальное приложение в http://0.0.0.0:6543, однако как я могу изменил его на http://0.0.0.0:6543/myapp
В настройках я могу изменить порт, но нигде не нашел, где изменить корневой путь.
Когда pserve запускается по умолчанию, оно запускает пирамидальное приложение в http://0.0.0.0:6543, однако как я могу изменил его на http://0.0.0.0:6543/myapp
В настройках я могу изменить порт, но нигде не нашел, где изменить корневой путь.
В любом приложении WSGI здесь очень важен environ['SCRIPT_NAME']
. Он определяет корневой путь для всех URL-адресов в приложении. Полный путь: environ['SCRIPT_NAME'] + environ['PATH_INFO']
. Предполагая, что вы все сделали правильно в своем приложении (например, request.route_url(..)
будет генерировать URL-адреса, используя эту информацию), вы можете просто перемонтировать свое приложение в другом месте (по умолчанию SCRIPT_NAME
— это ''
), указав, что оно должно быть чем-то другим.
Есть несколько вещей, которые вы можете сделать в зависимости от того, как вы развертываете свое приложение (если оно находится за прокси-сервером, все немного сложнее). Предположим, вы используете простое приложение-пирамиду, размещенное у официантки. Вы можете переместить свое приложение с помощью пакета rutter
[1], который будет соответствовать пути /myapp/*
и отправлять все запросы к вашему приложению с соответствующими SCRIPT_NAME
(myapp
) и PATH_INFO
.
Декларативная конфигурация является самой простой для приложения-пирамиды. Просто установите rutter
, а затем обновите INI-файл, чтобы смонтировать приложение с префиксом /myapp
:
[app:foo]
use = egg:myapp#main
[composite:main]
use = egg:rutter#urlmap
/myapp = foo
Примечание. Я переименовал app:main
в app:foo
, потому что у вас может быть только один компонент wsgi с именем main
, и мы хотим, чтобы он был составным.
[1] http://rutter.readthedocs.io/en/latest/#declarative-configuration-using-paste-deploy-ini-files