DevPi Server
1. Установка devpi-server, devpi-web и devpi-client
Выполните установку необходимых компонентов:
pip install devpi-server devpi-web devpi-client
2. Создание секретного файла
Для безопасности создайте секретный файл:
devpi-gen-secret -o ~/.devpi/secretfile
Этот файл нужен для подписи и защиты сессий сервера.
3. Запуск devpi-server с секретным файлом
Запустите сервер, указав путь к секретному файлу, каталог для хранения данных, хост и порт:
devpi-server --secretfile ~/.devpi/secretfile --host 0.0.0.0 --port 3141 --serverdir ~/.devpi/server
4. Настройка запуска devpi-server как systemd сервиса
Создайте systemd юнит-файл /etc/systemd/system/devpi.service со следующим содержимым (замените user на реального системного пользователя, под которым будет работать сервер):
[Unit]
Description=Devpi Server
After=network.target
[Service]
User=user
ExecStart=/usr/local/bin/devpi-server --secretfile /home/user/.devpi/secretfile --host 0.0.0.0 --port 3141 --serverdir /home/user/.devpi/server
Restart=always
[Install]
WantedBy=multi-user.target
Убедитесь, что путь /usr/local/bin/devpi-server соответствует месту установки devpi-server (можно узнать командой which devpi-server).
5. Запуск и автозапуск systemd сервиса
Выполните команды:
sudo systemctl daemon-reload
sudo systemctl start devpi.service
sudo systemctl enable devpi.service
Проверить статус сервиса:
sudo systemctl status devpi.service
6. Настройка devpi-клиента
В другом терминале или на клиентской машине настройте devpi-клиент:
devpi use http://<ваш_сервер>:3141
Просмотрите доступные индексы:
devpi use -l
7. Авторизация и создание пользователей/индексов
Войдите под предустановленным пользователем root (пароль по умолчанию пустой):
devpi login root --password ''
Создайте нового пользователя (например, myuser):
devpi user -c myuser password=123
Войдите под новым пользователем:
devpi login myuser --password 123
Создайте индекс (хранилище пакетов):
devpi index -c myindex
Установите клиент использовать созданный индекс:
devpi use http://<ваш_сервер>:3141/myuser/myindex/
8. Получение API-ключа
Для автоматизации загрузок можно получить api_key пользователя:
devpi user myuser
В выводе ищите строку api_key, можно использовать его вместо пароля.
9. Загрузка пакетов в локальный репозиторий
Поместите все скачанные или собственные пакеты (.whl, .tar.gz) в одну папку.
Загрузите пакеты в индекс:
devpi upload /путь/к/папке/*
10. Использование пакетов из локального репозитория
Устанавливайте пакеты через pip, указывая локальный сервер:
pip install --index-url http://<ваш_сервер>:3141/myuser/myindex/ название_пакета --trusted-host <ваш_сервер>
11. Дополнительные рекомендации
- Для реального окружения включайте HTTPS.
- Управляйте пользователями и паролями для безопасности.
- Логи сервера и данные хранятся в папке, указанной в
--serverdir. - Можно настроить зеркалирование PyPi для ускорения и экономии трафика.
HTTPS:
location /devpi/ {
proxy_pass http://127.0.0.1:3141/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
proxy_set_header X-Forwarded-Proto $scheme;
}