A história da criação de uma nuvem doméstica. Parte 5. Atualizando 2019 - PHP 7.2, MariaDB 10.4 e Nextcloud 17

Dois anos atrás, publiquei uma série de artigos sobre o tópico de criação de um servidor da Web baseado no Debian 8 e o lançamento do serviço Nextcloud 11. Alguns meses depois, houve um complemento contendo informações "diferenciais" sobre a instalação do Nextcloud 13 no Debian 9. No final de 2018, apenas atualizou o Debian e o Nextcloud e não encontrou nenhum problema incomum ou interessante. A atualização no final de 2019 já era mais interessante e vale a pena escrever sobre.



Este artigo será útil principalmente para aqueles que, de acordo com as instruções dos últimos quatro artigos, “coletaram” o Nextcloud 13 no Debian 9 (envio cumprimentos a dez de meus assinantes no Nextcloud, especialmente aqueles para os quais foi a primeira experiência no mundo Linux). Para aqueles que farão um serviço do zero, recomendo que você tome como base os quatro primeiros artigos desta série, ajustados para as versões atuais do Debian 10 e Nextcloud 17. Para usuários experientes do Linux, o artigo pode ter algum lugar entre "trivial e inútil" e "não é ruim", tudo em um só lugar. ”



Sumário


Parte 1. Configurando seu ambiente Debian para uso diário
Parte 2. Criando um servidor - configurando o LAMP no Debian
Parte 3. Criando uma nuvem pessoal - instalando e configurando o Nextcloud
Parte 4. Atualização 2018 - Debian 9 e Nextcloud 13
Parte 5. Atualizando 2019 - PHP 7.2, MariaDB 10.4 e Nextcloud 17



Navegação rápida por capítulo


Prefácio
Atualização do Debian
Atualização do PHP para a versão 7.2
Atualize o MariaDB para a versão 10.4
Atualização do Nextcloud para a versão 17
Posfácio



Prefácio


Inicialmente, eu queria instalar e configurar o Nginx no Debian 10, além do qual o Nextcloud atual teria sido instalado sem problemas, mas por tudo isso, não pude escolher a hora, portanto, este artigo é um conjunto de instruções para atualizar o Nextcloud de 13 para a versão atual 17 da versão preliminar. preparando um servidor web.

Primeiro, você precisa explicar por que mudanças radicais foram necessárias no lado do servidor da web. Nosso servidor é baseado no Debian 9. atual e suportado. Você pode simplesmente atualizar o sistema operacional e todos os componentes do servidor da web receberão pelo menos atualizações de segurança. Tudo seria ótimo se usássemos o Nextcloud 13 ou atualizássemos apenas a versão 14. Mas o Nextcloud 13 não é mais suportado e o suporte para a 14ª versão está em andamento. A partir da 15ª versão, o Nexctcloud oferecerá a conversão do banco de dados em big int para suportar a codificação de quatro bytes, e com o MariaDB 10.1 isso será muito problemático. O Nexctcloud 17 requer PHP 7.1-7.3, enquanto o Debian 9 contém apenas a versão 7.0 em seus repositórios nativos. Seria mais correto, em termos de confiabilidade e previsibilidade, atualizar para a penúltima versão do Nextcloud, mas por alguns anos eu tive tanta certeza da confiabilidade desse serviço que desejei atualizar para a versão mais recente e atualizar o servidor da Web com uma reserva para o futuro. Portanto, para atualizar para o Nexctcloud 17, é ideal atualizar o MariaDB para a versão estável atual 10.4 e o PHP para 7.2. É 7.2 e não relevante 7.4. O fato é que o Nextcloud 13 requer PHP 5.6, 7.0 - 7.2 e o Nexctcloud 17 requer PHP 7.1 - 7.3. O uso do PHP 7.2 é conveniente para minimizar as ações de atualização. O servidor Apache não precisa ser atualizado - basta instalar as atualizações de segurança que são distribuídas pela equipe de suporte da Debian. Mas para atualizações, o MariaDB e o PHP precisarão conectar repositórios externos.

Quando me familiarizei com o Nextcloud, atualizei-o “manualmente”: o site foi colocado em modo de manutenção pelo console por uma equipe especial, o arquivo com a nova versão do site foi baixado e descompactado manualmente, os arquivos foram atualizados e o procedimento de atualização iniciado. Essa atualização geralmente levava aos resultados esperados, embora eu não tivesse preguiça de fazer uma cópia de backup do site, banco de dados e dados do usuário. Mas as atualizações automáticas às vezes levavam a todo tipo de surpresas. Mas já faz muito tempo, a estabilidade do mecanismo aumentou muito desde então, e dessa vez eu fiz atualizações exclusivamente através da interface da web. É verdade que ainda não era possível sair da linha de comando. Durante uma atualização iterativa para cada nova versão, vários avisos e notificações aparecerão no painel de controle, que precisará ser "removido" executando significativamente os comandos na linha de comando. Você não pode fazer isso - o serviço funcionará de qualquer maneira. Embora essa abordagem esteja fundamentalmente errada, o Nextcloud trabalhou para mim por três meses nesse modo antes de resolver deliberadamente os problemas que surgiam.



Atualização Debain


Pare o servidor da web:

# service apache2 stop 

E atualizado:

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

Após a atualização, você pode verificar a versão do sistema operacional e reiniciar para verificar se tudo começa normalmente após a atualização:

 # cat /etc/debian_version # reboot 



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


Pare o servidor da web:

 # service apache2 stop 

Adicione certificado e 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 

Se você excluir a versão antiga do PHP 7.0, o phpmyadmin também será excluído, pois limparemos os “rastreamentos” dos pacotes removidos usando o autoremove. Isso não causará muita dificuldade, já que nenhuma configuração especial foi feita para o phpmyadmin e a instalação novamente não será um problema.

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

Instalando os 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 especificamente para habr.com por AlexanderS .
O link para a fonte é opcional, mas sua referência é altamente desejável! ]

Verificamos a versão do PHP, iniciamos o servidor da web e verificamos a operabilidade do Nextcloud:

 # php -v # service apache2 start 



Atualize o MariaDB para a versão 10.4


O site do projeto possui uma página interessante na qual você precisa indicar seu sistema operacional, seu lançamento e selecionar a versão do banco de dados. Uma vez selecionado, o código será gerado para adicionar o repositório.

Pare o servidor da web:

 # service apache2 stop 

Adicione repositórios e pacotes de atualização:

 # 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 excluirá corretamente a versão anterior e instalará a nova, todos os bancos de dados serão salvos. No entanto, é recomendável fazer backup do banco de dados Nextcloud.

Instale o MariaDB e execute o procedimento de atualização:

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

Após digitar a senha, o MariaDB será atualizado e será possível configurá-lo, seguindo as instruções da segunda parte :

 # mysql_secure_installation 

Iniciamos o servidor da web e verificamos o desempenho do Nextcloud:

 # service apache2 start 



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


Para iniciar a atualização, você precisa fazer login no serviço em uma entrada administrativa, prosseguir para as configurações e abrir as "Configurações Gerais" na seção administrativa. O Nextcloud mostra 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 o início, o Nextcloud faz um backup, baixa e verifica a integridade dos arquivos de atualização, ativa o modo de manutenção e atualiza os arquivos. O que se segue é a pergunta "Manter o modo de manutenção ativo"? Você precisa ter cuidado aqui. Uma resposta positiva deixará o site no modo de manutenção - pressupõe-se que o administrador saiba o que fazer em seguida e o faça manualmente. Caso contrário, o Nextcloud fará tudo sozinho, então clique em "Não" para continuar.

As atualizações são executadas iterativamente. O Nextcloud 13.x será atualizado primeiro para a versão mais recente da ramificação 14.x. Depois disso, você precisará voltar ao centro de administração e iniciar a atualização, agora das 14.x às 15.x. E assim por diante, até a última versão atual possível ser alcançada. Após cada atualização, na página Configurações Gerais na seção administrativa, uma lista de sugestões e problemas encontrados, bem como recomendações para resolvê-los, será exibida. Abaixo, falaremos sobre o que precisará ser feito após cada atualização.

Antes da atualização

Nas versões recentes do Nextcloud, é recomendável ativar o PHP OPcache para melhorar o desempenho. É estranho que de alguma forma eu tenha perdido esse momento alguns anos atrás, desde que o OPcache apareceu no PHP 5. No /etc/php/7.2/apache2/php.ini, você precisa 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

Restauramos os índices das tabelas:

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

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

Preparando o banco de dados nextcloud para ativar 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 

Ative o suporte para 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" 

Transformamos tabelas:

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

Recupere índices perdidos da tabela:

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

Converta índices de tabela em bigint:

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

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

Recupere índices perdidos da tabela:

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

Converta índices de tabela em 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.



Posfácio



Seguindo essas instruções, a máquina virtual com o Nextcloud 13. foi atualizada. O uso da máquina virtual permite que você não faça o backup dos arquivos e do banco de dados do Nextcloud, pois, em caso de problemas, você pode simplesmente retornar o arquivo da máquina virtual salvo anteriormente e reiniciar. No entanto, isso não se aplica à pasta de dados do usuário, que eu recomendo também fazer backup com a máquina virtual Nextcloud. No meu caso, a “nuvem” é usada como uma pasta remota com controle de versão automático, além disso, com a direção da sincronização “apenas lá”, e para mim a perda desses dados não era crítica - eu precisaria sincronizar novamente por várias horas. Apesar da minha negligência com a regra de "permanecer em segurança" desenvolvida pela minha vida, a atualização ocorreu sem problemas e todos os clientes também ganharam dinheiro com o Nextcloud 17. Sem problemas.Estou impressionado, Frank Karlitshek - você e sua equipe estão fazendo um excelente trabalho!

Após a atualização, decidi limpar os dados do usuário, que, a julgar pelas estatísticas, ocupavam dois terabytes. Eu não tinha tantos dados operacionais - a maior parte do volume era ocupada por arquivos de versão e arquivos excluídos. O problema que encontrei foi que havia tantos dados excluídos para um usuário (não é nem o volume, mas a quantidade - muitos arquivos pequenos) que o Nextcloud não pôde exibi-los na interface da web. Depois de estudar o guia de administração, encontrei a solução através da linha de comando. Talvez isso seja útil para alguém.

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

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

Para limpar os arquivos de versão do usuário:

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



Retorne ao início, ao índice .



A história da criação de uma nuvem doméstica. Parte 5. Atualizando 2019 - PHP 7.2, MariaDB 10.4 e Nextcloud 17
Versão texto: 1.1.1.
Data da primeira publicação: 15/01/2020.
Última edição: 15/01/2020.

Atualizar log
1.1.1 [15-01-2020]
Correção de erros de digitação.

1.1.0 [15-01-2020]
O código para preparar o banco de dados do nexcloud para ativar a codificação de quatro bytes foi corrigido.

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

Source: https://habr.com/ru/post/pt483842/


All Articles