História da criação da nuvem doméstica. Parte 5. Atualização 2019 – PHP 7.2, MariaDB 10.4 e Nextcloud 17.

Há dois anos, publiquei uma série de artigos sobre a criação de um servidor web baseado em Debian 8 e a execução do serviço Nextcloud 11 nele. Alguns meses depois, surgiu um complemento contendo informações "diferenciais" sobre a instalação do Nextcloud 13 no Debian 9. No final de 2018, simplesmente atualizei o Debian e o Nextcloud e não enfrentei problemas incomuns ou interessantes. A atualização no final de 2019 foi mais interessante e vale a pena escrever sobre isso.

História da criação da nuvem doméstica. Parte 5. Atualização 2019 – PHP 7.2, MariaDB 10.4 e Nextcloud 17.

Este artigo será especialmente útil para aqueles que, seguindo as instruções dos quatro artigos anteriores, "montaram" seu Nextcloud 13 no Debian 9 (um cumprimento especial para os meus dez assinantes sobre o tema Nextcloud, especialmente para aqueles que tiveram sua primeira experiência no mundo Linux). Para aqueles que estão prestes a criar um serviço do zero, recomendo seguir os primeiros quatro artigos dessa série, adaptando para as versões atuais do Debian 10 e Nextcloud 17. Para usuários experientes de Linux, o artigo pode ocupar um espaço entre "trivial e inútil" e "não está mal, um guia prático em um só lugar".

Índice

Parte 1. Configuração do ambiente Debian para uso diário
Parte 2. Criando o servidor — configuração do LAMP no Debian
Parte 3. Criando uma nuvem pessoal — instalação e configuração do Nextcloud
Parte 4. Atualização de 2018 – Debian 9 e Nextcloud 13
Parte 5. Atualização de 2019 – PHP 7.2, MariaDB 10.4 e Nextcloud 17

Navegação rápida pelo capítulo

Prefácio
Atualização do Debian
Atualização do PHP para a versão 7.2
Atualização do MariaDB para a versão 10.4
Atualização do Nextcloud para a versão 17
Epílogo

Prefácio

Inicialmente, eu queria instalar e configurar o Nginx no Debian 10, sobre o qual a versão atual do Nextcloud 17 poderia ser instalada sem problemas. Mas não consegui encontrar tempo para isso, portanto, este artigo apresenta um conjunto de instruções para a atualização do Nextcloud da versão 13 para a atual versão 17, com a preparação prévia do servidor web.

Primeiro, é necessário esclarecer por que foram exigidas mudanças radicais no lado do servidor web. Nosso servidor é baseado em Debian 9, que está atualizado e em suporte. É possível apenas atualizar o sistema operacional, e todos os componentes do servidor web receberão pelo menos atualizações de segurança. Tudo estaria maravilhoso se continuássemos usando o Nextcloud 13 ou fizéssemos apenas a atualização para a versão 14. Porém, o Nextcloud 13 já não é mais suportado, e o suporte para a versão 14 está "no fim da linha". A partir da versão 15, o Nextcloud começará a sugerir a conversão do banco de dados para big int para suportar a codificação de quatro bytes, e com o MariaDB 10.1, isso será bastante problemático. O Nextcloud 17 requer PHP 7.1-7.3, enquanto que o Debian 9, em seus repositórios nativos, contém apenas a versão 7.0. De maneira mais correta, em termos de confiabilidade e previsibilidade, seria fazer uma atualização para a penúltima versão do Nextcloud, mas ao longo dos anos, eu me convenci tanto da confiabilidade deste serviço que queria atualizar para a versão mais recente e atualizar o servidor web com uma visão para o futuro. Portanto, para atualizar para o Nextcloud 17, é ideal atualizar o MariaDB para a versão estável atual 10.4 e o PHP para a versão 7.2. Especificamente a 7.2, e não a atual 7.4. A razão é que o Nextcloud 13 requer PHP 5.6, 7.0-7.2, enquanto que para o Nextcloud 17 é necessário PHP 7.1-7.3. Usar o PHP 7.2 é conveniente para minimizar as ações de atualização. Não será necessário atualizar o servidor Apache — basta instalar as atualizações de segurança que a equipe de suporte do Debian disponibiliza. Já para as atualizações do MariaDB e PHP, será preciso adicionar repositórios externos.

Quando comecei a usar o Nextcloud, eu o atualizava 'manualmente': através do console, com um comando específico, o site entrava em modo de manutenção, eu baixava e descompactava manualmente o arquivo com a nova versão do site, atualizava os arquivos e iniciava o procedimento de atualização. Esse tipo de atualização normalmente levava a resultados esperados, embora eu sempre fizesse backup do site, do banco de dados e dos dados do usuário. Já a atualização automática às vezes trazia certas surpresas. Mas isso foi há muito tempo; a estabilidade da plataforma melhorou bastante desde então e desta vez fiz as atualizações exclusivamente através da interface web. No entanto, não consegui escapar completamente do prompt de comando. Durante uma atualização iterativa, avisos e notificações diferentes aparecerão no painel de controle para cada nova versão, que precisarão ser 'removidos' ao executar comandos no prompt de comando de forma consciente. Você pode optar por não fazer isso — o serviço continuará funcionando. Embora essa abordagem seja fundamentalmente errada, meu Nextcloud funcionou assim por 3 meses antes de eu me dedicar a resolver as questões surgidas.

Atualização do Debian

Parando o servidor web:

# service apache2 stop


E atualizando:

# apt-get update
# apt-get dist-upgrade


Após a atualização, você pode verificar a versão do SO e fazer uma reinicialização de teste para garantir que tudo está iniciando normalmente após a atualização:

# cat /etc/debian_version
# reboot


Atualização do PHP para a versão 7.2

Parando o servidor web:

# service apache2 stop


Adicionando o certificado e as chaves PPA, repositório PHP:

# apt install ca-certificates apt-transport-https
# wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add -
# echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/php.list


Ao remover a versão antiga do PHP 7.0, o phpmyadmin também será removido, pois 'vestígios' de pacotes removidos serão limpos utilizando o autoremove. Isso não trará grandes dificuldades, já que nenhuma configuração especial foi feita para o phpmyadmin e reinstalá-lo não será problemático.

# apt-get purge php7*
# apt-get --purge autoremove
# apt-get update
# apt-get install php7.2 phpmyadmin


Instalação dos módulos necessários para o Nextcloud 17:

# apt-get install php7.2-mysql php7.2-curl php7.2-xml php7.2-gd php7.2-json php7.2-mbstring php7.2-zip php7.2-intl
# apt-get install php-memcached php-apcu php-redis php-imagick


[ Este texto foi escrito especialmente para o site habr.com pelo autor AlexanderS.
A referência à fonte não é obrigatória, mas sua menção é extremamente desejável! ]

Verificando a versão do PHP, iniciando o servidor web e verificando o funcionamento do Nextcloud:

# php -v
# service apache2 start


Atualização do MariaDB para a versão 10.4

No site do projeto, há uma página interessante, onde você deve indicar seu SO, sua versão e escolher a versão do banco de dados. Após fazer a escolha, um código será gerado para adicionar o repositório.

Parando o servidor web:

# service apache2 stop


Adicionando o repositório e atualizando os pacotes:

# apt-get install software-properties-common dirmngr
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
# add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mariadb.mirror.iweb.com/repo/10.4/debian stretch main'
# apt-get update


Ao instalar o MariaDB, o gerenciador de pacotes removerá corretamente a versão anterior e instalará a nova, mantendo todos os bancos de dados. No entanto, é claro que fazer backup do banco de dados do Nextcloud é recomendado.

Instalamos o MariaDB e iniciamos o procedimento de atualização:

# apt-get install mariadb-server
# mysql_upgrade u root -p


Após inserir a senha, o MariaDB será atualizado e poderá ser configurado seguindo as instruções da segunda parte:

# mysql_secure_installation


Iniciamos o servidor web e verificamos o funcionamento do Nextcloud:

# service apache2 start


Atualização do Nextcloud para a versão 17

Para iniciar a atualização, é preciso fazer login no serviço com uma conta administrativa, acessar as configurações e abrir "Configurações Gerais" na seção administrativa. O Nextcloud mostrará a versão instalada e a versão disponível para atualização, que pode ser iniciada clicando no botão "Abrir janela de atualização". Após a iniciação, o Nextcloud fará um backup, baixará e verificará a integridade dos arquivos de atualização, ativará o modo de manutenção e atualizará os arquivos. Em seguida, há a pergunta "Manter o modo de manutenção ativo"? Aqui é necessário ter cuidado. Uma resposta positiva colocará o site em modo de manutenção — presume-se que o administrador saiba o que fazer a seguir e fará isso manualmente. Caso contrário, o Nextcloud fará tudo automaticamente, portanto, para continuar, clicamos no botão "Não".

As atualizações são executadas de forma iterativa. Primeiro, o Nextcloud 13.x será atualizado para a versão mais recente da série 14.x. Após isso, será necessário acessar novamente o painel de administração e iniciar a atualização, agora de 14.x para 15.x. E assim por diante até que a versão mais atual e disponível seja alcançada. Após cada atualização, na página "Configurações Gerais" na seção administrativa será exibida uma lista de sugestões e problemas encontrados, bem como recomendações para sua resolução. Abaixo falaremos sobre o que será necessário fazer após cada atualização.

Antes da atualização

Nas últimas versões do Nextcloud, é recomendado habilitar o PHP OPcache para melhorar o desempenho. É estranho que eu tenha esquecido esse detalhe há alguns anos, já que o OPcache apareceu ainda no PHP 5. Em /etc/php/7.2/apache2/php.ini, é necessário descomentar e editar os seguintes parâmetros:

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
pcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1


Atualização 13.x -> 14.x

Restaurando os índices das tabelas:

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices


Atualização 14.x -> 15.x

Preparamos o banco de dados do Nextcloud para habilitar a codificação de quatro bytes:

# mysql -u root -p
MariaDB [(none)]> ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> quit


Habilitamos o suporte à codificação de quatro bytes no Nextcloud:

# sudo -u www-data php /var/www/nextcloud/occ config:system:set mysql.utf8mb4 --type boolean --value="true"


Transformando tabelas:

# sudo -u www-data php /var/www/nextcloud/occ maintenance:repair


Recuperando índices de tabelas perdidos:

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices


Convertendo índices de tabelas para bigint:

# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint


Atualização 15.x -> 16.x

Recuperando índices de tabelas perdidos:

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices


Convertendo índices de tabelas para bigint:

# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint


Atualização 16.x -> 17.x

Nenhuma ação adicional é necessária.

Epílogo

Seguindo este guia, a máquina virtual com Nextcloud 13 foi atualizada. O uso de uma máquina virtual permite não fazer backups dos arquivos do Nextcloud e do seu banco de dados, pois em caso de problemas, basta restaurar o arquivo da máquina virtual salvo anteriormente e começar tudo de novo. No entanto, isso não se aplica à pasta com os dados dos usuários, que eu recomendo também ser salva junto com a máquina virtual do Nextcloud. No meu caso, o 'nuvem' é usado como uma pasta remota com versionamento automático, com a direção de sincronização 'apenas para lá', e perder esses dados não foi crítico para mim — eu teria só que sincronizar tudo de novo em algumas horas. Apesar do meu desprezo pela regra de vida 'salve-se por precaução', a atualização ocorreu sem problemas e todos os clientes funcionaram sem problemas com o Nextcloud 17. Estou impressionado, Frank Carlitchek — você e sua equipe estão fazendo um ótimo trabalho!

Após a atualização, decidi limpar os dados do usuário, que, segundo as estatísticas, ocupavam cerca de dois terabytes. Eu não tinha tantos dados ativos — a maior parte do volume era composta por arquivos de versões e arquivos excluídos. O problema que enfrentei foi que para um usuário, os dados excluídos eram tantos (não era nem pela quantidade, mas pelo número — muitos arquivos pequenos) que o Nextcloud não conseguia exibi-los na interface web. Depois de estudar o manual de administração, encontrei uma solução através da linha de comando. Talvez isso seja útil para alguém.

Para limpar arquivos excluídos do usuário user:

# sudo -u www-data php /var/www/nextcloud/occ trashbin:cleanup user


Para limpar arquivos de versões do usuário user:

# sudo -u www-data php /var/www/nextcloud/occ versions:cleanup user

Voltar ao início, ao índice.

História da criação da nuvem doméstica. Parte 5. Atualização 2019 – PHP 7.2, MariaDB 10.4 e Nextcloud 17.
Versão do texto: 1.1.1.
Data da primeira publicação: 15.01.2020.
Data da última edição: 15.01.2020.

Registro de atualizações1.1.1 [15-01-2020]
Correção de erros de digitação.

1.1.0 [15-01-2020]
Código para preparar o banco de dados do Nextcloud para habilitar a codificação de quatro bytes corrigido.

1.0.0 [15-01-2020]
Primeira versão.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster