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

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. 🙂

Terminal SSH no Windows

O And After roda em um Ubuntu Server, administrado por SSH – no linux eu fazia essa conexão pelo terminal SSH, mas como também uso Windows fui pesquisar softwares que permitissem um terminal SSH no Windows.

O mais simples que encontrei foi o PuTTy, que é gratuito. Você pode fazer o download dele aqui.

Não precisa instalação nenhuma e a tela do programa é assim:

PuTTy - SSH para Windows

A única configuração necessária é digitar o local do servidor em "Hostname / IP" e clicar em Open, o PuTTy vai abrir o terminal para você logar no servidor.

Esse é um programa útil para ter no seu celular ou pendrive de estimação (aquele que você leva no bolso), caso você precise em algum lugar qualquer dar manutenção em algum servidor Linux… 🙂

Backup do MySQL com shell script

Desde a migração do And After (final de dez 2010) para sua nova versão eu não tinha nenhuma rotina de backup do MySQL rodando – e já aprendi que nunca nesta vida devemos ficar sem backup do banco de dados de nossos projetos ou clientes.

Como eu sou "dummie" no Linux (veja você que cheguei a escrever como ver o IP no Linux) eu não sabia como fazer o agendamento de tarefas até descobrir como usar o crontab para agendar rotinas e executar shell scripts.

Ontem pesquisei um pouco sobre a melhor forma de executar um backup do MySQL e as recomendações em fóruns era de que a forma mais correta de fazer um backup sem a necessidade de derrubar o serviço é usando o mysqldump.

O MySQL dump

O mysqldump acessa sua base de dados como qualqer aplicação, por isso não é necessário derrubar o serviço antes do backup. Se você optar pela cópia de arquivos do sistema ao invés do dump (e não derrubar o mysql antes do backup) pode acontecer problema nos arquivos caso sua base seja alterada durante o backup.

O comando para gerar um .sql usando o  mysqdump é recebe algumas variáveis, um exemplo do comando (as variáveis estão explicadas abaixo do comando):

mysqldump -h localhost -u usuario -pSUASENHA nomedabase > meubackup.sql

Todos os itens sublinhados são variáveis e você deve alterar de acordo com as configurações do seu servidor.

localhost – o servidor para acessar o banco MySQL

usuario – o nome do usuário do banco

SUASENHA – password do usuário setado na variável acima (repare que não existe espaço entre -p e a senha digitada

nomedabase – nome da base que será exportada

meubackup.sql – nome do arquivo que será salvo (incluir a extensão .sql)

O arquivo gerado irá ser salvo no local em que o comando foi executado, portanto você deve primeiro ir até a pasta onde você quer salvar seu backup (usando o comando cd), por exemplo:

cd /var/backups/mysql

Feito isso você executa o comando mostrado anteriormente e será gerado o arquivo dentro de /var/backups/mysql.

Shell script para fazer o mysqldump

Sabendo os comandos para executar o dump do MySQL tudo o que você precisa agora é passar estes comando para um arquivo .sh (shell script).

Requisitos e/ou configurações

  • Ubuntu Server 10
  • gzip instalado (sudo apt-get install gzip)
  • MySQL rodando (com possibilidade de executar o mysqldump)
  • Usuário/senha com acesso a base mysql

Não estou dizendo que só vai funcionar na versão do SO que estou passando aí, mas como cada versão tem suas peculiaridades a informação pode ser importante para quem tiver problemas. 😉

#/bin/bash
U_PASTA="/var/backup/mysql"
U_DATA=$(/bin/date +%Y%m%d%H%M%S)
U_CAMINHO="backup-$U_DATA.sql"
U_HOST="localhost"
U_USER="root"
U_PASSWORD="password"
U_DATABASE="database"
#
cd $U_PASTA
mysqldump -h $U_HOST -u $U_USER -p$U_PASSWORD $U_DATABASE > $U_CAMINHO
gzip $U_CAMINHO
echo "Backup do MySQL executado"
 

No início do código as definições das variáveis para o comando mysqdump e também é salvo uma variável com informações de data, que é usada para nomear o arquivo sql gerado.

A lógica do código:

  1. Vai para o caminho especificado onde será salva a exportação do banco
  2. Executa o mysqldump com as configurações das variáveis
  3. Compacta o arquivo exportado (gzip, não mantém o arquivo descompactado)

Meu post anterior foi um tutorial sobre como usar crontab, com ele é possível você criar uma rotina que executa o seu shell script e mantém seus dados seguros. Para o And After criei uma tarefa diária, toda a madrugada uma cópia do banco é salva.

Cuidado!

O shell script deste post apenas gera os backups e não trata os backups antigos. Se você fizer a exportação diária do banco e não tratar de alguma forma seus backups consumirão todo o espaço do seu servidor.

Existem exemplos em que o próprio shell script e exclui os arquivos antigos, achei mais prático deixar isso a cargo do logrotate (que é assunto para outro post).