Autor Tópico: Script de pagina web vs Systemd  (Lida 9861 vezes)

Offline chewychewy

  • Usuário Ubuntu
  • *
  • Mensagens: 2
    • Ver perfil
Script de pagina web vs Systemd
« Online: 15 de MAR?O de 2020, 12:36 »
Olá senhoras e senhores da tela preta,
Preciso de ajuda com uma coisa que comecei só pela curiosidade e agora to meio encucado rsrs (a duvida começa a partir do passo 4, o restante é apenas para introduzir o que fiz).
1 - Primeiramente criei uma pasta pra colocar meu ambiente GO, mkdir /goserver.
2 - Fiz um script (nano /goserver/main.go) bem simples em GO para imprimir uma frase numa pagina web no navegador:

Código: [Selecionar]
package main

import (
  "net/http"
  "github.com/labstack/echo/v4"
)

func main () {
  e := echo.New()
  e.GET("/", catatau)
  e.Logger.Fatal(e.Start(":1533"))
}

func catatau (c echo.Context) error {
  return c.String(http.StatusOK, "sopa nao e janta")
}
 
3 - Usei o comando
Código: [Selecionar]
go mod init server 3.1 - e depois
Código: [Selecionar]
go run main.go & 
A partir daqui eu já consigo acessar e visualisar "sopa nao e janta" pelo navegador com o script rodando em background.

4 - O que eu preciso é torna-lo um serviço e faze-lo rodar na inicialização do linux.
Eu sei que preciso colocar o arquivo .service em lib/systemd/system/<serviço>.service
Mas eu acredito que também preciso de um arquivo .sh para dizer o que o .service fará em durante o start | stop | restart | enable.

Obs: Estou no arch linux.
Agradeço a todos,
« Última modificação: 18 de MAR?O de 2020, 16:59 por chewychewy »

Offline chewychewy

  • Usuário Ubuntu
  • *
  • Mensagens: 2
    • Ver perfil
Re:SCRIPT DE PAGINA WEB VS SYSTEMD
« Resposta #1 Online: 15 de MAR?O de 2020, 12:47 »
Tentei! Mas não deu  >:( >:(

Primeiro pensei em fazer o script goserver.sh pra depois apontar o goserver.service pra ele:
Código: [Selecionar]
[root@archlinux goserver]# which go
/usr/bin/go
[root@archlinux goserver]# cat goserver.sh
#!/bin/bash

start() {
  exec /usr/bin/go run main.go &
}

stop() {
  pkill -9 go
}

restart() {
  stop
  start
}

case $1 in
  start|stop|restart) "$1" ;;
esac
Posteriormente, pensei em como fazer o goserver.service pra poder dar um systemctl enable goserver e ativar sua execução sempre que o linux iniciar:
Código: [Selecionar]
[root@archlinux goserver]# cat /lib/systemd/system/goserver.service
[Unit]

[Service]
Type=forking
TimeoutStartSec=30
TimeoutStopSec=30
ExecStart=/goserver/goserver.sh start
ExecStop=/goserver/goserver.sh stop
ExecReload=/goserver/goserver.sh restart
Restart=on-failure

[Install]
WantedBy=multi-user.target

mas sai isso aqui do status:
Código: [Selecionar]
[root@archlinux goserver]# systemctl start goserver
[root@archlinux goserver]# systemctl enable goserver
[root@archlinux goserver]# systemctl status goserver
● goserver.service
     Loaded: loaded (/usr/lib/systemd/system/goserver.service; enabled; vendor preset: disabled)
     Active: failed (Result: exit-code) since Sun 2020-03-15 12:45:24 -03; 14s ago
    Process: 2772 ExecStart=/goserver/goserver.sh start (code=exited, status=0/SUCCESS)
   Main PID: 2773 (code=exited, status=1/FAILURE)

mar 15 12:45:24 archlinux systemd[1]: goserver.service: Main process exited, code=exited, status=1/FAILURE
mar 15 12:45:24 archlinux systemd[1]: goserver.service: Failed with result 'exit-code'.
mar 15 12:45:24 archlinux systemd[1]: goserver.service: Scheduled restart job, restart counter is at 5.
mar 15 12:45:24 archlinux systemd[1]: Stopped goserver.service.
mar 15 12:45:24 archlinux systemd[1]: goserver.service: Start request repeated too quickly.
mar 15 12:45:24 archlinux systemd[1]: goserver.service: Failed with result 'exit-code'.
mar 15 12:45:24 archlinux systemd[1]: Failed to start goserver.service.
« Última modificação: 18 de MAR?O de 2020, 16:59 por chewychewy »

Offline FaBMak

  • Administrador
  • Usuário Ubuntu
  • *****
  • Mensagens: 722
    • Ver perfil
    • fabmak://website
Re:Script de pagina web vs Systemd
« Resposta #2 Online: 05 de Abril de 2020, 11:06 »
O caminho é esse mesmo. Tópico trancado, pois vc usa Arch. Cada escolha, tem sua consequências.
"Não creias impossível o que apenas improvável parece". (Shakespeare)
fabmak://website | http://twitter.com/fabmak