Atualização

Uma nova versão é sempre extraída para um diretório separado. Não deve ser copiada por cima da instalação existente nem extraída diretamente nela. O novo update.sh atualiza depois exatamente a instância indicada como argumento.

Preparação e cópia de segurança

Antes de cada atualização, deve existir uma cópia de segurança completa e verificada. Inclui pelo menos:

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

  • var/secure/security.key

  • A base de dados

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

  • Se necessário, anexos externos ou localizações de armazenamento ligadas

security.key é indispensável para restaurar segredos encriptados de correio, OAuth e autenticação de dois fatores. Guarde-o protegido juntamente com a cópia de segurança correspondente da instância.

Transferir 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 utilizar naturalmente o 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 apresenta antes da confirmação o caminho de instalação, o identificador da instância, o caminho Web, a base de dados e o serviço systemd. Cancele se algum desses valores não corresponder à instância pretendida.

Processo de atualização

O script executa, entre outros, os seguintes passos:

  1. Verificação das somas de controlo da versão, versões, ficheiro de esquema, sintaxe Perl e registo de programas.

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

  3. Ativação do modo de manutenção, paragem do daemon da instância e bloqueio de novas recolhas de correio.

  4. Atualização de todos os ficheiros de programa geridos pela versão; são adicionados novos ficheiros e removidos ficheiros geridos que já não são publicados.

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

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

  7. Nova verificação do estado de destino e arranque 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, inicie sessão, verifique as versões apresentadas do Qisutu e da base de dados e teste pelo menos o início de sessão, a vista de tickets, a recolha e o envio de e-mails. Com várias instâncias, esta verificação é efetuada separadamente para cada instância atualizada.

Atualização falhada

Não execute o script repetidamente sem analisar a causa. Guarde a saída e os registos, verifique o espaço livre, o acesso à base de dados, as permissões dos ficheiros e o estado do serviço. Se o estado não for claro, restaure em conjunto a cópia de segurança completa previamente verificada do diretório do programa e da base de dados.