Neste artigo, abordarei a hospedagem de um aplicativo Node.js nos servidores de hospedagem compartilhada da Namecheap usando o cPanel. Não discutirei a configuração do servidor de banco de dados ou o front-end React para seu aplicativo da web neste artigo. Em vez disso, quero me concentrar nos desafios que você pode enfrentar ao executar um aplicativo Node em um ambiente de hospedagem compartilhada. == Não demore, hospede hoje! == Antes de ir muito longe no desenvolvimento de seu aplicativo da web, é uma boa ideia colocar uma versão estável online. Isso pode ocorrer em seu ambiente de produção ou em um ambiente de preparação semelhante ao seu ambiente de produção. A maioria das pessoas espera até que seu aplicativo esteja quase completo antes de hospedá-lo online âÃÂàe foi isso que fiz ao desenvolver meu primeiro aplicativo da web React e Node. No entanto, naquele ponto, tive muitos desafios para colocar meu servidor Node API em execução e também tive que fazer muitas alterações em meu aplicativo React. É por isso que recomendo colocar uma versão online desde o início, para que você possa fazer ajustes antes de escrever muito código. == Usando um serviço de hospedagem compartilhada == Os servidores de hospedagem compartilhada da Namecheap usam o cPanel como a interface do painel de controle para gerenciar o servidor Apache. Estas instruções também devem ajudar qualquer pessoa que esteja usando um serviço de hospedagem compartilhada com cPanel, como A2 Hosting e GoDaddy. Também tenho meu servidor Namecheap configurado com um certificado SSL e o cPanel, por padrão, redireciona todo o tráfego HTTP para HTTPS. Portanto, todo o tráfego para o meu servidor é seguro. Você encontrará muitos guias instruindo-o sobre como hospedar um aplicativo Node em um serviço de hospedagem VPS (Virtual Private Server), como o DigitalOcean. Se você está começando do zero, hospedar usando um serviço como esse lhe dará mais controle. Mas geralmente é mais caro que a hospedagem compartilhada. E no meu caso eu já havia pago por um serviço de hospedagem compartilhada da Namecheap. Algumas vantagens de usar cPanel e hospedagem compartilhada: - Gerenciado com um console de gerenciamento web simples - Fácil de configurar - Barato, especialmente se você já estiver hospedando um site / domínio - Pode facilmente configurar sites dinâmicos usando outras tecnologias como PHP, etc, se você estiver explorando diferentes tecnologias Algumas desvantagens: - Menos controle, já que você não tem acesso ao sistema operacional subjacente - Não escalável == Para onde vai tudo? == Primeiro você precisa criar uma pasta para todos os arquivos de origem para seus aplicativos Node. Eu criei uma pasta chamada âÃÂÃÂnodejsâÃÂàno diretório /home/username e, dentro dessa pasta, criei uma subpasta para cada aplicativo. Agora carregue todos os seus arquivos de origem para esta subpasta. Certifique-se de incluir o arquivo package.json também. Você não carrega a pasta âÃÂÃÂnode_modulesâÃÂÃÂ, pois ela será criada com o gerenciador de pacotes mais tarde. Lembre-se de que estamos apenas hospedando o servidor Node API em nosso exemplo de arquitetura de aplicativo da web. Não hospedaremos o aplicativo React usando Node (mais sobre esse tópico no próximo artigo). httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_1.jpg O layout da pasta mostra os arquivos de origem do Node na pasta /home/username/nodejs/mynodeapi e há um arquivo .htaccess na pasta /home/username/public_html/myapi == O problema é que o aplicativo Node não consegue acessar as portas == O maior desafio que tive foi colocar meu aplicativo Node API em execução. O problema era que o código de exemplo fornecido na documentação de suporte do Namecheap simplesmente não funcionava! Ele tenta criar um servidor https para escutar na porta 80 e um servidor http **s** na porta 443. No entanto, sempre recebo um erro EACCESS dizendo que não tenho permissão para usar essas portas. == A solução Nó não precisa acessar a porta! == Eventualmente, encontrei a solução lendo um comentário do usuário SibProgrammer em um tópico sobre o Plesk, outro painel de controle de hospedagem. O cPanel usa o servidor de aplicativos Phusion Passenger para hospedar aplicativos Node, assim como o Plesk. Resumindo: Quando você envia uma solicitação do seu navegador, ela vai para o servidor Apache, depois para o Phusion Passenger e depois para o aplicativo Node. Seu aplicativo Node não precisa possuir a porta, pois ela é gerenciada posteriormente pelos servidores de aplicativos Apache e Phusion Passenger. Isso simplifica o código para criar o httpserver em seu arquivo www.js (ou app.js): * www.js * Testando a criação do servidor http para Namecheap. * Dave */ const http = require('http http.createServer(function(request, response) { response.writeHead(200, {'Content-Type': 'text/html response.endh1>Hello Worldh1 listen(process.env .PORT); console.log('Aplicativo em execução Algumas coisas a serem observadas: - Ouça em process.env.PORT (em vez de definir manualmente 80 ou 443). Ao testar notei que process.env.PORT está indefinido! Mas, curiosamente, isso não importa neste caso. - Use um servidor http mesmo se você tiver SSL configurado. O cPanel configurou o Apache para redirecionar todo o tráfego HTTP para HTTPS e, consequentemente, responder a todas as solicitações por HTTPS. Você não precisa configurar manualmente seu aplicativo Node para configurar um servidor https e ler seus certificados SSL. == Etapas finais para o servidor Node API == Agora deve ser o processo relativamente simples de seguir as instruções para configurar seu aplicativo de nó. httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_2.jpg Captura de tela da página de configuração Node.js do cPanel - Escolha a versão apropriada do Node.js e o modo de aplicação (recomenda-se a produção). - A raiz do aplicativo será a pasta onde você carregou seus arquivos de origem anteriormente nodejs/mynodeapiâÃÂàno exemplo acima). - O URL do aplicativo será o URL usado para acessar sua API ¢ÃÂàno exemplo). O nome que você fornecer nesta caixa será usado para criar uma subpasta em sua pasta /home/username/public_html. Não precisa ter o mesmo nome da pasta âÃÂÃÂRaiz do aplicativo¢ÃÂà(mas muitas vezes será). - O arquivo de inicialização do aplicativo será www.js ou app.js, dependendo de como você criou seu aplicativo Node. - Cabe a você decidir como deseja configurar o arquivo de log do Passenger. - Depois de criar o aplicativo, você verá o botão para executar a instalação do NPM ¢ÃÂÃÂ. Execute isso e ele criará a pasta âÃÂÃÂnode_modulesâÃÂàcom todos os módulos dependentes de que seu aplicativo precisa. Depois de configurar seu aplicativo Node e iniciá-lo, ele criará a subpasta em sua pasta /home/public_html. Agora você precisará ir até essa pasta e editar o arquivo .htaccess e adicionar a seguinte linha: ReescreverMotor desligado Isso evita que o servidor Apache reescreva (ou redirecione) qualquer uma das solicitações que precisam ir intactas para o servidor da API. E é isso! Agora seu aplicativo Node API deve estar funcionando e respondendo às suas chamadas de API. == Então, o que vem a seguir? == Agora que configuramos o servidor Node API, podemos alterar nosso front-end React em nosso ambiente de desenvolvimento para apontar para esse servidor API. Ou podemos usar o Postman para testar nossas chamadas de API. No próximo artigo, veremos como hospedar o aplicativo React no Namecheap e no cPanel.