Como instalar o NodeJS v0.4.x no Ubuntu 11.10

Primeira Segunda-Feira de 2012 e o campeão aqui toma uma importante decisão: atualizar o Ubuntu no computador do trabalho. Instalei a versão 11.10 e tudo funcionou melhor do que o esperado. Não tinha feito a atualização até agora com medo da performance do Unity, e de problemas de compatibilidade com placa de vídeo.

Se você não precisa de uma versão antiga do NodeJS recomendo que você leia este tutorial de como instalar o NodeJS e npm no Ubuntu

O Ubuntu atualizou uma série de pacotes, dentre ele algumas dependências do NodeJS (e talvez até o próprio node, não tenho certeza). Para rodar o sistema que trabalho aqui no iG, preciso do NodeJS e descobri que devido aos pacotes do npm (nodeJS e npm são cheios de dependências) era necessário a versão antiga do NodeJS (sabia que a 4.7 e 4.8 funcionavam).

Instalando o nodeJS 4.x no Ubuntu 11.10

Depois de quase 2 dias quebrando a cabeça, segue um tutorial do que eu fiz para instalar a versão antiga do nodejs.

O bug

Tentei fazer a instalação normalmente, e descobri que com as últimas versões da biblioteca openssl (o Ubuntu 11 pega essas versões) as versões antigas do NodeJS (4.x) não compilam, pois o openssl parou de dar suporte a não-sei-o-que que o NodeJS utilizava.

 

A solução

Depois de um dia inteiro tentando rodar o sistema na última versão do NodeJS (6) ou tentando instalar a versão antiga, finalmente cheguei na conclusão acima, então a solução era óbvia, você precisa:

  1. Instalar uma versão antiga do openssl (consegui compilar a versão 4.7 do NodeJS com a OpenSSL 1.0.0a)
  2. Instalar a versão desejada do NodeJS (4.7 no meu caso)
  3. Instalar a versão antiga do npm (2.0)

Descompactando arquivos gz

Já expliquei no O Desenvolvedor como automatizar backup do MySQL com shellscript, agora vou ensinar como descompactar arquivos de .gz, extensão bastante comum por ser utilizada na compactação de arquivos (e backups).

Seguem algumas formas de descompactar estes arquivos por linha de comando – pode ser usado em shellscript:

Gunzip

gunzip arquivo.gz

Gzip

gzip -d file.gz

Tar

Para extensões .tar.gz, use:

tar -zxvf file.tar.gz

 

Conhece outras formas? Compartilhe nos comentários!

Listando o tamanho de pastas no Ubuntu

Estava fazendo monitoramento do servidor do nosso servidor (EC2 da Amazon) e como ainda não configurei o logrotate para todos logs é necessário tomar cuidado para evitar logs monstros, a melhor forma de fazer isso é monitorar os tamanhos de diretórios.

Ver o tamanho de diretórios por terminal no Ubuntu

O primeiro passo é navegar até a pasta "pai" dos diretórios que você quer verificar o tamanho, chegando neste diretório digite o seguinte comando:

du -kh --max-depth=1

O resultado do comando vai listar todas as subpastas com o tamanho formatado em K, M, ou G, por exemplo:

0 ./lock
17M ./log
48K ./run
4.0K ./opt
860K ./backups
199M ./cache
206M ./lib
28K ./spool
4.0K ./crash
2.2G ./www
4.0K ./mail
4.0K ./tmp
4.0K ./local
2.6G .

Com essas informações consigo monitorar quando algum log está crescendo muito rapidamente.

Ps: não deixem de utilizar o logrotate ou algum outro sistema automatizado para limpeza / manutenção de logs!

Alterando a Timezone do Ubuntu pelo terminal

Este final de semana migrei o And After, O Desenvolvedor, Eu Compraria e Eu Compraria! Shop do meu servidor "cloud" da Locaweb para o EC2 da Amazon, um cloud de verdade (está saindo um post com dicas para uma migração bem sucedida).

Nossa loja de produtos geeks tem um sistema que depende do horário do servidor para exibição específica de produtos, e ontem a @biab notou um comportamento estranho:, eu havia esquecido de configurar a data e hora do servido para GMT -3 (horário de Brasília).

A troca do timezone é bem simples, seguindo minhas experiências com configuração de servidor no Ubuntu (instalando o memcache e instalando o nodeJs), resolvi criar um post com essa informação:

 

Configurando a data e hora do Ubuntu pelo terminal

A informação de qual timezone deve ser usado pelo sistema fica em /etc/timezone, então para editar essa informação digite no terminal:

sudo vi /etc/timezone

É um arquivo de texto que contém a chave de qual 

timezone será utilizada pelo Ubuntu, apague o que estiver lá e digite o 

timezone que você quiser. No meu caso (São Paulo) o 

timezone é "America/Sao_Paulo" (sem as aspas). Feita a alteração salve o arquivo de texto.

sudo dpkg-reconfigure --frontend noninteractive tzdata

Feito isso seu sistema já estará utilizando o novo timestamp – no meu caso foi necessário reiniciar o Apache para que ele também utilizasse o novo timestamp configurasse, se você tem serviços que dependem da configuração de hora verifique se não é necessário reiniciar para eles atualizarem a hora do sistema.

 

Lista de timestamps para Ubuntu

Para descobrir qual a "string" do seu timestamp digite o comando abaixo:

 ls /usr/share/zoneinfo/

O comando irá listar todas as "areas" de timezone. Um dos itens é America por exemplo, para listar os timestamps da America, incremente o comando acima com:

ls /usr/share/zoneinfo/America

E para buscar por um timestamp específico (por exemplo, "Paulo") digite:

 

ls /usr/share/zoneinfo/America | grep Paulo

Com essas informações você consegue buscar o caminho de qualquer timezone do mundo para inserir no /etc/timezone

 

 

Referência

Ubuntu Time

Instalando e configurando o memcache no Apache

Finalmente consegui resolver o problema de cache do And After, criei um sistema de cache que cacheia partes das páginas dos posts. Como o tutorial de como instalar o NodeJS foi bastante útil para meus colegas aqui no iG, resolvi compartilhar o processo de instalação e configuração do memcached no servidor (Apache rodando no Ubuntu). 

Atenção: o PHP tem duas bibliotecas para trabalhar com memcache: memcache e memcached (veja a diferença entre as duas aqui), este tutorial se refere ao memcached apenas.

 

Instalação dos pacotes necessários

No terminal digite os comandos abaixo para instalar o Memcached e o módulo do PHP para se comunicar com o sistema de cache.

apt-get install php5-dev memcached php-pear php5-memcache

É necessário o php5-dev para execução do comando abaixo, que utiliza PECL (repositório de extensões para o PHP), eu não consegui instalar sem o pacote do php5-dev por isso adicionei ele na lista.

Será necessário fazer o build em um dos pacotes, portanto você precisará ter o pacote abaixo (provavelmente você já tenha ele instalado):

sudo apt-get install build-essential

Agora que você já tem todos os pacotes necessários, vamos para a instalação!

 

Instação do libmemcached

O memcached no PHP tem uma dependência da libmemcached, então precisaremos fazer o build dessa lib que não está no repositório do Ubuntu. No site oficial do memcached baixe a versão que você deseja instalar.

Copie a url e por terminal faça o download (troque a url pela versão que deseja baixar, recomendo a última):

wget http://download.tangent.org/libmemcached-0.37.tar.gz

Descompacte o arquivo que você acabou de baixar (troque o nome do arquivo pela versão que você baixou):

tar -xzf libmemcached-0.37.tar.gz

Acesse a pasta do arquivo descompactado, configure e execute o make e o make install para concluir a instalação da libmemcached. Provavelmente será necessário executar o comando make install com permissão root.

cd libmemcached-0.37
./configure
make
sudo make install

Após executar os comandos acima (eles podem levar um tempinho cada um) a dependência (libnmemcached) deve estar instalada no seu computador, agora é instalar o memcached com o pecl:

pecl install memcached

O pecl não manipula o php.ini para executar a extensão, então você precisa adicionar a linha abaixo ao seu php.ini para que a extensão nova extensão seja carregada.

extension=memcache.so

No Ubuntu o php.ini normalmente fica em /etc/php/apache2/php.ini, se você não sabe onde fica o php.ini no seu Ubuntu pode utilizar o comando abaixo para localizar o arquivo:

find / -name php.ini

 

Agora é só reinicar o seu Apache:

sudo service apache2 restart

 

Pronto, o memcached está instalado e pronto para usar no seu servidor, você está pronto para melhorar a performance das suas aplicações em PHP utilizando o memcache. 😀

Dúvidas, críticas e sugestões nos comentários.

 

Referências

Install php memcached on Ubuntu

How to forge – php memcached