Passei cerca de uma hora hoje à noite coçando minha cabeça para descobrir o que fiz de errado ao configurar meu novo aplicativo Node.js no OpenShift. O problema que eu estava enfrentando era com o nome do arquivo do aplicativo / servidor principal. Por padrão, eles fornecem um aplicativo de amostra que reside em, server.js
embora eu goste que meu arquivo de aplicativo principal seja nomeado app.js
. Não é grande coisa na maioria dos casos, exceto no OpenShift.
Seus ganchos de ação que constroem e implantam seu aplicativo depois de git push
serem configurados para executar um comando semelhante ao node server.js
que precisaria ser alterado usando um gancho de ação customizado para seu aplicativo para substituí-lo e usar um nome de arquivo diferente. A maioria das pesquisas no Google mostra que o main
parâmetro em seu package.json
precisaria ser alterado para o nome de arquivo correto, embora depois de testar várias vezes, eu não tenha conseguido fazê-lo funcionar. Basicamente, eu implantaria o aplicativo e depois de esperar cerca de 5 minutos, meu site ainda estaria em uma tela de erro 503 “Aplicativo indisponível”. Verificando por SSH, o nó nem está em execução!
Há uma joia oculta no OpenShift que ajuda a resolver esse problema na implantação. Em seu pacakge.json
arquivo, você pode adicionar um snippet para definir o comando a ser executado na implantação. Depois de adicionar isso, implantar o aplicativo, eu tinha um site funcionando!
"scripts": {
"start": "node app.js --websocket-port=$OPENSHIFT_NODEJS_PORT --log-level=1"
}
Você pode mudar app.js
para o arquivo principal do aplicativo se decidir dar outro nome.
Passei um bom tempo tentando remediar essa solução, então espero que ajude alguns outros que enfrentam o mesmo problema no OpenShift e não querem seguir sua metodologia. Se alguém descobriu uma maneira ainda melhor de fazer isso, poste 🙂