Como iniciar meu próprio servidor como um serviço usando o systemd

0

Eu escrevi meu próprio servidor no Qt com o QtWebApp

Agora eu quero iniciar esse servidor na inicialização do Ubuntu 15.10 usando systemd

Eu criei este arquivo de serviço

[Unit]
Description=This service maintains a landports server...
After=syslog.target
Wants=network-online.target
After=network.target network-online.target

[Service]
Type=forking
ExecStart=~/LandportsServer
Restart=on-abort

[Install]
WantedBy=multi-user.target

e quando eu corro sudo systemctl start landports

systemd produz systemd Loaded: error (Reason: Invalid argument)

Alterei meu arquivo de serviço para

[Unit]
Description=This service maintains a landports server...

[Service]
Type=forking
ExecStart= /home/wbmanager/LandportsServer

[Install]
WantedBy=multi-user.target

mas quando eu corro sudo systemctl start landports

nada acontece e nenhuma saída é mostrada, e quando tento conectar ao meu servidor usando uma conexão do navegador falha, então o servidor não está rodando

Eu testei meu servidor antes, executando-o através do ssh e ele funciona. Mas não consigo trabalhar como um serviço

depois de esperar as saídas do systemd:

Jan 04 22:57:25 yassermyweb LandportsServer[4902]: Pattern handler and tokens:  HttpRequestHandler(0x1018790) ("recent", ":portID")
Jan 04 22:57:25 yassermyweb LandportsServer[4902]: added pattern for path: recent/:portID
Jan 04 22:57:25 yassermyweb LandportsServer[4902]: RootHandler 0xffe820: registering handlers...
Jan 04 22:57:25 yassermyweb LandportsServer[4902]: Pattern handler and tokens:  HttpRequestHandler(0x10183a0) ("")
Jan 04 22:57:25 yassermyweb LandportsServer[4902]: added pattern for path:
Jan 04 22:57:25 yassermyweb LandportsServer[4902]: HttpListener: Listening on port 0
Jan 04 22:58:55 yassermyweb systemd[1]: landports.service: Start operation timed out. Terminating.
Jan 04 22:58:55 yassermyweb systemd[1]: Failed to start This service maintains a landports server from the point the system is started until it is shut down again..
Jan 04 22:58:55 yassermyweb systemd[1]: landports.service: Unit entered failed state.
Jan 04 22:58:55 yassermyweb systemd[1]: landports.service: Failed with result 
'timeout'.

Observe que linhas que começam com manipulador e tokens de padrão: HttpRequestHandler (0x1018790) ("recente", ": portID")

é a saída do servidor mu = y

    
por Yasser Sobhy 05.01.2016 / 04:29

1 resposta

0

Eu acho que o problema é ExecStart=~/LandportsServer . Use o caminho absoluto. Qual diretório home é supostamente usado? Está sendo executado como root.

Outro problema pode ser que você tenha configurado o serviço como Type=forking . Altere isso para Type=simple (ou comente essa linha).

    
por 05.01.2016 / 04:36