Introdução
O repositório pypi, é conhecido entre seus usuários por ficar varias vezes e muito tempo indisponível. Para solucionar este problema, foi criado este artigo.Escopo
- Debian Linux Like ou Red Hat Linux Like
- Python-2.7
- devpi-server
- devpi-web
- devpi-client
- nginx
- supervisor
Requisitos
Red-Hat Like:# yum groupinstall "Development tools"
# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
Debian Like:
# aptitude install build-essential zlib1g-dev zlibc libncurses5-dev libsqlite0-dev libreadline-dev tk-dev
Python-2.7:
- Brito: Instalar várias versões de Python sobre GNU/Linux.
- use './configure --prefix=/opt/env-buildout/Python-2.7';
- use o 'make && make altinstall' , para instalar o Python-2.7;
- não esqueça de instalar o setuptools;
- #/opt/env-buildout/Python-2.7/bin/easy_install virtualenv;
Configuração
Partido do pressuposto que o sistema operacional Linux, esteja completamente configurado e funcional, dividimos a configuração em 5 etapas:- devpi-server
- devpi-web
- nginx
- supervisor
- cliente
devpi-server
Para iniciá-lo em foreground, execute:
- #virtualenv-2.7 /opt/env-buildout/prod/devpi-server/py27
- #/opt/env-buildout/prod/devpi-server/py27/bin/activate
- #pip install -qU devpi-server
- #devpi-server --version
#devpi-serverPara iniciá-lo em background, execute:
#devpi-server --startPara verificação de status, execute:
#devpi-server --statusPara finalizá-lo, execute:
#devpi-server --stopIniciá-lo com acesso remoto e diretório para armazenamento, execute:
#devpi-server --port 3141 --host 0.0.0.0 --serverdir=/storage/devpi/
devpi-web
Iniciá-lo em modo web predefinindo o diretório para armazenamento, execute:
- #source /opt/env-buildout/prod/devpi-server/py27/bin/activate
- #pip install -qU devpi-web
#devpi-server --port 3141 --host 0.0.0.0 --serverdir=/storage/devpi/A partir deste ponto poderá ser testado na URL definida, em qualquer navegador.
http://localhost:3141
http://192.168.25.224:3141
http://mirror.incolume.com.br:3141
nginx
- # virtualenv-2.7 /opt/env-buildout/prod/nginx/py27
- # cd /opt/env-buildout/prod/nginx/
- # source py27/bin/activate
- # pip install zc.buildout
- # cd /opt/env-buildout/prod/nginx/
- # mkdir -pv cache-buildout/downloads sites-available sites-enabled templates /storage/devpi
- # buildout buildout:develop-eggs-directory=cache-buildout/develop-eggs buildout:download-cache=cache-buildout/downloads buildout:eggs-directory=cache-buildout/eggs buildout:extends-cache=cache-buildout/extends buildout:fake-eggs-directory=cache-buildout/fake-eggs buildout:zope-directory=cache-buildout/zope init
- # wget http://pastebin.com/raw.php?i=gyAE67GC -O buildout-nginx.cfg
- # wget http://pastebin.com/raw.php?i=r1ae5LeY -O sites-available/devpi.conf.in
- # wget http://pastebin.com/raw.php?i=VCMw7XYU -O templates/nginx.conf.in
- # wget http://pastebin.com/raw.php?i=L0q7kriY -O templates/nginx-ctl.in
- # ./bin/buildout -vNc buildout-nginx.cfg
- # ./bin/buildout -vNc buildout-nginx.cfg
supervisor
- # virtualenv-2.7 /opt/env-buildout/prod/supervisor/py27
- # cd /opt/env-buildout/prod/supervisor/
- # mkdir -pv cache-buildout/downloads
- # source py27/bin/activate
- # pip install zc.buildout
- # wget http://pastebin.com/raw.php?i=uBM0JqMH -O supervisor-nginx.cfg
- # buildout buildout:develop-eggs-directory=cache-buildout/develop-eggs buildout:download-cache=cache-buildout/downloads buildout:eggs-directory=cache-buildout/eggs buildout:extends-cache=cache-buildout/extends buildout:fake-eggs-directory=cache-buildout/fake-eggs buildout:zope-directory=cache-buildout/zope init
- # ./bin/buildout -vNc supervisor-nginx.cfg
- # ./bin/buildout -Nc supervisor-nginx.cfg
- # ./bin/supervisord
- #sudo wget http://pastebin.com/raw.php?i=qwFyVxW7 -O /etc/init.d/supervisord.sh
Para iniciá-lo, execute:
#./bin/supervisord
Para verificação de status, execute:
#./bin/supervisorctl status
Para finalizá-lo, execute:
#./bin/supervisorctl shutdown
Cliente
Para o cliente há duas formas de realizar a configuração.Configuração manual dos cliente
Para configuração manual dos clientes há dois modos distintos:- Altere os arquivos sugeridos no artigo Brito:Configuração personalizada para repositórios pypi; ou
- inserir a diretiva (
index = http://mirror.incolume.com.br/root/pypi/+simple/
) nos arquivos de buildout, inserir o index nos pip e easey_install (ex.: pip install -i http://mirror.incolume.com.br/root/pypi/+simple/)
Configuração automática dos cliente
- # virtualenv-2.7 /tmp/py27
- # cd /tmp/py27
- # source py27/bin/activate
- # pip install --pre -Uq devpi-client
- #
- # devpi use intranet/dev --always-set-cfg=yes
Comentários