Atualização

Uma nova versão sempre é extraída em um diretório separado. Ela não deve ser copiada sobre a instalação existente nem extraída diretamente nela. O novo update.sh atualiza depois exatamente a instância informada como argumento.

Preparação e backup

Antes de cada atualização, deve existir um backup completo e verificado. Ele inclui pelo menos:

  • O diretório completo da instância, especialmente core/config/QisutuConfig.pm

  • var/secure/security.key

  • O banco de dados

  • Personalizações próprias de Apache, proxy, TLS e systemd

  • Se necessário, anexos externos ou locais de armazenamento conectados

security.key é indispensável para restaurar segredos criptografados de e-mail, OAuth e autenticação de dois fatores. Guarde-o protegido junto com o backup correspondente da instância.

Baixar a versão

cd /tmp
wget https://ftp.qisutu.de/qisutu-1.0.2.tar.gz
tar xzf qisutu-1.0.2.tar.gz
cd qisutu-1.0.2

Ao atualizar para uma versão posterior, deve-se usar naturalmente a URL e o nome do diretório dessa versão de destino.

Iniciar atualização

Instância de produção:

sudo ./update.sh /opt/qisutu

Instância adicional:

sudo ./update.sh /opt/qisututest

O atualizador lê var/install/instance.conf e mostra antes da confirmação o caminho de instalação, o identificador da instância, o caminho web, o banco de dados e o serviço systemd. Cancele se algum desses valores não corresponder à instância desejada.

Processo de atualização

O script realiza, entre outras, as seguintes etapas:

  1. Verificação de checksums da versão, versões, arquivo de esquema, sintaxe Perl e registro de programas.

  2. Criação opcional de um dump adicional do banco de dados. Verifique antes o espaço livre em /var/backups.

  3. Ativação do modo de manutenção, parada do daemon da instância e bloqueio de novas coletas de e-mail.

  4. Atualização de todos os arquivos de programa gerenciados pela versão; novos arquivos são adicionados e arquivos gerenciados que não são mais publicados são removidos.

  5. Preservação dos arquivos locais da instância, configurações, logs, dados de execução e chave de segurança.

  6. Comparação do esquema do banco de dados e execução de todas as migrações SQL e Perl ainda não registradas.

  7. Nova verificação do estado de destino e inicialização do daemon.

Verificação posterior

Após a conclusão bem-sucedida, verifique:

systemctl status qisutu-daemon.service
journalctl -u qisutu-daemon.service --since today

Em seguida, faça login, verifique as versões exibidas do Qisutu e do banco de dados e teste pelo menos login, visualização de tickets, coleta e envio de e-mails. Com várias instâncias, essa verificação é realizada separadamente para cada instância atualizada.

Atualização com falha

Não execute o script repetidamente sem analisar a causa. Salve a saída e os logs, verifique espaço livre, acesso ao banco de dados, permissões de arquivos e status do serviço. Se o estado não estiver claro, restaure em conjunto o backup completo previamente verificado do diretório do programa e do banco de dados.