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

Como instalar o nodeJs no Ubuntu

Estou a algum tempo estudando e desenvolvendo algumas coisas com Node.js aqui no iG, resolvi compartilhar com vocês a configuração e instalação dos pacotes do Node no Ubuntu.

Instalando o NodeJS com git

Agora o NodeJS tem um pacote para instalação via apt-get, então não é necessário realizar o processo por Git (mas ainda funciona).

Para instalar o último pacote que está no git, você precisará de alguns pacotes. Se eles não estiverem instalados instale:

sudo apt-get install g++ curl libssl-dev apache2-utils
sudo apt-get install git-core

Agora vamos fazer o clone do Node para instalação:

git clone git://github.com/ry/node.git
cd node
./configure
make
sudo make install

Instalando o NodeJS com o gerenciador de pacote Ubuntu

Agora o NodeJS tem um pacote no Ubuntu, então não é necessário fazer o processo anterior (baixar o pacote do Git e instalar), o processo ficou mais simples:

sudo apt-get install nodejs node

Atenção: se você precisa de alguma versão específica do Node, precisa instalar através do processo de pegar do repositório.

Com isso o node vai ser instalado no seu Ubuntu, você pode verificar a instalação digitando:

node --version

 

Instalando o NPM

O NPM é um gerenciador de pacotes para o Node, sua instalação é bastante simples:

curl http://npmjs.org/install.sh | sh

E para instalar um pacote com o npm você só precisa digitar no terminal "npm nome_do_pacote install", no exemplo abaixo irei instalar o express:

npm install express

Para fazer seu nodejs funcionar com o MongoDB estou usando o Mongoose, a instação também é com o npm:

 

npm install mongoose

Pronto, agora você tem o NodeJS rodando, dúvidas e sugestões nos comentários! 🙂

Upgrade Ubuntu – The following packages have been kept back

Quando fui realizar as últimas atualizações do Ubuntu Server do And After através do sudo apt-get upgrade recebi a seguinte mensagem:

The following packages have been kept back

Fui pesquisar e descobri que um pacote pode retornar se ele for fazer alguma atualização do sistema, e era exatamente o que estava acontecendo.

Gerei um backup do sistema (recomendo que tu faça isso antes de cada atualização que tem alguma chande de dar problema) e para forçar a atualização dos pacotes que alterar o sistema utilize o aptitude no lugar do apt-get, o comando vai ficar assim:

sudo aptitude dist-upgrade

Pronto, Ubuntu Server com todos os pacotes atualizados e nada quebrado. 🙂