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

Como usar o crontab

Finalmente resolvi pesquisar como funciona o agendamento de tarefas no Linux para eu poder agendar o backup do MySQL (uso Ubuntu Server) e o funcionamento do crontab é bem mais simples do que eu pensava.

Como funciona o crontab

O funcionamento do crontab é simples: você tem um arquivo de texto em que cada linha representa uma tarefa agendada, cada linha é composta de 6 variáveis separadas por vírgula, explicadas abaixo.

O primeiro passo é no terminal digitar:

crontab -e

Este comando vai abrir seu arquivo de crontab ou criar um arquivo caso ele ainda não exista. No editor é só inserir uma linha com a rotina que você quer agendar, seguindo a estrutura abaixo abaixo:

*     *     *   *    *        comando a ser executaco
-     -     -   -    -
|     |     |   |    |
|     |     |   |    +----- dia da semana (0 - 6) (Domingo=0)
|     |     |   +------- mês (1 - 12)
|     |     +--------- dia do mês (1 - 31)
|     +----------- hora (0 - 23)
+------------- minuto (0 - 59)

O * representa "todos", por exemplo:

0 4 * * 0 rm /home/gserrano/backup/*

O exemplo acima remove todos os arquivos da pasta /home/gserrano/backup todo o domingo as 4 AM. Para a execução de comandos completos você pode usar shellscript, para isso o seu comando ficaria

0 4 * * 0 sh /home/exemplo.hs

O exemplo acima executa o "exemplo.sh" também as 4 da madrugada aos domingos.

Dicas

Você pode usar vírgula para executar um comando mais de uma vez. O exemplo abaixo vai executar o comando as 4 AM de domingo e quinta-feira:

0 4 * * 0,4 sh /home/exemplo.hs

Você pode usar / para indicar uma repetição dentro do intervalo que vem depois da barra. O exemplo abaixo vai executar o comando a cada 10 minutos, todo o dia:

/10 * * * * sh /home/exemplo.hs

Atenção:  o uso do / para intervalo não é suportado em todos os sistemas.

 

Tentei ser o mais direto e conciso neste pequeno tutorial, se você tiver dúvidas ou quiser corrigir ou acrescentar algo use os comentários.

Referências