Configurar um servidor Keystone.js usando o Nginx Reverse Proxy no Ubuntu 16.04

Neste tutorial, configuraremos um servidor da web com um proxy reverso. O CMS que usaremos é o Keystone.js, uma estrutura de aplicativo da web bem conhecida baseada no Express.js. O proxy reverso que usaremos é o Nginx, que é um proxy reverso de código aberto e gratuito, além de um servidor HTTP. O banco de dados que usaremos é o MongoDB, um banco de dados de documentos NoSQL. Isso exigirá que você tenha um domínio com registros configurados. Se você não tiver esse conjunto, vá em frente, cuide disso e volte para este tutorial.

Instalando Nó

Primeiro, instalaremos o Node.js, que é um intérprete Javascript baseado no mecanismo Javascript do Chrome V8.

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential

Instalando o Nginx

Em seguida, instalaremos o Nginx, nosso proxy reverso.

sudo apt update
sudo apt install nginx

Isso atualizará as listas de pacotes e instalará o Nginx. Depois que a instalação estiver concluída, configuraremos nosso projeto de nó.

Inicializando nosso projeto Keystone

Crie nosso projeto de nó. Para fazer isso, basta criar uma nova pasta.

mkdir website

Então, criaremos nosso package.jsonarquivo. Para fazer isso, basta executar npm initno seu terminal, preencher os campos e responder " yes" para confirmar. Depois de criar o package.jsonarquivo, instalaremos os seguintes módulos do nó.

sudo npm install -g generator-keystone
sudo npm install -g yo

Quando o download for concluído, execute o seguinte.

yo keystone

Preencha os campos obrigatórios. Ele irá pedir-lhe para o project name, o template engine, emailpara o painel de controle, e assim por diante. Se você não souber o que selecionar, os padrões serão bons. Depois de definir sua configuração de keystone, podemos testar se nosso servidor está em execução, digitando node keystonepara iniciar seu aplicativo. Por padrão, seu aplicativo estará sendo executado localhostna porta 3000. Observe que, se você não tiver o MongoDB instalado, um banco de dados não estará disponível para você imediatamente. Você pode aprender a instalá-lo posteriormente no tutorial.

Aqui está o layout básico do diretório para o Keystone.js:

  • /lib - É aqui que você armazena suas bibliotecas personalizadas e outro código.

  • /models- É aqui que você armazenará os modelos de banco de dados do seu aplicativo. O KeystoneJS usa o MongoDB como um provedor de banco de dados.

  • /public - É aqui que seus arquivos estáticos (CSS, JS, imagens etc.) serão armazenados.

  • /routes/api - É aqui que os controladores de API do seu aplicativo serão armazenados.

  • /routes.views - Os controladores de exibição de aplicativos serão armazenados aqui.

  • /templates - É aqui que todos os arquivos de modelo do seu aplicativo serão armazenados.

  • /updates - É aqui que seus scripts de migração serão armazenados.

  • package.json - Este é o seu arquivo de configuração npm que o gerador gerou para nós.

  • keystone.js - Nosso principal arquivo de inicialização, executamos isso quando iniciamos o site.

Inicializando nosso banco de dados

Como mencionado anteriormente, nosso banco de dados que usaremos é o MongoDB, que é um banco de dados confiável orientado a documentos NoSQL. Se você já possui o MongoDB instalado, pode pular esta seção. Caso contrário, veja como instalá-lo no Ubuntu 16.04.

Importe a chave pública usada para o pacote mongoDB.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

Crie o arquivo de lista usado para instalar o pacote.

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Atualize suas listas de pacotes usando apt.

sudo apt update

Por fim, instale o MongoDB.

sudo apt install mongodb-org -y

Quando esta instalação terminar, inicie o MongoDB.

sudo service mongod start

Isso iniciará o processo do MongoDB na porta 27017.

O MongoDB será usado em todo o aplicativo e será utilizado para armazenar informações que usamos para nossos modelos, por exemplo, um Usermodelo. O Keystone o utiliza como seu banco de dados de escolha e, neste momento, você não pode usar outros fornecedores de banco de dados.

Instalando o PM2

Agora é hora de instalar o PM2 (Process Manager 2.) O PM2 é um gerenciador de processos para aplicativos Node.js., na forma de um módulo npm. Ele fornece uma maneira fácil de gerenciar seus aplicativos e executá-los em segundo plano. Por estar no NPM, tudo o que precisamos fazer para instalá-lo é executar o seguinte.

sudo npm install pm2 -g

Isso diz ao npm para instalá-lo globalmente, para que possamos usá-lo em qualquer lugar do nosso sistema.

Executando / gerenciando um aplicativo no PM2

Anteriormente, executamos nosso aplicativo da web com node keystone. Com o PM2, é um pouco diferente. Agora, executamos nosso aplicativo de nó com o seguinte.

pm2 start keystone.js

Isso adicionará nosso aplicativo PM2 à nossa lista de processos e uma pequena caixa será exibida para que você possa ver que ele está realmente online. Observe a caixa rotulada idpara o seu processo. Mantenha isso próximo, pois faremos muitas referências a isso mais tarde.

Para ver os logs do seu aplicativo.

pm2 logs [id]

Por exemplo, pm2 logs 0se este é seu primeiro aplicativo PM2.

Para parar seu aplicativo da web a qualquer momento.

pm2 stop [id]

Para excluir completamente seu aplicativo.

pm2 delete [id]

O PM2 ainda possui um painel de monitoramento se você quiser ver algumas estatísticas básicas para seu aplicativo e pode acessá-lo com isso.

pm2 monit

Isso mostrará algumas informações básicas, como uso de RAM, uso de CPU e tempo de atividade.

Um ótimo recurso que o PM2 oferece é watching. Em essência, assistir é quando o PM2 detecta automaticamente as alterações em qualquer um dos arquivos no mesmo diretório que o arquivo inicial e reinicia automaticamente o aplicativo. Para habilitá-lo, basta reiniciar o aplicativo, mas passe um sinalizador de inspeção.

pm2 restart [id] --watch

Para desativar a observação após a ativação, basta executar o mesmo comando novamente e a observação será desativada.

Neste tutorial, deixaremos de assistir.

Configurando seu proxy reverso

Verifique se você possui o Nginx instalado. Se, por algum motivo, não estiver, faça referência às etapas acima.

Ajuste suas configurações de firewall. No Ubuntu, ufwé o firewall oficial. Por padrão, as conexões são bloqueadas na porta 80. Precisamos adicionar uma exceção para o Nginx na porta 80, na qual nosso aplicativo Web estará sendo executado.

sudo ufw allow 'Nginx HTTP'

Verifique se o seu servidor Nginx está em execução.

systemctl status nginx

Sob a Activeseção, se você vir active (running), está tudo pronto. Caso contrário, você pode tentar reiniciar o serviço.

systemctl restart nginx

Exclua o arquivo de configuração padrão do Nginx.

sudo rm /etc/nginx/sites-available/default

Crie um novo e simplesmente chame-o node.

sudo nano /etc/nginx/sites-available/node

Cole o seguinte no arquivo e substitua example.compelo domínio do site.

listen 80;

server_name example.com;

    location / {

        proxy_set_header   X-Forwarded-For $remote_addr;

        proxy_set_header   Host $http_host;

        proxy_pass         "http://127.0.0.1:3000";
    }
}

Observe que proxy_passindica o IP em que nosso aplicativo Keystone está sendo executado localmente, que está localhostna porta 3000. listen 80é a porta para a qual queremos direcionar o aplicativo, que neste caso é a porta 80.

Em seguida, precisamos criar um link simbólico ou link simbólico para uma pasta chamada sites-enabled. A diferença entre sites-enablede sites-availableé que sites-enabledé realmente carregado pelo Nginx.

sudo ln -s /etc/nginx/sites-available/node /etc/nginx/sites-enabled/node

Agora, seu arquivo de configuração sites-availableestará pronto para uso e será carregado a partir de sites-enabled. Para aplicar a configuração para que ela entre em vigor, basta reiniciar o Nginx.

sudo systemctl restart nginx

Por fim, reinicie o aplicativo PM2

pm2 restart [id]

Agora você pode navegar para o seu domínio em um navegador e verá uma Welcome to Keystonetela com um painel para fazer login.

Se você o vir, configurou com êxito um servidor Web de produção Node.js. Caso contrário, você pode ter feito um passo incorretamente e poderá voltar e seguir cada passo cuidadosamente.

Você pode aprender mais sobre o Nginx visitando o site deles .

Espero que você tenha gostado deste tutorial e espero que isso tenha ajudado a configurar seu próprio servidor da Web para produção no seu Vultr VPS.



Leave a Comment

Instalando o Fuel CMS no Ubuntu 16.04 LTS

Instalando o Fuel CMS no Ubuntu 16.04 LTS

Usando um sistema diferente? O Fuel CMS é um sistema de gerenciamento de conteúdo baseado em CodeIgniter. Seu código fonte está hospedado no GitHub. Este guia mostra como você pode

Como instalar o Couch CMS 2.0 em um VPS Debian 9 LAMP

Como instalar o Couch CMS 2.0 em um VPS Debian 9 LAMP

Usando um sistema diferente? O Couch CMS é um sistema de gerenciamento de conteúdo (CMS) simples e flexível, gratuito e de código aberto que permite que os web designers

Como instalar o WonderCMS no Fedora 29

Como instalar o WonderCMS no Fedora 29

Usando um sistema diferente? O WonderCMS é um CMS de arquivo simples, rápido e pequeno, de código aberto, escrito em PHP. O código fonte do WonderCMS está hospedado no Github. Este guia irá

Como instalar o Redaxscript 3.2 CMS em um Ubuntu 16.04 LAMP VPS

Como instalar o Redaxscript 3.2 CMS em um Ubuntu 16.04 LAMP VPS

Usando um sistema diferente? O Redaxscript 3.2 CMS é um sistema de gerenciamento de conteúdo (CMS) moderno e ultra leve, gratuito e de código aberto com foguete-fas

Como instalar o Neos CMS no Debian 9

Como instalar o Neos CMS no Debian 9

Usando um sistema diferente? Neos é uma plataforma de aplicativos de conteúdo com um CMS e uma estrutura de aplicativos em seu núcleo. Este guia mostra como instalar

Como instalar o Directus 6.4 CMS em um CentOS 7 LAMP VPS

Como instalar o Directus 6.4 CMS em um CentOS 7 LAMP VPS

Usando um sistema diferente? O Directus 6.4 CMS é um sistema de gerenciamento de conteúdo sem cabeça (CMS) poderoso e flexível, gratuito e de código aberto que fornece

Como instalar o BoltWire CMS no CentOS 7

Como instalar o BoltWire CMS no CentOS 7

Usando um sistema diferente? Introdução O BoltWire é um sistema de gerenciamento de conteúdo gratuito e leve, escrito em PHP. Comparado com a maioria dos outros gerenciadores de conteúdo

Como instalar o BigTree CMS 4.2 em um CentOS 7 LAMP VPS

Como instalar o BigTree CMS 4.2 em um CentOS 7 LAMP VPS

Usando um sistema diferente? O BigTree CMS 4.2 é um sistema de gerenciamento de conteúdo (CMS) de nível empresarial, rápido e leve, gratuito e de código aberto, com uma extensa

Como instalar o Redaxscript 3.2 CMS em um CentOS 7 LAMP VPS

Como instalar o Redaxscript 3.2 CMS em um CentOS 7 LAMP VPS

Usando um sistema diferente? O Redaxscript 3.2 CMS é um sistema de gerenciamento de conteúdo (CMS) moderno e ultra leve, gratuito e de código aberto com foguete-fas

Instalando o Bolt CMS no CentOS 7

Instalando o Bolt CMS no CentOS 7

Bolt é um CMS de código aberto escrito em PHP. O código fonte do Bolts está hospedado no GitHub. Este guia mostra como instalar o Bolt CMS em um novo CentOS 7 Vult

Como instalar o Automad CMS no CentOS 7

Como instalar o Automad CMS no CentOS 7

Usando um sistema diferente? Automad é um sistema de gerenciamento de conteúdo (CMS) baseado em arquivo de código aberto e um mecanismo de modelo escrito em PHP. O código-fonte Automad i

Como instalar o Directus 6.4 CMS em um FreeBSD 11 FAMP VPS

Como instalar o Directus 6.4 CMS em um FreeBSD 11 FAMP VPS

Usando um sistema diferente? O Directus 6.4 CMS é um sistema de gerenciamento de conteúdo sem cabeça (CMS) poderoso e flexível, gratuito e de código aberto que fornece

Como instalar o ProcessWire CMS 3.0 em um Ubuntu 16.04 LAMP VPS

Como instalar o ProcessWire CMS 3.0 em um Ubuntu 16.04 LAMP VPS

Usando um sistema diferente? O ProcessWire CMS 3.0 é um CMS (Content Management System) simples, flexível e poderoso, de código aberto e gratuito. ProcessWire CMS 3.

Como instalar o Anchor CMS em um CentOS 7 LAMP VPS

Como instalar o Anchor CMS em um CentOS 7 LAMP VPS

Usando um sistema diferente? O Anchor CMS é um mecanismo de blog de sistema de gerenciamento de conteúdo (CMS) super simples e extremamente leve, gratuito e de código aberto que

Instalando o Anchor CMS no CentOS 7

Instalando o Anchor CMS no CentOS 7

Usando um sistema diferente? Anchor é um CMS de blog leve e de código aberto, escrito em PHP. O código-fonte Anchors está hospedado no GitHub. Este guia irá mostrar-lhe como

Instalando o Microweber no Ubuntu 16.04

Instalando o Microweber no Ubuntu 16.04

Usando um sistema diferente? Microweber é um software livre de arrastar e soltar CMS e loja online. O código-fonte da Microweber está hospedado no GitHub. Este guia irá mostrar-lhe

Instalando o Fork CMS no FreeBSD 12

Instalando o Fork CMS no FreeBSD 12

Usando um sistema diferente? Fork é um CMS de código aberto escrito em PHP. O código fonte do Forks está hospedado no GitHub. Este guia mostra como instalar o Fork CM

Como instalar o Thelia 2.3 no CentOS 7

Como instalar o Thelia 2.3 no CentOS 7

Usando um sistema diferente? O Thelia é uma ferramenta de código aberto para a criação de sites de comércio eletrônico e gerenciamento de conteúdo on-line, escrito em PHP. Código fonte Thelia i

Como instalar o ProcessWire CMS 3.0 em um VPS FAMP 26 LAMP

Como instalar o ProcessWire CMS 3.0 em um VPS FAMP 26 LAMP

Usando um sistema diferente? O ProcessWire CMS 3.0 é um CMS (Content Management System) simples, flexível e poderoso, de código aberto e gratuito. ProcessWire CMS 3.

Como instalar o Craft CMS no FreeBSD 12

Como instalar o Craft CMS no FreeBSD 12

Usando um sistema diferente? Introdução O Craft CMS é um CMS de código aberto escrito em PHP. O código-fonte do Craft CMS está hospedado no GitHub. Este guia irá mostrar-lhe

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.