Разворачиваем приватный pypi репозиторий с localshop
развернуть
Время от времени, я пишу небольшие утилиты, библиотеки и приложения на python для себя, и не всегда я готов делится этими утилитами и библиотеками, но хотелось бы иметь возможность их удобно устанавливать, и желательно привычным pip в virtualenv. Для этого я довольно давно организовал себе локальный, приватный pypi сервер. Реализаций локальный pypi серверов довольно много, и я перепробовал их все. Большинство из них откровенно неработающие, другие безбожно глючат и падают от малейшего чиха. В конечном итоге для себя я выбрал localshop. В этом небольшом посте я расскажу как настроить локальный, приватный pypi репозиторий на localshop.
Для любителей docker: да, есть ardeois/docker-localshop. Можете поставить его сразу из docker hub, но мне docker не всегда подходит.
Ставим всё необходимое:
На серверах я по прежнему использую исключительно Debian Stable, поэтому название пакетов актуально для данного дистрибутива. Для других название может быть иным.
Из под обычного пользователя создаём виртуальное окружение и активируем его:
cd /home/$USER virtualenv localshop cd localshop source bin/activate pip install localshop localshop migrate
Настроим supervisor для запуска localshop. Создадим /etc/supervisor/conf.d/ localshop.conf:
Выше $USER нужно заменить на имя пользователя, под которым Вы развернули virtualenv с localshop.
Запустим:
Теперь настроим nginx. Создадим /etc/nginx/sites-available/localshop :
В листинге выше $USER так же нужно заменить на пользователя в директории которого разместили виртуальную среду с localshop.
Активируем конфигурацию nginx:
Скажем systemd запускать supervisor и nginx при старте системы:
После этого заходим по адресу, по которому разместили localshop. В нашем примере - это http://localshop.yourdomain.com. Перед нам откроется главная страница localshop:

Далее в верхнем меню выбираем Permissions, затем CIDRs и нажимаем Create. На странице добавления необходимо добавить IP-Адрес, или сеть из которой будет доступна возможность добавлять пакеты. В моём случае это сеть 192.168.1.0/24. Обращаю внимание, что добавлять необходимо в CIDR нотации. Например, /24 в CIDR нотации - это маска 255.255.255.0. Подробнее можно почитать, например, на википедии.

После добавления:

В localshop в отличии от многих других приватных pypi можно каждому пользователю давать разные ключи для доступа, и при надобности отключить пользователя. Добавим один ключ. Для этого так же в меню выбираем Permissions, затем Credentials и нажимаем Create. Localshop автоматически сгенерирует ключ:

Пользователи имеющие доступ к самому localshop создаются отдельно. Для кого-то это может показаться неудобным, для себя же я нашёл это весьма удобным решением.
Теперь необходимо настроить pip таким образом, чтобы он позволял использовать наш приватный pypi вместе с основным.
Откроем файл ~/.pypirc расположенный в домашней директории пользователя, из под которого планируется использовать localshop, и приведем к примерно такому виду:
Пользователя и пароль для localshop находятся на странице Credentials. Там же можно добавить ключ, если на ранних шагах не добавили.
Теперь можно скачивать и закачивать пакеты через наш приватный сервер:
Но чтобы каждый раз не указывать его, можно назначить его используемым по-умолчанию. Для этого в домашней директории откройте файл: ~/.pip/pip.conf (создайте если его нет), и добавьте следующее:
Где access_key - это Access Key со страницы Credentials, secret_key - secret key с той же страницы.
https://the-bosha.ru/2016/03/21/razvorachivaem-lokalnyiy-pypi-s-localshop/