Não é possível acessar o servidor depois de executá-lo com um serviço systemd

0

Estou tentando executar continuamente um servidor nodeJs no meu VPS, fiz um systemd service e iniciei.

Eu trabalhei pelo meu servidor ainda não está acessível, eu posso verificar o status e funciona Okey:

Status do serviço:

Node.service - Runs the Node Server for Node API
   Loaded: loaded (/etc/systemd/system/Node.service; disabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-05-12 16:16:38 CEST; 2min 37s ago
 Main PID: 26697 (node)
    Tasks: 10
   Memory: 87.5M
      CPU: 2.734s
   CGroup: /system.slice/Node.service
           └─26697 /root/.nvm/versions/node/v9.11.1/bin/node www

May 12 16:16:38 vps543107 systemd[1]: Started Runs the Node Server for Node API.
May 12 16:16:41 vps543107 node[26697]: Listening on port 3000

Serviço:

[Unit]
Description=Runs the Node Server for Node API
Documentation="No Docs"
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/root/Node/bin
ExecStart=/root/.nvm/versions/node/v9.11.1/bin/node www
Restart=on-failure

[Install]
WantedBy=multi-user.target

Não consigo acessar o servidor por meio de qualquer solicitação HTTP, todos os pedidos estão esgotados.

Existe algum problema com o meu serviço.

    
por Kaki Master Of Time 12.05.2018 / 16:28

2 respostas

1

Tente seguir

[Unit]
Description="Runs the Node Server for Node API"
#Requires=After=mysql.service       # If you have any dependency then add it

[Service]
ExecStart=/root/.nvm/versions/node/v9.11.1/bin/node /root/Node/bin/www
Restart=always
# Restart service after 10 seconds if node service crashes
RestartSec=10

# Output to syslog
StandardOutput=syslog
StandardError=syslog
#Change this to find app logs in /var/log/syslog
SyslogIdentifier=nodejs-api
# Followig will require if you are using the PORT or Node from Envirnoment
Environment=NODE_ENV=production PORT=3000

[Install]
WantedBy=multi-user.target

Quando a máquina do seu servidor estiver funcionando & você não é capaz de acessar o servidor, você soluciona problemas verificando logs de / var / log / syslog pelo seguinte comando

sudo cat /var/log/syslog | grep -r "nodejs-api"

Iniciar na inicialização: sudo systemctl ativar o rocketchat

    
por 29.05.2018 / 12:10
0

Inicie seu aplicativo com After=network-online.target para garantir que a rede esteja totalmente pronta antes de iniciá-lo.

Você menciona que o aplicativo não está disponível em "HTTP". Você pretendia executar o aplicativo na porta 3000 na porta do servidor 80, a porta HTTP padrão? Você está testando na mesma porta em que está sendo executado?

A execução de seu aplicativo com User=root é um risco de segurança. Uma falha de segurança no seu aplicativo da Web pode levar diretamente ao comprometimento total do seu VPS. Considere executar seu aplicativo como um usuário sem privilégios para atenuar esse risco.

Se o aplicativo iniciar na inicialização, verifique se você usou systemctl enable your-app para ativá-lo na inicialização.

Além disso, vejo que você está usando o NVM. Parece estar funcionando com base no seu status de serviço, mas não é minha recomendação para serviços de produção. Depende de variáveis de ambiente, o que o torna mais frágil.

Recomendo usar o n gerenciador de pacotes para produção, que usa apenas links simbólicos para alternar versões e nenhum ambiente variáveis.

Veja também a resposta de perguntas frequentes sobre por que as coisas não funcionam no sistema quando são iniciadas manualmente .

    
por 15.05.2018 / 18:58