Procédure
O que é o Node.js?
O Node.js é um ambiente de execução de código aberto e multiplataforma que lhe permite criar um site ou uma aplicação e alojá-lo num servidor, utilizando a linguagem JavaScript. Nos nossos pacotes cPanel L, cPanel XL, cPanel 2XL, cPanel 3XL e CloudCP, fornecemos-lhe o gestor de aplicações Node.js para que possa configurar uma aplicação Node.js no seu pacote de alojamento web cPanel. Estão disponíveis as versões 6 a 24 do Node.js.
O que é o Phusion Passenger?
Para oferecer aos nossos clientes um ambiente estável e robusto para Node.js, integramos as suas aplicações Node.js com o servidor web Apache utilizando a ferramenta Phusion Passenger.
Não configuramos um proxy inverso e as aplicações Node.js não podem ser executadas de forma autónoma no seu próprio servidor Web. Se está habituado a executar o seu servidor Node.js com um comando como node server, npm run start ou pm2 start myapp, não o poderá fazer nos nossos pacotes de alojamento cPanel. Se estiver a utilizar uma estrutura, verifique se é compatível com o Phusion Passenger.
A execução da sua aplicação Node.js será gerida pelo Phusion Passenger, que se encarregará de executar o seu ficheiro .js com a versão correta do node e de capturar a chamada da função http.Server listen() para configurar a ligação entre a sua aplicação e o próprio servidor web Apache.
Como é que instalo uma aplicação Node.js?
Ligue-se à sua interface de gestão cPanel e clique no ícone"Setup Node.js App".

Na página que se segue, clique no botão"Criar aplicação" para adicionar uma nova aplicação.

Em seguida, preencha os campos necessários para a sua aplicação:
- Versão do Node.js: a versão do Node.js que a sua aplicação requer.
- Modo de aplicação: permite-lhe definir o modo de execução da sua aplicação, modo de desenvolvimento ou modo de produção. Isso manipula a variável de ambiente NODE_ENV, permitindo que os erros sejam exibidos no modo de desenvolvedor (o que é útil para fins de depuração, mas também pode ser problemático para um aplicativo de produção).
- Raiz da aplicação: a localização da sua aplicação Node.js, relativamente à sua raiz FTP. Recomendamos que não coloque a sua aplicação Node.js na pasta public_html.
- URL da aplicação: o URL de raiz da sua aplicação Node.js.
- Ficheiro de arranque da aplicação: o nome do ficheiro .js que o Passenger enviará ao Node.js para iniciar a sua aplicação.

Depois, clique no botão"Create" quando a sua aplicação estiver configurada.
Se o ficheiro de arranque da sua aplicação ainda não existir, a ferramenta irá criar imediatamente este ficheiro com um conteúdo de exemplo. Este exemplo apresentará "It works! " ( Funciona! ) em todos os pedidos HTTP a ele associados.
Eis o conteúdo deste script de exemplo:
var http = require('http'); var server = http.createServer(function(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); var message = 'It works!\n', version = 'NodeJS ' + process.versions.node + '\n', response = [message, version].join('\n'); res.end(response); }); server.listen();
Você também pode editar o arquivo package.json da interface para adicionar dependências e instalar essas dependências usando o botão "Executar instalação do NPM ":

Observe que é necessário reiniciar o aplicativo se suas dependências tiverem sido modificadas.
Pode também definir variáveis de ambiente na secção Variáveis de ambiente se a sua aplicação depender delas para obter determinados parâmetros.
Aceder à sua aplicação a partir do terminal
A utilização do terminal de linha de comandos é uma parte integrante do ecossistema Node.js. Para aceder ao ambiente da sua aplicação a partir do terminal, ligue-se a ele (a partir do terminal Web do cPanel ou de um cliente SSH) e copie o comando apresentado para entrar no ambiente da sua aplicação:

Esta ação activará automaticamente o ambiente virtual correto para a sua aplicação, incluindo a versão correta do Node.js e do NPM, bem como as dependências instaladas no ambiente (em vez de serem instaladas na pasta "node_modules " na sua pasta de aplicações).
Depurando um aplicativo Node.js
Para depurar uma aplicação Node.js, pode consultar o registo de erros do Apache. O arquivo de log de erros do Apache contém :
- Saída STDOUT e STDERR da aplicação Node.js
- Erros relacionados com o Passenger
- Erros relacionados com o Apache
Se tiver definido manualmente o valor PassengerLogFile no ficheiro .htaccess do seu site, as saídas STDOUT e STDERR e os erros relacionados com o Passenger são enviados para este ficheiro em vez do ficheiro de registo do Apache.
Também pode definir o valor PassengerFriendlyErrorPages como on no seu ficheiro .htaccess para apresentar os erros relacionados com o arranque da sua aplicação Node.js diretamente no navegador Web.
Erros comuns do Node.js
Processo parado ao executar o npm install
Razões possíveis: O seu processo pode ser parado pelo servidor se estiver a ser executado para além do tempo de execução e/ou da quantidade de recursos (CPU, RAM, etc.) autorizados para o seu pacote de alojamento. Pode consultar o histórico de paragens do processo utilizando a nossa ferramenta "Logs " disponível na sua interface cPanel.
Solução: Pode limitar a memória RAM utilizada pelo npm utilizando a variável de ambiente NODE_OPTIONS da seguinte forma:
NODE_OPTIONS='--max-old-space-size=2048' npm install
Este exemplo mostra, por exemplo, um limite de 2048 MiB (2 GB).
Diretório especificado já utilizado por /home/$USER/public_html/monapp quando criado a partir de Setup Node.js App
Razões possíveis:
- Já existe uma aplicação Node.js, Python ou Ruby publicada no diretório especificado.
- Aaplicação raiz e aaplicação URL especificada apontam para a mesma pasta.
Solução:
- Verifique se nenhuma aplicação Node.js, Python ou Ruby está publicada na pasta especificada. Pode verificar o ficheiro .htaccess da pasta em questão a partir do gestor de ficheiros ou do seu cliente FTP habitual para identificar rapidamente esta situação.
- Certifique-se de que os ficheiros da sua aplicação (.js, package.json ...) indicados pela raiz da aplicação não se encontram na pasta de publicação indicada pelo URL da aplicação. Ao contrário das aplicações PHP, os ficheiros de uma aplicação Node.js não precisam nem devem estar localizados em public_html.