MEAN é um conjunto de aplicativos composta pelos seguintes componentes:
- MongoDB, um banco de dados NoSQL com suporte para execução de JavaScript do lado do servidor.
- ExpressJS, uma estrutura de aplicativo da web Node.js.
- AngularJS, uma estrutura de aplicativo da web adequada para desenvolver aplicativos dinâmicos de uma única página.
- NodeJS, uma estrutura assíncrona orientada a eventos, adequada para construir aplicativos de rede escalonáveis.
Neste guia, vamos instalar a stack MEAN em um servidor CentOS 7 usando o MEAN.JS. Usar esse método envolve primeiro instalar o MongoDB, depois o NodeJS e, em seguida, clonar os arquivos MEAN.JS do GitHub.
Pré-requisitos
Para começar, você precisa ter o seguinte:
Um servidor do CentOS 7 com pelo menos 4 GB de RAM. E lembre-se que alguns dos componentes da stack MEAN, como o npm, exigem muita memória.
Um usuário sudo non-root configurado.
Passo 1 – Instalando as dependências
Como estamos compilando aplicativos da origem, clonando um repositório Git e instalando gems do Ruby, precisaremos instalar algumas dependências primeiro. libpng-devele e fontconfig são necessários para o MEAN.JS.
# sudo yum install gcc-c++ make git fontconfig bzip2 libpng-devel ruby ruby-devel
Alguns dos módulos do Node.js que iremos instalar requerem o SasS, uma linguagem de extensão CSS. Instale-o usando gem, gerenciador de pacotes do Ruby.
# sudo gem install sass
Agora que as dependências estão instaladas, podemos instalar o primeiro componente da stack: o MongoDB.
Passo 2 – Instalando MongoDB
O MongoDB não está no repositório oficial do CentOS, portanto, para instalá-lo, você terá que habilitar o repositório oficial. Isso lhe dará acesso aos pacotes mais recentes e permitirá que você o instale a partir daí.
Para este tutorial, vamos instalar a edição da comunidade, que está disponível para download gratuito. Há também uma edição Enterprise, mas isso requer uma licença.
No momento da publicação, o MongoDB 3.2 é a última edição estável disponível para download e instalação.
Para ativar o repositório, crie um arquivo para ele /etc/yum.repos.d, no diretório do repositório do CentOS. Para o MongoDB 3.2, chamaremos esse arquivo mongodb.org-3.2.repo.
Crie e abra /etc/yum.repos.d/mongodb.org-3.2.repo usando o vi ou seu editor de texto favorito.
# sudo vi /etc/yum.repos.d/mongodb.org-3.2.repo
Para apontar o gerenciador de pacotes para o repositório oficial do MongoDB e ativá-lo, copie e cole o seguinte código no arquivo.
A configuração enabled=1 permite que o repositório e a configuração gpgcheck=1 ativem a verificação de assinatura do GNU Privacy Guard (GPG) em todos os pacotes instalados a partir do repositório.
Arquivo: /etc/yum.repos.d/mongodb.org-3.2.repo
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
Salve e feche o arquivo e instale o pacote mongodb-org para instalar o MongoDB e suas ferramentas relacionadas. Quando solicitado para importar a chave GPG, digite “y” para continuar.
# sudo yum install mongodb-org
Após a conclusão da instalação, inicie o daemon do MongoDB.
# sudo systemctl start mongod
mongod, o daemon MongoDB, agora deve estar em execução, e você pode verificar isso usando o seguinte comando:
# sudo systemctl status mongod
Se estiver em execução, a saída deverá ser semelhante à seguinte:
Output mongod.service - SYSV: Mongo is a scalable, document-oriented database. Loaded: loaded (/etc/rc.d/init.d/mongod) Active: active (running) since Tue 2016-09-06 12:42:16 UTC; 9s ago Docs: man:systemd-sysv-generator(8) Process: 9374 ExecStart=/etc/rc.d/init.d/mongod start (code=exited, status=0/SUCCESS) CGroup: /system.slice/mongod.service └─9385 /usr/bin/mongod -f /etc/mongod.conf Sep 06 12:42:16 centos-mean-js systemd[1]: Starting SYSV: Mongo is a scalable, document-oriented database.... Sep 06 12:42:16 centos-mean-js runuser[9381]: pam_unix(runuser:session): session opened for user mongod by (uid=0) Sep 06 12:42:16 centos-mean-js mongod[9374]: Starting mongod: [ OK ] Sep 06 12:42:16 centos-mean-js systemd[1]: Started SYSV: Mongo is a scalable, document-oriented database..
A próxima parte da stack que precisamos instalar é o Node.js.
Passo 3 – Instalando o Node.js
Uma maneira fácil de instalar o Node.js é usando o binário do repositório NodeSource Node.js. Primeiro, adicione o repositório com a versão estável. Você pode ler o conteúdo do script antes de executá-lo usando o comando abaixo, visitando o URL em seu navegador.
# curl -sL https://rpm.nodesource.com/setup_4.x | sudo -E bash -
Em seguida, instale o Node.js e npm (gerenciador de pacotes para o Node.js).
# sudo yum install -y nodejs
Verifique se Node.js e npm estão instalados.
# npm version
A saída deve ser:
Output { npm: '2.15.9', ares: '1.10.1-DEV', http_parser: '2.7.0', icu: '56.1', modules: '46', node: '4.5.0', openssl: '1.0.2h', uv: '1.9.1', v8: '4.5.103.37', zlib: '1.2.8' }
Agora que npm está instalado, podemos instalar o restante dos componentes da stack MEAN.
Passo 4 – Instalando Bower e Gulp
Os componentes que iremos instalar nesta etapa são o Bower, um gerenciador de pacotes que é usado para gerenciar o aplicativo front-end, e o Gulp, que é usado para automatizar tarefas comuns.
Tanto o Bower quanto o Gulp precisam ser instalados globalmente, o que realizamos passando a opção g para o npm. Instalar os dois aplicativos globalmente os torna disponíveis em todo o sistema, e não apenas no diretório do projeto local.
Primeiro instale o Bower:
# sudo npm install -g bower
Então instale o Gulp:
# sudo npm install -g gulp
Agora, finalmente temos todos os pacotes de pré-requisitos instalados. Podemos passar a instalar o MEAN.JS usado para criar aplicativos.
Passo 5 – Instalando o MEAN
Primeiro, vamos clonar o repositório oficial do MEAN.JS do GitHub.
# git clone https://github.com/meanjs/mean.git meanjs
Isso clona o diretório do MEAN.JS em um diretório chamado meanjs em seu diretório home. Para instalar todos os pacotes referenciados pelo projeto, você precisa estar dentro desse diretório, então mude para ele.
# cd ~/meanjs
Em seguida, instale os pacotes necessários como o usuário non-root.
# npm install
A instalação levará vários minutos. Quando estiver concluído, você terá tudo o que precisa para desenvolver um aplicativo MEAN. Na última etapa, vamos testar a stack para garantir que tudo funcione.
Passo 6 – Executando o aplicativo MEAN
Vamos executar o aplicativo de amostra para garantir que o sistema esteja funcionando corretamente.
Um método é usar npm start, e o outro método é usar gulp. Ambos os comandos permitem que você teste seu aplicativo no modo de desenvolvimento. Aqui, vamos usar npm.
# npm start
Nota:
A execução inicial de um desses comandos pode falhar com uma saída semelhante a esta:
Error output [12:56:49] 'lint' errored after 702 ms [12:56:49] Error in plugin 'run-sequence' Message: An error occured in task 'sass'.
Se você receber esse erro, a correção é simples. Faça a exclusão do diretório node_modules, a limpeza do cache e a reinstalação dos pacotes.
# rm -rf node_modules
# npm cache clean
# npm install
Em seguida, reinicie o aplicativo de amostra com npm start ou gulp como antes.
Agora você pode acessar a aplicação visitando seu navegador favorito. Isso deve renderizar uma página com o logotipo do MEAN.JS, incluindo o texto: Congrats! Você configurou e executou o aplicativo de amostra.
Isso significa que você tem uma stack MEAN totalmente funcional em seu servidor. http://your_server_ip:3000