sexta-feira, 25 de julho de 2014

Setup do curso MEAN Workshop - Sessão zero

Finalmente chegou o curso que você estava esperando: Workshop de desenvolvimento com Stack MEAN! Gratuito e cheio de exemplos e exercícios.

São 5 sessões:

  1. C10K: Node.js, o Javascript no lado Servidor;
  2. Banco de dados No SQL com MongoDB;
  3. RESTful Webservices com Express.js;
  4. Criação de páginas dinâmicas com Angular.js;
  5. Exemplo prático.
Antes de começar, tem o "Setup" do curso, mas não se preocupe, pois eu criei tudo o que você vai necessitar!

Há três opções parar você montar seu ambiente:

  1. Usar a IDE em nuvem Cloud9;
  2. Criar uma VM com o template que eu forneci - Vagrantfile;
  3. Instalar tudo em sua própria máquina. 
Vou te ajudar a escolher a maneira mais apropriada para você. 

Sessão 0: Manual de preparação de ambiente


O trabalho Workshop de Desenvolvimento com Stack MEAN de Cleuton Sampaio de Melo Jr está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional.

Isso inclui: Textos, páginas, gráficos e código-fonte.

Para poder acompanhar este curso, é necessário que você prepare um ambiente de desenvolvimento. A plataforma escolhida é o Linux, e nós usamos o Ubuntu, versão 14.04.

Você pode baixar o Ubuntu AQUI.

Além do Ubuntu, nós usamos:

A instalação é de média complexidade, ou seja, você tem toda a condição de fazer sem problemas. Para isto, basta seguir estas orientações.

Se quiser poupar trabalho, eu incluí um Vagrant file, que inicia e provisiona uma máquina Ubuntu para você usar.

Mesmo que você prefira usar o Vagrant file e criar uma VM pronta, recomendo que você leia atentamente estas instruções. Existem dicas de testes e configurações importantes, por exemplo, sobre o serviço “mongod”, do MongoDB.

Para acompanhar o curso


Você precisa acessar o material, que estará disponível dentro do site do Bom Programador:


E você precisa baixar os exemplos que estão no Github:

Se você quiser, poderá clonar o repositório do Github, criando um repositório Git local, ou então poderá baixar um ZIP contendo tudo.

Depois, você vai precisar de uma estação de trabalho configurada com a plataforma que já falei. Se preferir, poderá instalar tudo manualmente, ou então, poderá usar o Vagrantfile, que está no repositório do Github, para criar e provisionar uma VM para você.

Usar tudo na nuvem - Cloud9

Nada é instalado em sua estação de trabalho, mas você precisará de acesso liberado ao Cloud9.

A IDE Cloud9 é um ambiente completo para desenvolver software em nuvem. Eu já postei um artigo sobre ela, e é extremamente vantajoso utilizá-la.

Se você quiser usar, acesse o side da IDE e faça logon. Se não tiver uma conta, crie-a.

Crie uma nova workspace, selecionando "custom" como a plataforma de software. Isto criará uma workspace vazia.

Abra uma janela terminal (menu "Window / New terminal", ou ALT-T) e instale o express-generator:

sudo npm install -g express-generator

O MongoDB já está instalado. Para usá-lo, digite os comandos:

mkdir data
echo 'mongod --bind_ip=$IP --dbpath=data --nojournal --rest "$@"' > mongod
chmod a+x mongod

Agora, para iniciar o mongod, rode o comando:

./mongod

Agora, o MongoDB está rodando. para conferir, abra um novo terminal e digite:

mongo

Agora, para gerar uma aplicação express, abra um terminal e digite o comando:

express <nome-da-aplicação>

O <nome-da-aplicação> será o nome da pasta criada. Não use acentuação nem espaços.

Abra a pasta gerada.

Edite o arquivo "package.json" para incluir os módulos que você deseja usar, e rode o comando:

npm install

Só falta uma coisa para rodar sua aplicação: configurar a execução. Clique com o botão direito no botão "Run", e escolha "New run configuration". Na janela que aparecerá, selecione o diretório de trabalho (botão "CWD") e aponte para a pasta que o express criou.

Selecione o botão "Runner" e escolha o tipo de comando como "Shell command". Na caixa de texto "Command", digite "npm start".


Para executar o programa, é só clicar no botão "Run". Para abrir um navegador e ver a página criada, clique no botão "Preview" (no topo) e selecione "Preview with Web Server".


Instalação com o Vagrant file

Para instalar uma máquina virtual na sua estação de trabalho, de forma automática.

Primeiramente, instale o Vagrant em sua máquina:

Em segundo lugar, instale o Virtualbox em sua máquina:

Depois, você tem que acessar o projeto do curso no Github (“https://github.com/cleuton/cursomean”). De lá, você pode fazer duas coisas:
  1. Clonar o repositório Git;
  2. Baixar um ZIP file.

Depois de clonar ou baixar, entre na pasta do curso e rode o comando:

vagrant up

Vai demorar um tempinho, pois o Vagrant vai criar uma VM usando o Virtualbox, vai baixar a imagem do Ubuntu e vai instalar a parada toda. Demora entre 10 e 15 minutos, dependendo da velociadade da sua Internet.

Aliás, VOCÊ TEM QUE TER INTERNET!

Ao subir a VM, você notará que existe uma pasta compartilhada “/vagrant”, contendo os arquivos de cada sessão do Workshop. Para executar um exemplo, copie a sessão inteira para a sua pasta “home” no Ubuntu virtual:

cd ~
cp -r /vagrant/sessao1 .

Depois, é só entrar na pasta e rodar o exemplo.

Agora, se você quiser editar, isso pode ser um problema... Infelizmente, não há ofertas de boxes Vagrant com Gnome instalado. Então, você vai ter que usar “vi”! Outra solução é editar no seu sistema “host” e depois copiar para o “guest”.


Instalação manual

Para instalar tudo localmente na sua máquina, que deverá ser Ubuntu ou compatível.

Após dar boot no Ubuntu, abra uma janela terminal e rode o seguinte comando, para atualizar o banco de pacotes:

sudo apt-get update

Após a execução bem sucedida, você deve estar vendo essa tela:  


Instalação do Node.js


A segunda parte é a instalação do “node.js”. Rode o comando abaixo no mesmo terminal:

sudo apt-get install nodejs

Eis o resultado:


Por problemas com nome de pacote semelhante, o executável do “node.js” no Ubuntu é diferente. Ele vem com o nome “nodejs”. Se você preferir, use dessa forma, se não, crie um soft link para ele com o nome original “node”:

sudo ln -s /usr/bin/nodejs /usr/bin/node

Durante o curso, o comando node.js que vou usar é “node”. Se você tem algum pacote instalado que conflite com esse nome ou preferir usar o comando do Ubuntu “nodejs”, então deve considerar isso e fazer as modificações necessárias.

Vamos testar se o node.js está funcionando. No terminal, digite esses comandos:

cat > teste.js
console.log('ok'); + (CTRL-Z)
node teste



Este é o resultado que deve obter (o string “ok” exibido no terminal):


Instalação do NPM – Node Package Manager


O ecossistema do Node.js é muito rico, com muitos pacotes que você pode baixar e usar. Eles são chamados de NPM – Node Packaged Modules, e podem ser selecionados com o utilitário NPM – Node Package Manager.

Vamos instalar o NPM digitando os comandos a seguir no terminal:

sudo apt-get install npm

Agora, teste se o NPM está funcionando com o comando:

npm -v

Ele deve mostrar a versão do npm instalada.


Instalação do Express Generator


O Express.js é dividido em duas partes: o Generator, que é um assistente para criação de aplicações Express.js, e o módulo, que tem as bibliotecas e APIs.

O Express Generator é instalado globalmente, com um comando disponível para uso. O Módulo Express é instalado em cada aplicação que criamos.

Para instalar o Express Generator, digite no terminal:

sudo npm install -g express-generator
sudo ln -s /usr/local/lib/node_modules/express-generator/bin/express /usr/bin/express

Primeiro, instalamos o Express Generator na biblioteca global do Node (npm install -g). Depois, temos que criar um soft link para o executável do Express.

Agora, vamos testar se o express foi instalado com sucesso:

express --version

Ele deve mostrar sua versão.


Instalação do MongoDB


Para instalar a última versão do MongoDB, eu recomendo que você evite usar os pacotes nativos do Ubuntu. Para baixarmos do repositório do MongoDB, precisamos seguir alguns passos. Primeiramente, devemos acrescentar a chave de assinatura do pacote ao nosso sistema. Digite o comando:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

Depois, digite os comandos abaixo na ordem em que estão (sem quebra de linha):

echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

sudo apt-get update

sudo apt-get install mongodb-org


Agora, vamos iniciar o serviço “mongod”, que é o daemon do MongoDB:

sudo service mongod start

Para testar se o MongoDB está rodando, digite no terminal:

mongo

Se tudo der certo, você vai entrar no cliente interativo do MongoDB.


Para usar o MongoDB em seus projetos Node.js, você deve instalar o driver apropriado em sua aplicação, rodando o seguinte comando em cada pasta de aplicação Node.js que você usar:

npm install mongodb

Problemas de inicialização do MongoDB
Em certos casos, após o boot da máquina, o serviço “mongod” não sobe, dando erro. Você pode verificar isso no log:

/var/log/mongodb/mongod.log

Se você ligar a máquina, digitar “mongo” e tomar um erro, pode ser que o arquivo de “lock” não tenha sido apagado. Neste caso, verifique se existe um arquivo “mongod.lock” na pasta:

/var/lib/mongodb/mongod.lock

Se existir, apague-o e tente subir o serviço novamente com o comando:

sudo service mongod start

Então, tente rodar o cliente interativo novamente (comando: “mongo”).

Para evitar que esse problema aconteça, procure SEMPRE parar o serviço “mongod” ANTES de desligar a máquina:

sudo service mongod stop


Nota sobre máquinas virtuais


Eu usei uma VM criada com o Virtualbox para executar todos os exemplos do curso. Eu fiz isso porque uso vários sistemas operacionais, incluindo Mac OSX e Microsoft Windows. Então, para uniformizar o treinamento, escolhi criar uma VM com Ubuntu 14.04.

O NPM e o Express não funcionam bem com pastas compartilhadas, então, é melhor que você use apenas as pastas locais da sua VM para criar e rodar as aplicações. Depois, pode copiar os seus projetos para uma pasta compartilhada. No caso do Vagrant é a pasta “/vagrant”.

Good to go



Bem, o resto você vai instalar conforme o caso. Então, você já está pronto(a) para iniciar o curso.