Passo a passo para migração
Atualização de versão
Esse guia explica como atualizar uma versão mais antiga do AtoM (incluindo as versões do ICAAtoM
1.1 a 1.3.1 ou mais recentes) para a 2.3.
Importante
Se você utiliza uma versão mais antiga do ICA-AtoM (anterior a 1.1), por favor atualize
para a última versão do ICA-AtoM antes de seguir as instruções.
Considere a desativação do seu site durante a atualização. Redirecione os usuários para uma página
de manutenção ou coloque o seu site no modo de “somente leitura” ao executar a atualização.
Copie os dados antigos
Neste ponto, você deve ter uma instalação funcional do AtoM 2.3, utilizando um banco de dados
novo.
1. copiar o conteúdo do diretório uploads antigo, assim como o banco de dados:
sudo su
cd /home/fiocruz
wget http://www.blogbasearch.coc.fiocruz.br/wp-content/uploads/2016/02/icaatom130.sql
wget http://www.blogbasearch.coc.fiocruz.br/wp-content/uploads/2016/02/r.tgz
wget http://www.blogbasearch.coc.fiocruz.br/wp-content/uploads/2016/02/uploads.tgz
tar -vxzf r.tgz
tar -vxzf uploads.tgz
cp -R uploads/* /usr/share/nginx/atom/uploads
cp -R r/ /usr/share/nginx/atom/
2. Delete e recrie o novo banco de dados AtoM para remover tabelas e colunas desnecessárias:
mysql -uroot -p -e 'drop database atom; create database atom character set utf8 collate utf8_unicode_ci;'
3. Agora, carregue o conteúdo dentro do novo banco de dados:
mysql -uroot -p atom < icaatom130.sql
Execute a rotina de atualização
Aqui talvez seja o passo mais crítico no processo de upgrade. Se você encontrar algum erro, por
favor consulte o FAQ do AtoM, pesquise no Grupo do Google
https://groups.google.com/forum/#!forum/ica-atom-users, e caso você não encontre uma solução,
sinta-se à vontade para deixar uma pergunta lá mesmo.
Em primeiro lugar, mude o diretório atual:
cd /usr/share/nginx/atom
Agora, execute a tarefa upgrade-sql:
php symfony tools:upgrade-sql
Gerar novamente a referência dos objetos digitais e thumbnails (opcional)
Se você estiver atualizando a partir da versão 1.3.1 ou anterior, você pode querer reindexar a
referência do objeto digital e imagens thumbnails. O tamanho dos thumbnails era menor no AtoM
1.x, para que estas imagens, muitas vezes, pudessem aparecer. Uma convenção de nomenclatura para
o diretório também foi adicionada para tornar a localização do objeto digital mestre mais segura.
Primeiro, verifique se você está no diretório ( /usr/share/nginx/atom).
Agora, execute a tarefa regen-derivatives:
php symfony digitalobject:regen-derivatives
Reconstrua o índice de pesquisa e limpe o cache
Para que todas essas mudanças tenham efeito, você precisará reindexar os arquivos que você
importou em seu banco de dados e limpar o cache.
Em primeiro lugar, reconstrua o índice de pesquisa:
php symfony search:populate
Em seguida, atribua permissões para o usuário do NGINX e limpe o cache para remover todos os dados desatualizados da aplicação:
chown www-data:www-data /usr/share/nginx/atom/
./refresh.sh
Observação: O arquivo refresh.sh só tem na nossa customização! É necessário criá-lo (dentro da raiz do AtoM
nano refresh.sh
Com o seguinte conteúdo:
sudo php /usr/share/nginx/atom/symfony cc sudo php /usr/share/nginx/atom/symfony cc sudo service php5-fpm restart sudo service nginx restart
Erros na migração (conteúdo extra)
Seguem abaixo alguns erros encontrados durante a migração da versão 1.3 para a 2.1:
SQLSTATE [42S01]: Base table or view already exist: 1050 Table ‘aip’ already exists
SQLSTATE [42S01]: Base table or view already exist: 1050 Table ‘access_log’ already exists
Solucionamos esse tipo de erro acima efetuando a exclusão das tabelas.
mysql –uroot –p –e “drop table atom.access_log”; mysql –uroot –p –e “drop table atom.aip”;
Ao aplicar o commando php symphony search:populate a fim de persistir os dados no banco,
podemos nos deparar com alguns erros como o travamento da operação. Esse bloqueio pode
se dar pelas seguintes razões mais conhecidas:
1. Registros vazios nas tabelas
Procure identificar os registros-pai a fim de rastrear a exclusão. É importante também
remover a referência na tabela atom.slug
Abaixo exemplificamos com comandos SQL a ordem como os registros devem ser excluídos, começando pelo mais granular. Ao acharmos o registro Planeta, descobrimos que ele tem vários filhos até chegarmos no registro Cidade. Precisamos começar a exclusão do menor para o maior nível.
SELECT * FROM atom.information_object_i18n where title like "%Planeta%"; SELECT * FROM atom.information_object where parent_id=8144; Fundo Planeta SELECT * FROM atom.information_object where parent_id=101113; Grupo Continente SELECT * FROM atom.information_object where parent_id=101955; Subgrupo País SELECT * FROM atom.information_object where parent_id=102019; Item Cidade ------------------------------------------- SELECT * FROM atom.information_object_i18n where id=101113; SELECT * FROM atom.information_object where id=101113; SELECT * FROM atom.slug where object_id=101113; SELECT * FROM atom.object where id=101113; #Essas devem ser as últimas exclusões no banco DELETE FROM atom.information_object_i18n where id=101113; DELETE FROM atom.information_object where id=101113; DELETE FROM atom.slug where object_id=101113; DELETE FROM atom.object where id=101113; ---------------------------------------- SELECT * FROM atom.information_object_i18n where id=101955; SELECT * FROM atom.information_object where id=101955; SELECT * FROM atom.slug where object_id=101955; SELECT * FROM atom.object where id=101955; delete FROM atom.information_object_i18n where id=101955; delete FROM atom.information_object where id=101955; delete from atom.slug where object_id=101955; delete from atom.object where id=101955; ---------------------------------- SELECT * FROM atom.information_object_i18n where id=102019; SELECT * FROM atom.information_object where id=102019; SELECT * FROM atom.slug where id=102019; SELECT * FROM atom.object where id=102019; #Essas devem ser as primeiras exclusões delete FROM atom.information_object_i18n where id=102019; delete FROM atom.information_object where id=102019; delete from atom.slug where object_id=102019; delete from atom.object where id=102019;
2. Registros persistidos com os seguintes caracteres em sequência “;
Segue abaixo o código SQL para “limpar” os registros do banco que contem a
expressão “;
O Atom não deixa persistir os dados caso haja um registro com esses caracteres em
sequência no banco.
Segue um exemplo real:
select id, title from icaatom130.information_object_i18n where title like '%”;%';
Com o comando acima selecionamos o id e o título na tabela principal onde ficam os
registros a fim de identificarmos os que contém os caracteres “;
update icaatom130.information_object_i18n set title = replace(title, '”;', '”,') where id in ( 7692, 7761, 24008, 24012, 24165, 24168, 24307, 56671, 56828, 56832, 143904, 150713, 23 150714, 150715, 150717);
Acima aplicamos um update em todos os registros encontrados e fizemos a
substituição dos caracteres “; por ‘,
Após esse procedimento tente o comando abaixo novamente:
php symphony search:populate