Tips

Dicas rápidas.

Hospedagem de aplicativos na nuvem. Parte 1: Openshift

Depois de alguns amigos desenvolvedores e/ou empreendedores com suas startups e projetos pessoais, entrarem em contato pedindo ajuda para hospedar suas aplicações com qualidade e baixo custo, resolvi criar dois posts apresentando as duas soluções que costumo indicar, como são duas soluções bem distintas, resolvi separar em dois posts para sua startup ou para sua aplicação.

No primeiro post vou falar sobre o  OpenShift, que é  a solução de PaaS Open Source da Red Hat.

Com o OpenShift, o desenvolvedor pode manter o foco no desenvolvimento da aplicação sem se preocupar com a infraestrutura, e realizar seus deploys de forma bem ágil através das ferramentas disponibilizadas. Atualmente a solução está em developer preview, e cada usuário pode hospedar até 3 aplicativos, ou então hospedar um aplicativo e dedicar os recursos computacionais reservados para as outras duas aplicações para uma única aplicação.

Esses recursos são disponibilizados gratuitamente, com isso você pode por exemplo hospedar 3 aplicações na nuvem, em uma plataforma estável e escalável sem custos. Em breve Red Hat irá lançar a versão comercial da plataforma onde o usuário poderá alocar mais recursos, ter apoio técnico da empresa e muitas outras features, até onde eu sei a versão gratuita continuará disponível para aqueles que não precisam de tantos recursos.

O OpenShift, tem suporte nativo a PHP, Java, Ruby, Pyhton, Perl,  Node.js, rails, cakephp, spring framework, django, tomcat, JBoss e algumas aplicações pré-configuradas como wordpress, drupal, magento, redmine e muitas outras…

Agora que já sabemos o que é, algumas das linguagens, frameworks e aplicações suportadas, tá na hora de fazer o deploy.

O primeiro passo é registrar uma conta em openshift.redhat.com

Após o registro instale, caso não tenha, o ruby 1.8.7+ e git

sudo yum install ruby git

Em seguida instale a ferramenta de linha de comando para gerenciar sua conta e apps.

sudo gem install rhc

Agora configure o seu sistema com a sua conta criada, nesse passo basicamente você terá que fornecer o usuário e senha cadastrados, informar a chave publica e escolher um nome que será o sufixo padrão para suas apps.

rhc setup

Crie sua primeira app, exemplo:

rhc app create -a beta -t php-5.3

Como resultado do comando acima, foi gerada uma URL com o nome da aplicação escolhida que foi beta e com o sufixo escolhido durante o setup que foi dbruno. Espere alguns segundos pela propagação do DNS e acesse a URL gerada no navegador e verá uma página modelo do OpenShift. No diretório onde foi executado o comando para criar a app também foi criado um diretório com o código fonte dessa página modelo, que você pode editar ou adicionar o código fonte a sua app, e deve usar o git para enviar suas modificações para o servidor.

Exemplo da URL gerada:

beta-dbruno.rhcloud.com

Provavelmente você não vai querer utilizar essa URL para a sua app, para isso crie uma entrada do tipo CNAME no registro de DNS do seu domínio apontando para a URL gerada.

O OpenShift tem um recurso chamado cartridge onde são disponibilizados serviços como banco de dados (mysql, postgresql, mongodb) cron, integração continua com jenkins e etc.
Para adicionar um banco MySQL (v. 5.1):

rhc app cartridge add -a beta -c mysql-5.1

Lembrando que beta é o nome da app criada durante esse post e mysql-5.1 é o banco e a versão disponibilizada. No output do comando de criação do mysql será informado o nome do banco, usuário, senha e uma url para o phpmyadmin.

No OpenShift é possível também ter acesso SSH e fazer deploy de aplicações escritas em linguagens que não foram mencionadas neste post, segundo o Fabiano Franz, que é um dos desenvolvedores da plataforma, algumas pessoas veem fazendo deploy de apps em C, C++, LISP, como nos exemplos em:

http://lisp2-atgreen.rhcloud.com/
http://register-elasticcobol.rhcloud.com/register/register.html

No repositório https://github.com/openshift existem algumas aplicações pré-configuradas para serem subidas para a nuvem.

Para maiores informações, recomendo ler a documentação do projeto https://openshift.redhat.com/community/developers/, e acompanhar o twitter @openshift para ficar por dentro das novidades.

No próximo post irei apresentar uma solução também eficiente e de baixo custo, usando o IaaS da Amazon Web Services.

Problema com YUM: No module named yum

Esse problema ocorreu após uma manutenção não programada pela equipe técnica da empresa onde esse host está alocado. Qualquer interação com o YUM mostrava o erro abaixo:

required to run yum. The error leading to this problem was:

   No module named yum

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.4.3 (#1, Sep 21 2011, 19:55:41)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-51)]

If you cannot solve this problem yourself, please go to
the yum faq at:

http://wiki.linux.duke.edu/YumFaq

O Python estava funcionando sem problemas e não havia sido alterado recentemente, assim como o pacote do YUM.

A forma que encontrei para resolver esse problema foi reinstalando o pacote do YUM.

Baixei a versão do YUM direto do repositório:

wget http://mirror.centos.org/centos/5/os/i386/CentOS/\
yum-3.2.22-39.el5.centos.noarch.rpm

E atualizei:

rpm -Uvh yum-3.2.22-39.el5.centos.noarch.rpm

Após a atualização o YUM voltou a funcionar normalmente.

SO: CentOS
Versão: 5.7
Arch: x86_64

Configurando o Varnish no CentOS 6 para múltiplos sites

Abaixo segue um exemplo de configuração do Varnish, para quem trabalha com multiplos sites ou tem outros endereços IP no servidor.

Primeiro altere o VirtualHost para a porta 8080, por exemplo:

<VirtualHost X.X.X.X:8080>
        ServerName www.dominio.com.br
        DocumentRoot /path/
        ---------
</VirtualHost>

No Varnish, crie um novo backend, editando o arquivo /etc/varnish/default.vcl

backend virtualhosts {
  .host = "X.X.X.X";
  .port = "8080";
}

Adicione a vcl_recv:

if (server.ip == "X.X.X.X")
  {
    set req.backend = virtualhosts;
  }
  else
  {
    set req.backend = default;
  }
}

Nos exemplos acima, X.X.X.X é o endereço IP do seu servidor.

Como utilizar DeltaRPM no CentOS 5.x

Há alguns posts atrás, escrevi sobre como instalar e utilizar o plugin yum-presto no Fedora 11 e que atualmente já vem no Fedora 12, porém ainda não é utilizado no CentOS.

* Instale o deltarpm e o yum-presto

wget http://www.lesbg.com/jdieter/presto/yum-presto-VERSION.noarch.rpm
wget http://www.lesbg.com/jdieter/presto/deltarpm-VERSION.ARCH.rpm
rpm -Uvh deltarpm-VERSION.ARCH.rpm yum-presto-VERSION.noarch.rpm

* Caso você tenha feito a instalação mínima do sistema, segue abaixo a lista de dependências:

perl(Digest::MD5)
perl(Fcntl)
perl(Net::Domain)
perl(POSIX)
perl(Socket)
perl(bytes)
perl(strict)

Que podem ser encontradas nos seguintes repositórios:
i386: ftp://fr.rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/
x86_64: ftp://fr.rpmfind.net/linux/dag/redhat/el5/en/x86_64/RPMS.dag/

* Agora configure o repositório. crie o arquivo /etc/yum.repos.d/presto-centos.repo com o seguinte conteúdo:

[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
deltaurl=http://lesloueizeh.com/centos5/$basearch/updates
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

Pronto, agora é fazer updates consumindo muito menos banda e economizando tempo.

OBS: O repositório não é oficial do CentOS.

Dicas para o Exim

O Exim é um MTA desenvolvido pela Universidade de Cambridge e bastante popular por ser utilizado no CPanel e recentemente veio como padrão no CentOS 5.3 e, se não me engano, no Debian também.

E abaixo alguns comandos que podem auxiliar no dia-a-dia de quem trabalhar com esse MTA.

  • Verificar quantas mensagens estão na fila:
exim -bpc
  • Verificar as os ids das mensagens na fila:
exim -bp
  • Forçar o envio de uma mensagem na fila:
exim -M [ID da mensagem]
  • Visualizar o corpo de uma mensagem na fila:
exim -Mvb [ID da mensagem]
  • Visualizar o cabeçalho de uma mensagem na fila:
exim -Mvh [ID da mensagem]
  • Forçar o envio das mensagens na fila:
exim -qff
  • Remover mensagem da fila:
exim -Mrm [ID da mensagem]
  • Gerando estatísticas da fila, por domínio:
exim -bp | exiqsumm

Gerando estatísticas com base no log:

  • Gerando estatísticas em html:
eximstats -html=exim_stat.html exim_mainlog
  • Gerando estatísticas em um arquivo de texto:
eximstats -txt=exim_stat.txt exim_mainlog
  • Gerando estatísticas em uma planilha do OpenOffice Calc ou MS Excel:
eximstats -xls=exim_stat.xls exim_mainlog

O exim_mainlog é o nome do arquivo de log utilizado, o nome e path do arquivo podem variar conforme a sua configuração.

Agilizando updates no Fedora com yum-presto.

Recentemente quando fui atualizar meu Fedora 11 me deparei com 404M de atualizações pendentes, revolvi baixar tudo e instalar, mas que num próximo update iria utilizar o yum-presto.  O yum-presto é um plugin para o YUM que utiliza Delta RPMS, ou seja, invés de baixar o pacote RPM completo, o yum-presto baixa somente o diff das atualizações, com isso tendo um ganho em torno de 60% – 80% nos downloads das atualizações.

Algumas semanas depois fui verificar os updates pendentes e o total contabilizavam 119M, então foi quando fiz a instalação do yum-presto, a sua instalação e utilização no Fedora 11 é muito simples.

Para realizar a instalação basta executar:

yum install yum-presto

Para ajudar nos downloads utilizei também o yum-plugin-fastestmirror que procurar por mirros mais próximos e mais rápidos.

yum install yum-plugin-fastestmirror

Após a instalação dos plugins limpei o cache do YUM para forçar a checagem com o yum-presto e o yum-plugin-fastmirror.

yum clean all

Após a instalação do yum-presto, o download dos updates caiu de 119M para 20M.

O yum-presto é nativo somente no Fedora 11, para utilizar no Fedora 10 o procedimento de instalação é o mesmo, porém deverá ser editado o arquivo /etc/yum.repos.d/fedora-updates.repo e alterar o mirrotlist para:

mirrorlist=http://presto-mirrors.anmar.eu.org/mirrorlist?repo=updates-released-f$releasever&arch=$basearch

Lançamento do Fedora 12 Alpha

Fedora 12 “Constantine” Alpha esta disponível!

Deseja ver o que o Fedora promete? Pode baixar no link abaixo:
http://www.fedoraproject.org/pt_BR/get-prerelease

Um ‘Alpha” contém as funcionalidades que o Fedora 12 terá, uma vez liberado, de maneira que qualquer um pode ajudar no teste e reporte de bug, para então lançarmos o Beta.

A versão Final do Fedora 12 está programada para ser lançada em novembro.

Precisamos de ajuda para fazer o Fedora cada vez melhor, sendo assim não vai tomar muito do seu tempo, baixar o Fedora LiveCD e testá-lo em sua máquina, reportando as possíveis falhas ou novidades. Acredite! Isso será de extrema ajuda.

Os bugs podem ser reportados em: https://bugzilla.redhat.com ou em nosso fórum.

O que há de novo no Fedora 12?

* Suporte de Webcam melhorado.
* Empathy no lugar do Pidgin como cliente de mensagens instantâneas por padrão.
* GNOME 2.27.90 beta e KDE 4.3
* Network Manager Mobile.
* Codecs Livres Melhorados, com “Thusnelda” como o codec do Theora (OGG).
* Melhoras no PackageKit, com plugins para o navegador e linha de comando.
* Melhoras no PulseAudio
* Melhoras no controle de energía e utilização de CPU, disco rígido e de Rede.

E para os desenvolvedores, o que tem?

* NetBeans 6.7
* PHP 5.3
* Eclipse 3.5.0
* SystemTap (Melhor documentação)

E o que mais?

* Melhorias no suporte a IPv6 no Network Manager
* Automatic Bug Reporting Tool, que ajuda a reportar problemas automaticamente ao Fedora
* RPM XZ, cambiando de compressor Gzip a XZ(LZMA), que permite termos RPMs menores
* x86 optimizado para Atom, especial para Netbooks!
* Soporte ext4 para GRUB.
* Bluetooth por demanda
* Melhoria na Virtualização com KVM

Deseja mais detalhes? Consulte aqui a lista: http://fedoraproject.org/wiki/Releases/12/FeatureList

Fonte: Projeto Fedora Brasil

Instalando Google Chrome no Fedora 11

O Chrome é o navegador open-source desenvolvido pelo Google, que a principio foi lançado somente para Windows, e atualmente encontra-se na versão beta para Gnu/Linux e Mac OS X.

Recentemente foram liberados pacotes rpm e deb do Chromium, desenvolvido a partir da base do Chrome. Porém o rpm lançado não ficou nenhum um pouco legal, e com base no tarball lançado foi feito um outro rpm que funciona muito bem. Há duas formas para realizar a instalação, baixando direto o rpm ou configurando um repositório não oficial e instalar via YUM.

Instalando utilizando o YUM

Os pacotes estão disponíveis, no endereço http://spot.fedorapeople.org/chromium/ .

Realize o download do V8 e do Chromium.

wget http://spot.fedorapeople.org/chromium/F11/v8-1.2.12-1.20090708svn2391.fc11.i586.rpm
wget http://spot.fedorapeople.org/chromium/F11/chromium-3.0.193.0-0.1.20090708svn20141.fc11.i586.rpm

Faça a instalação dos dois pacotes.

rpm -ivh v8-1.2.12-1.20090708svn2391.fc11.i586.rpm chromium-3.0.193.0-0.1.20090708svn20141.fc11.i586.rpm

Configurando o repositório para instalação pelo YUM

Crie o arquivo chromium.repo em /etc/yum.repos.d

vi /etc/yum.repos.d/chromium.repo

Com a configuração abaixo

[chromium]
name=Chromium Test Packages
baseurl=http://spot.fedorapeople.org/chromium/F$releasever/
enabled=1
gpgcheck=0

Instalando

yum install chromium

Pronto, o yum vai fazer todo o trabalho de resolver as dependências, baixar, instalar e futuramente atualizar.

Esse post foi escrito utilizando o Chromium ;)

Mais informações:
Chromium
Google Chrome

Dbusbird para o Songbird 1.1.2

Recentemente realizei o update do Songbird para a versão 1.1.2 e como geralmente acontece com o Firefox, Thunderbird, alguns plugins não acompanham a versão e acabam causando alguns probleminhas chatos, e foi justamente o que aconteceu com o plugin Dbusbird.

Resolvi ir atrás do source do plugin e tentar resolver o problema, o inf3rno que é o criador do plugin informou que ultimamente anda bastante ocupado e por isso ainda não havia enviado a atualização, e no release note um usuário enviou uma solução bem prática que é:

1. descompactar o arquivo dbusbird_x86.xpi

unzip dbusbird_x86.xpi

2. Editar o arquivo install.rdf e realizar a seguinte alteração:

&lt;em:maxversion&gt;1.1.2&lt;/em:maxversion&gt;

3. Compacte novamente o arquivo e altere o nome:

zip -r dbusbird_x86.zip *
mv dbusbird_x86.zip dbusbird_x86.xpi

Depois dos procedimentos, basta instalar o plugin que estará funcionando! ;)

Quem não quiser ter o trabalho, eu disponibilizei o plugin modificado para download

Headphone no Toshiba Satellite A135 + Fedora 10

Quem tem um Toshiba Satellite da série A135 e o utiliza com Linux, acho que enfrentou o mesmo problema, de colocar o headphone na entrada frontal e simplesmente não acontecer nada.

Pesquisei em vários fóruns, e em muitos casos a solução indicada era recompilar o driver alsa, mas no meu caso eu já tinha o driver alsa instalado do repositório e não estava nem um pouco afim de ter que reinventar a roda para poder ouvir música com um pouco de privacidade então fui juntando várias informações e cheguei a conclusão de que não era necessário fazer a recompilação do driver, mas somente realizar a configuração que indicavam após todo o processo, mas no Fedora há algumas diferenças nos arquivos de configuração mas é muito simples, basta definir a seguinte configuração:

options snd-hda-intel  model=lenovo

no final do arquivo /etc/modprobe.d/modprobe.conf.dist, e pronto!