пирамида сохраняется в корневом пути, отличном от /

Когда pserve запускается по умолчанию, оно запускает пирамидальное приложение в http://0.0.0.0:6543, однако как я могу изменил его на http://0.0.0.0:6543/myapp

В настройках я могу изменить порт, но нигде не нашел, где изменить корневой путь.


person QLands    schedule 19.04.2017    source источник


Ответы (1)


В любом приложении 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

person Michael Merickel    schedule 19.04.2017