Как правильно обновить pip в Stretch Debian?

Как предлагает @josh -jolly… размещение различных операторов прокси в одном виртуальном хосте полезно, учитывая, что в вашей конфигурации есть несколько виртуальных хостов, которые прослушивают абсолютно все на порту 80.

ОСНОВНОЙ ПОРЯДОК СЛОЖНОСТИ

Однако рекомендация Джоша не передает (и неправильно иллюстрирует в своем примере )то, что мод _proxy, как и мод _rewrite, обрабатывает предоставленные шаблоны в порядке их получения.

Это означает, что если вы поместите следующие строки перед другими блоками ProxyPass/ProxyPassReverse, весь трафик будет перехватываться этим шаблоном.

ProxyPass           /           http://localhost:8080/
ProxyPassReverse    /           http://localhost:8080/

Вероятно, поэтому весь трафик направлялся в Glassfish, а не в PHPMyAdmin.

ВЛОЖЕННЫЙ ПОРЯДОК СЛОЖНОСТИ

Точно так же вы должны быть осторожны с правилами порядка сложности для шаблонов URL, которые вы хотите маршрутизировать по-разному, но которые являются вложенными.

В следующем примере показан плохо созданный набор правил порядка сложности.

ProxyPass           /myapp          http://localhost:9090/
ProxyPassReverse    /myapp          http://localhost:9090/

ProxyPass           /myapp/images   http://localhost:8080/
ProxyPassReverse    /myapp/images   http://localhost:8080/

В этом примере весь трафик будет направляться на порт 9090, потому что оба URL-адреса связаны с /myapp, но мод _прокси соответствует более простому шаблону, прежде чем он сможет добраться до шаблона /myapp/images.

Упорядочивание блоков, как показано ниже, позволит правильно сопоставить оба шаблона из-за снижения уровня сложности шаблонов URL.

ProxyPass           /myapp/images   http://localhost:8080/
ProxyPassReverse    /myapp/images   http://localhost:8080/

ProxyPass           /myapp          http://localhost:9090/
ProxyPassReverse    /myapp          http://localhost:9090/

ПОЛЕЗНЫЕ ПРИВЫЧКИ

  1. Включите комментарии в конфигурации VHost. Вы не всегда будете лицом, обновляющим или управляющим ими.
  2. ProxyPass и ProxyPassReverse всегда должны совпадать. Я никогда не находил допустимого использования, где две директивы должны отличаться. Это особенно верно при включении или выключении завершающей косой черты в шаблоне URL.
  3. Сгруппируйте связанные директивы вместе и визуально разделите их с помощью какого-либо блока комментариев.Это особенно полезно для больших или сложных конфигураций VHost. Но когда практика станет привычкой, ваша жизнь станет намного проще.
7
17.02.2020, 02:22
1 ответ

В дополнение к ответу Стивенса вы также не должны устанавливать пакеты глобально, используя pip (, то естьsudo pip install foo). Подобно обновлению pip, это мешает распространению -предоставленных файлов, что приводит к потенциальным конфликтам.

Для пакетов Python в Debian есть две жизнеспособные стратегии, которые не следует смешивать. Выбери один. Вы можете переключаться с одного на другой в зависимости от ситуации.

1 )Использовать только предоставленные Debian -пакеты

То есть все, что можно apt install. Нужен ПИЛ? apt install python-pilили apt install python3-pil. Это гарантирует, что Debian правильно управляет всеми файлами, и вы получаете бесплатную поддержку безопасности вместе с остальными пакетами Debian. Ну, во всяком случае, до июля -, когда Stretch начнет терять поддержку безопасности.

Это означает, что иногда вам придется довольствоваться более старой версией пакета. Иногда вы можете вообще не найти нужный пакет. Возможно, это можно дополнить пакетами, установленными с помощью pip --user, как описывает Стивен, я этого не пробовал.

2 )Использовать виртуальную среду

Вы можете настроить виртуальную среду Python(sudo apt install virtualenv; virtualenv venv; source venv/bin/activate). Вы можете установить пакеты (или обновить pip )внутри этого виртуального окружения, и все такие установки будут полностью содержаться в этом виртуальном окружении.Это также означает, что вы можете использовать разные версии пакетов для разных проектов, и все, что есть в PyPi, доступно. rm -r venv/избавит вас от всей виртуальной среды, включая любые пакеты. Нет конфликтов с файлами ОС.

Этот подход делает намного более явным то, что нужно вашему проекту, и упрощает управление этим. С другой стороны, бремя обновления этих пакетов для исправлений безопасности ложится на вас. Это немного тяжело -для небольших -проектов, но может быть весьма полезным в определенных случаях.

4
28.04.2021, 23:23

Теги

Похожие вопросы