A instalação do CentOS utilizada para escrever este post é resultado dos procedimentos publicados no post Como criar uma máquina virtual no servidor Xen Centos 5 e instalar o CentOS pela rede aqui mesmo na Compostagem Digital, portanto para ter uma instalação como esta de uma conferida nele.
A versão do Tornado da minha aplicação é a 2.1.1, que possui como pré-requisito o Python 2.6, item não disponível no CentOS 5.8 (Final), portanto o primeiro passo é instalar a versão Python requerida pela sua aplicação, eu fiz assim:
Adicionei o repositório EPEL à minha instalação
Em resumo, o Extra Packages for Enterprise Linux (ou EPEL) é um grupo de usuários Fedora com interesse especial que cria, mantém e gerencia um conjunto de pacotes adicionais de alta qualidade para “Enterprise Linux”, que pode ser usado no Red Hat Enterprise Linux (RHEL) e CentOS.
Adicionei o repositório EPEL à minha instalação CentOS com o seguinte comando:
rpm -ivh http://epel.gtdinternet.com/5/i386/epel-release-5-4.noarch.rpm
Opa!!! O comando acima falhou? Pode ser porque o pacote do EPEL tenha sido atualizado, caso tenha problemas, verifique ou baixe o arquivo no link http://epel.gtdinternet.com/5/i386/repoview/epel-release.html
Se não falhou, algo como o conteúdo abaixo deve ter sido exibido no seu terminal:
Obtendo http://epel.gtdinternet.com/5/i386/epel-release-5-4.noarch.rpm aviso: /var/tmp/rpm-xfer.JEimUb: Cabeçalho V3 assinatura DSA: NOKEY, key ID 217521f6 Preparando... ########################################### [100%] 1:epel-release ########################################### [100%]
Ok, tu já deves estar ansioso para instalar o Python 2.6 ou talvez não, mas eu já estou…
Segue o comando:
yum install python26
Se tudo correr bem, você deve estar visualizando algo como a tela a seguir:
Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile * base: centos.pop.com.br * epel: mirror.cogentco.com * extras: centos.pop.com.br * updates: centos.pop.com.br Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package python26.i386 0:2.6.8-1.el5 set to be updated --> Processing Dependency: libpython2.6.so.1.0 for package: python26 --> Processing Dependency: libffi.so.5 for package: python26 --> Running transaction check ---> Package libffi.i386 0:3.0.5-1.el5 set to be updated ---> Package python26-libs.i386 0:2.6.8-1.el5 set to be updated --> Finished Dependency Resolution Dependencies Resolved ============================================================================================================ Package Arch Version Repository Size ============================================================================================================ Installing: python26 i386 2.6.8-1.el5 epel 6.5 M Installing for dependencies: libffi i386 3.0.5-1.el5 epel 21 k python26-libs i386 2.6.8-1.el5 epel 670 k Transaction Summary ============================================================================================================ Install 3 Package(s) Upgrade 0 Package(s) Total download size: 7.2 M Is this ok [y/N]: y
Experimente responder “N” na pergunta acima pra tu ver onde vais chegar … lol !!! A lugar nenhum é claro e sinceramente, se respondeu “N” tu precisas confiar mais naquilo que faz … 🙂
Brincadeiras a parte, responda “y” para prosseguir com a instalação e uma “coisa” como esta abaixo deve ser exibida:
Downloading Packages: (1/3): libffi-3.0.5-1.el5.i386.rpm | 21 kB 00:00 (2/3): python26-libs-2.6.8-1.el5.i386.rpm | 670 kB 00:01 (3/3): python26-2.6.8-1.el5.i386.rpm | 6.5 MB 00:31 ------------------------------------------------------------------------------------------------------------ Total 212 kB/s | 7.2 MB 00:34 aviso: rpmts_HdrFromFdno: Cabeçalho V4 assinatura DSA: NOKEY, key ID 217521f6 epel/gpgkey | 1.7 kB 00:00 Importing GPG key 0x217521F6 "Fedora EPEL " from /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL Is this ok [y/N]: y
Quantas perguntas, isto é Linux, sempre pergunta ao seu mestre (root) se pode ou não fazer algo.
Aqui o Yum está avisando que o “hash” de identificação dos pacotes para “Fedora EPEL” não está “instalado”, responda “y” para importar a GPG Key para concluir a instalação.
Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : libffi 1/3 Installing : python26 2/3 Installing : python26-libs 3/3 Installed: python26.i386 0:2.6.8-1.el5 Dependency Installed: libffi.i386 0:3.0.5-1.el5 python26-libs.i386 0:2.6.8-1.el5 Complete!
Voilá, “Complete!” é uma boa resposta. Coisa linda!!!
Faça um teste do Python 2.6, simples assim, execute:
python26
Confira a versão do Python:
Python 2.6.8 (unknown, Apr 12 2012, 20:59:00) [GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
E depois faça qualquer “coisa”, só pra ter mais certeza ainda que está tudo bem:
>>> print "Quando escrevi este artigo estava olhando para o mar da janela do QG" Quando escrevi este artigo estava olhando para o mar da janela do QG >>>
Que bom, tudo parece estar bem.
Agora é a vez do Tornado, este é bem “facinho” de fazer.
“Esse Python faz coisa!”
Comece baixando a versão Tornado que tu precisas, faça uma visitinha no site do link abaixo e volte pra cá, estou te esperando:
https://github.com/facebook/tornado/downloads
Eu baixei a 2.1.1 pois como dito anteriormente é a versão pré-requisito para minha aplicação, se for baixar a mesma pode usar os comandos que seguem:
cd /usr/local/src/
wget https://github.com/downloads/facebook/tornado/tornado-2.1.1.tar.gz
É possível que tu estejas sem entender o porque do “cd /usr/local/src/”, a resposta é simples: É uma questão de organização, tu podes fazer sob o diretório que desejar.
Enquanto o download do Tornado ocorre, você deve estar visualizando algo como as linhas a seguir:
--2012-06-05 10:47:23-- https://github.com/downloads/facebook/tornado/tornado-2.1.1.tar.gz Resolvendo github.com... 207.97.227.239 A conectar github.com|207.97.227.239|:443... conectado! HTTP requisição enviada, aguardando resposta... 302 Found Localização: http://cloud.github.com/downloads/facebook/tornado/tornado-2.1.1.tar.gz [seguinte] --2012-06-05 10:47:24-- http://cloud.github.com/downloads/facebook/tornado/tornado-2.1.1.tar.gz Resolvendo cloud.github.com... 205.251.223.23, 205.251.223.194, 205.251.223.154, ... A conectar cloud.github.com|205.251.223.23|:80... conectado! HTTP requisição enviada, aguardando resposta... 200 OK Tamanho: 318796 (311K) [application/gzip] A gravar em: 'tornado-2.1.1.tar.gz' 100%[==================================================================>] 318.796 304K/s em 1,0s 2012-06-05 10:47:25 (304 KB/s) - 'tornado-2.1.1.tar.gz' gravado [318796/318796]
Terminado o download, descompacte o arquivo tarball do Tornado:
tar zxvf tornado-2.1.1.tar.gz
Entre na pasta que tu acabou de descompactar:
cd tornado-2.1.1
E pronto, faça a instalação com o comando a seguir:
python26 setup.py install
Faça um teste bobão, tipo este.
Execute o Python 2.6:
python26
E depois tente fazer um import no Tornado:
>>> import tornado >>>
Se nenhum erro foi mostrado no comando acima, sorria, pois está tudo pronto.
Lembrando que para executar suas aplicações Tornado é necessário usar a versão 2.6 do Python invés da 2.4 e para não quebrar nenhum outro programa da instalação padrão do CentOS resolvendo o problema ajustando links simbólicos, sugiro incluir/alterar o cabeçalho em todos os arquivos .py da sua aplicação Tornado, como segue:
#!/usr/bin/env python26
Após esta instalação, adicionei suporte ao Oracle no Python 2.6, coloquei os procedimentos desta alteração no post Tornado e cx_Oracle no Python 2.6 em CentOS 5 com Oracle Instant Client
Um comentário em “Configurar o CentOS 5 para suporte ao Tornado no Python 2.6”