[Unit] Description=Totvs Appserver Daemon After=network.target # Se necessário, adicione aqui dependências de bancos de dados: # After=mariadb.service postgresql.service [Service] # Define o tipo como 'forking', pois o AppServer inicia o processo # e imediatamente se torna um processo em background. Type=forking # Caminho do arquivo PID PIDFile=/var/run/appserver.pid # Define a variável de ambiente LD_LIBRARY_PATH necessária para o AppServer. # OBS: Substitua o ${INSTALL_PATH} pelo caminho ABSOLUTO real, ex: /opt/totvs Environment=LD_LIBRARY_PATH=${INSTALL_PATH}/protheus/bin/appserver # Comando de início do serviço. # O '-c "..."' é necessário para que a variável de ambiente seja aplicada antes de rodar o executável. # O "daemon" no final é o parâmetro que diz ao AppServer para rodar em segundo plano. ExecStart=/bin/bash -c "exec ${INSTALL_PATH}/protheus/bin/appserver/appsrvlinux daemon" # Comando de parada (envia o sinal de TERM -15 para o PID no PIDFile) ExecStop=/bin/kill -TERM $MAINPID # Usuário e Grupo com que o serviço deve rodar. # É crucial alterar 'appserver_user' e 'appserver_group' pelo usuário/grupo real de operação, # ou comentar se for rodar como 'root' (não recomendado). # User=appserver_user # Group=appserver_group # Limites de recursos (substituem os antigos ulimit) # Adicione aqui os limites que você precisava no SysVinit (LimitNOFILE, LimitAS, etc.). # Ex: LimitNOFILE=32768 # Ex: LimitAS=2G # Configuração de reinicialização automática em caso de falha. Restart=on-failure RestartSec=5s [Install] # Habilita o serviço para iniciar no nível multi-usuário (o padrão para a maioria dos sistemas) WantedBy=multi-user.target