#!/bin/bash # ================================================================= # Variáveis e Paths (Certifique-se que ${INSTALL_PATH} está definido) # ================================================================= SERVICE_NAME="totvsdbaccess" SERVICE_DESC="TOTVS DBAccess Server" SYSTEMD_PATH="/etc/systemd/system/${SERVICE_NAME}.service" # ================================================================= # 1. Inicialização dos Logs (Lógica mantida do script original) # ================================================================= if [ ! -f ${INSTALL_PATH}/uninstaller/install_err.log ]; then echo "" > ${INSTALL_PATH}/uninstaller/install.log fi if [ ! -f ${INSTALL_PATH}/uninstaller/install_err.log ]; then echo "" > ${INSTALL_PATH}/uninstaller/install_err.log fi echo "Installing TOTVS | DBAccess (modern Systemd setup)..." # ================================================================= # 2. Extração e Cópia de Arquivos # ================================================================= # Muda para o diretório de arquivos de origem cd ${INSTALL_PATH}/temp/totvsdbaccess/linux # Cria o diretório de destino e redireciona logs mkdir -p ${INSTALL_PATH}/dbaccess >> ${INSTALL_PATH}/uninstaller/install.log 2>> ${INSTALL_PATH}/uninstaller/install_err.log # Extrai os arquivos e redireciona logs tar xzf dbaccess_linux64.tar.gz -C ${INSTALL_PATH}/dbaccess >> ${INSTALL_PATH}/uninstaller/install.log 2>> ${INSTALL_PATH}/uninstaller/install_err.log # Copia arquivos 'multi' e redireciona logs cp -r ${INSTALL_PATH}/dbaccess/multi/* ${INSTALL_PATH}/dbaccess >> ${INSTALL_PATH}/uninstaller/install.log 2>> ${INSTALL_PATH}/uninstaller/install_err.log # ================================================================= # 3. Configuração do Serviço (Systemd) # ================================================================= # Verifica se o Systemd está rodando (PID 1) if [ -d /run/systemd/system ]; then echo "Systemd detected. Configuring service unit..." # Define o caminho completo para o executável do DBAccess # Geralmente, é o binário dbaccess64 que é executado a partir do diretório de instalação. DBACCESS_BIN="${INSTALL_PATH}/dbaccess/dbaccess64" # Adiciona permissão de execução (se ainda não tiver) chmod +x ${DBACCESS_BIN} # Cria o arquivo de unidade Systemd (.service) # Nota: Assumimos que o TOTVS DBAccess deve ser executado pelo root ou por um usuário dedicado. # Se for necessário um usuário específico, mude 'User=root' para o usuário desejado (e.g., 'User=totvs'). cat < ${SYSTEMD_PATH} [Unit] Description=${SERVICE_DESC} After=network.target [Service] Type=simple # Se o executável estiver na pasta 'multi', ajuste o caminho para: ${INSTALL_PATH}/dbaccess/multi/dbaccess64 ExecStart=${DBACCESS_BIN} WorkingDirectory=${INSTALL_PATH}/dbaccess/ Restart=always # Ajuste o usuário, se necessário (root é o padrão para instalação de serviços) User=root Group=root [Install] WantedBy=multi-user.target EOF echo "Registering Totvs DBAccess as Systemd service..." # Recarrega o daemon do Systemd para ler o novo arquivo systemctl daemon-reload >> ${INSTALL_PATH}/uninstaller/install.log 2>> ${INSTALL_PATH}/uninstaller/install_err.log # Habilita o serviço para iniciar automaticamente no boot systemctl enable ${SERVICE_NAME}.service >> ${INSTALL_PATH}/uninstaller/install.log 2>> ${INSTALL_PATH}/uninstaller/install_err.log echo "Starting Totvs DBAccess service..." # Inicia o serviço imediatamente systemctl start ${SERVICE_NAME}.service >> ${INSTALL_PATH}/uninstaller/install.log 2>> ${INSTALL_PATH}/uninstaller/install_err.log echo "Totvs DBAccess service status: $(systemctl is-active ${SERVICE_NAME}.service)" else # Fallback para sistemas init.d legados (Mantido apenas por compatibilidade) echo "Systemd not found. Falling back to SysVinit/init.d configuration..." # [Aqui você colocaria a lógica antiga do script original se fosse realmente necessário] # Recomenda-se que em sistemas modernos o Systemd seja sempre o alvo. # Exemplo de Fallback: # cp ${INSTALL_PATH}/totvsdbaccess_ubt.sh /etc/init.d/totvsdbaccess # ... fi # ================================================================= # 4. Finalização # ================================================================= cd ${INSTALL_PATH} exit 0