Mudanças entre as edições de "Atualizacao OJS"
(Created page with "Tutorial de Migração e Atualização do OJS (v3.2.1.4 para v3.3.0.22)Este guia documenta o processo de migração de ambiente e atualização do Open Journal Systems (OJS) p...") |
|||
| Linha 1: | Linha 1: | ||
| − | Tutorial de Migração e Atualização do OJS (v3.2.1.4 para v3.3.0.22)Este guia documenta o processo de migração de ambiente e atualização do Open Journal Systems (OJS) para corrigir inconsistências estruturais e eliminar vulnerabilidades de segurança exploradas por bots.Passo 1: Backup e Exportação no Servidor Antigo (OJS 3.2.1.4)Acesse o servidor de produção antigo via terminal SSH e execute os comandos abaixo para exportar o banco de dados e compactar os arquivos de mídias e submissões.1.1. Exportação do Banco de | + | = Tutorial de Migração e Atualização do OJS (v3.2.1.4 para v3.3.0.22) = |
| + | |||
| + | Este guia documenta o processo de migração de ambiente e atualização do Open Journal Systems (OJS) para corrigir inconsistências estruturais e eliminar vulnerabilidades de segurança exploradas por bots. | ||
| + | |||
| + | == Passo 1: Backup e Exportação no Servidor Antigo (OJS 3.2.1.4) == | ||
| + | |||
| + | Acesse o servidor de produção antigo via terminal SSH e execute os comandos abaixo para exportar o banco de dados e compactar os arquivos de mídias e submissões. | ||
| + | |||
| + | === 1.1. Exportação do Banco de Dados === | ||
| + | <pre> | ||
| + | mysqldump -u seu_usuario_banco -p seu_banco_ojs > /tmp/ojs_prod_32.sql | ||
| + | </pre> | ||
| + | |||
| + | === 1.2. Compactação do Diretório de Uploads Privados (files_dir) === | ||
| + | <pre> | ||
| + | tar -czvf /tmp/uploads_ojs.tar.gz -C /usr/uploads . | ||
| + | </pre> | ||
| + | |||
| + | === 1.3. Compactação da Pasta Pública de Imagens e Temas === | ||
| + | <pre> | ||
| + | tar -czvf /tmp/public_ojs.tar.gz -C /var/www/ojs public | ||
| + | </pre> | ||
| + | |||
| + | == Passo 2: Importação e Preparação no Novo Servidor (Debian/PHP 8.1) == | ||
| + | |||
| + | Envie os arquivos gerados no `/tmp` do servidor antigo para o `/tmp` do novo servidor. Em seguida, prepare a estrutura do OJS 3.3.0.22 limpo. | ||
| + | |||
| + | === 2.1. Restauração dos Uploads Privados no Novo Caminho === | ||
| + | <pre> | ||
| + | mkdir -p /usr/uploads | ||
| + | tar -xzvf /tmp/uploads_ojs.tar.gz -C /usr/uploads | ||
| + | </pre> | ||
| + | |||
| + | === 2.2. Instalação do Código Limpo do OJS 3.3 e Restauração da Pasta Public === | ||
| + | <pre> | ||
| + | cd /var/www/ | ||
| + | # (Assumindo que você já baixou e extraiu o OJS 3.3 em /var/www/ojs3) | ||
| + | tar -xzvf /tmp/public_ojs.tar.gz -C /var/www/ojs3/ | ||
| + | </pre> | ||
| + | |||
| + | === 2.3. Criação e Importação do Banco de Dados de Homologação === | ||
| + | <pre> | ||
| + | mysql -u root -p -e "CREATE DATABASE ojs3_teste CHARACTER SET utf8 COLLATE utf8_general_ci;" | ||
| + | mysql -u root -p ojs3_teste < /tmp/ojs_prod_32.sql | ||
| + | </pre> | ||
| + | |||
| + | == Passo 3: Saneamento Preventivo do Banco de Dados (DBeaver/MySQL) == | ||
| + | |||
| + | Antes de iniciar a atualização, é obrigatório corrigir as inconsistências de dados e estruturas antigas que travam o atualizador do OJS. Abra o seu gerenciador de banco de dados (ex: DBeaver), conecte-se à base `ojs3_teste` e execute o bloco SQL abaixo integralmente: | ||
| + | |||
| + | <pre> | ||
| + | -- ================================================================= | ||
| + | -- CORREÇÃO 1: TABELA EMAIL_LOG (Erro de truncamento de dados) | ||
| + | -- ================================================================= | ||
| + | DELETE FROM email_log | ||
| + | WHERE assoc_id IS NULL | ||
| + | OR assoc_type IS NULL | ||
| + | OR assoc_id = 0 | ||
| + | OR assoc_type = 0; | ||
| + | |||
| + | DELETE FROM email_log WHERE NOT assoc_id REGEXP '^[0-9]+\$'; | ||
| + | |||
| + | -- ================================================================= | ||
| + | -- CORREÇÃO 2: TABELA REVIEW_ROUND_FILES (Erro 150 / Chave Estrangeira) | ||
| + | -- ================================================================= | ||
| + | -- Força as duas tabelas a usarem o mesmo motor InnoDB | ||
| + | ALTER TABLE submission_files ENGINE=InnoDB; | ||
| + | ALTER TABLE review_round_files ENGINE=InnoDB; | ||
| + | |||
| + | -- Iguala perfeitamente o tipo de dado da coluna de ligação nas duas tabelas | ||
| + | ALTER TABLE submission_files MODIFY file_id BIGINT NOT NULL; | ||
| + | ALTER TABLE review_round_files MODIFY file_id BIGINT NOT NULL; | ||
| + | |||
| + | -- Remove registros órfãos de revisões que apontam para arquivos inexistentes | ||
| + | DELETE FROM review_round_files | ||
| + | WHERE file_id NOT IN (SELECT file_id FROM submission_files); | ||
| + | |||
| + | -- Remove registros zerados ou nulos que corrompem a chave estrangeira posterior | ||
| + | DELETE FROM review_round_files WHERE file_id IS NULL OR file_id = 0; | ||
| + | </pre> | ||
| + | |||
| + | == Passo 4: Execução do Script de Atualização (CLI) == | ||
| + | |||
| + | Com os dados limpos, prepare o arquivo de configuração e dispare o interpretador de atualização do OJS via linha de comando. | ||
| + | |||
| + | === 4.1. Configuração Inicial === | ||
| + | Edite o arquivo `/var/www/ojs3/config.inc.php` com as credenciais do banco `ojs3_teste`, aponte o `files_dir = /usr/uploads` e ajuste temporariamente a diretiva de instalação: | ||
| + | <pre> | ||
| + | installed = Off | ||
| + | </pre> | ||
| + | |||
| + | === 4.2. Execução do Upgrade === | ||
| + | Acesse a pasta raiz do novo OJS e execute o comando: | ||
| + | <pre> | ||
| + | cd /var/www/ojs3 | ||
| + | php tools/upgrade.php upgrade | ||
| + | </pre> | ||
| + | * ''Nota: O processo realizará a migração pesada OJSv3_3_0UpgradeMigration. É normal o script levar entre 45 minutos e 2 horas processando as tabelas e arquivos em segundo plano. Aguarde a mensagem final: "Successfully upgraded to version 3.3.0.22".'' | ||
| + | |||
| + | == Passo 5: Ajuste Fino de Permissões no Linux (Pós-Upgrade) == | ||
| + | |||
| + | Para resolver erros de escrita de templates (`Smarty: unable to write file`) e garantir a segurança do ambiente contra injeções de arquivos por bots, aplique as permissões estritas no Debian: | ||
| + | |||
| + | <pre> | ||
| + | # 1. Garante que o root é dono do código e o grupo www-data (Apache) possa ler | ||
| + | cd /var/www/ojs3 | ||
| + | sudo chown -R root:www-data . | ||
| + | |||
| + | # 2. Libera escrita estritamente nas pastas de cache e uploads públicos | ||
| + | sudo chmod -R 775 cache/ public/ | ||
| + | |||
| + | # 3. Libera escrita no diretório privado de uploads | ||
| + | sudo chown -R root:www-data /usr/uploads | ||
| + | sudo chmod -R 775 /usr/uploads | ||
| + | |||
| + | # 4. Limpa resíduos e caches antigos gerados no processo | ||
| + | sudo rm -rf cache/*.php cache/t_compile/* cache/_db/* | ||
| + | </pre> | ||
| + | |||
| + | === 5.1. Ativação do Sistema === | ||
| + | Retorne ao arquivo `/var/www/ojs3/config.inc.php` e reative o OJS mudando a diretiva para: | ||
| + | <pre> | ||
| + | installed = On | ||
| + | </pre> | ||
Edição das 16h50min de 15 de julho de 2026
Índice
- 1 Tutorial de Migração e Atualização do OJS (v3.2.1.4 para v3.3.0.22)
- 1.1 Passo 1: Backup e Exportação no Servidor Antigo (OJS 3.2.1.4)
- 1.2 Passo 2: Importação e Preparação no Novo Servidor (Debian/PHP 8.1)
- 1.3 Passo 3: Saneamento Preventivo do Banco de Dados (DBeaver/MySQL)
- 1.4 Passo 4: Execução do Script de Atualização (CLI)
- 1.5 Passo 5: Ajuste Fino de Permissões no Linux (Pós-Upgrade)
Tutorial de Migração e Atualização do OJS (v3.2.1.4 para v3.3.0.22)
Este guia documenta o processo de migração de ambiente e atualização do Open Journal Systems (OJS) para corrigir inconsistências estruturais e eliminar vulnerabilidades de segurança exploradas por bots.
Passo 1: Backup e Exportação no Servidor Antigo (OJS 3.2.1.4)
Acesse o servidor de produção antigo via terminal SSH e execute os comandos abaixo para exportar o banco de dados e compactar os arquivos de mídias e submissões.
1.1. Exportação do Banco de Dados
mysqldump -u seu_usuario_banco -p seu_banco_ojs > /tmp/ojs_prod_32.sql
1.2. Compactação do Diretório de Uploads Privados (files_dir)
tar -czvf /tmp/uploads_ojs.tar.gz -C /usr/uploads .
1.3. Compactação da Pasta Pública de Imagens e Temas
tar -czvf /tmp/public_ojs.tar.gz -C /var/www/ojs public
Passo 2: Importação e Preparação no Novo Servidor (Debian/PHP 8.1)
Envie os arquivos gerados no `/tmp` do servidor antigo para o `/tmp` do novo servidor. Em seguida, prepare a estrutura do OJS 3.3.0.22 limpo.
2.1. Restauração dos Uploads Privados no Novo Caminho
mkdir -p /usr/uploads tar -xzvf /tmp/uploads_ojs.tar.gz -C /usr/uploads
2.2. Instalação do Código Limpo do OJS 3.3 e Restauração da Pasta Public
cd /var/www/ # (Assumindo que você já baixou e extraiu o OJS 3.3 em /var/www/ojs3) tar -xzvf /tmp/public_ojs.tar.gz -C /var/www/ojs3/
2.3. Criação e Importação do Banco de Dados de Homologação
mysql -u root -p -e "CREATE DATABASE ojs3_teste CHARACTER SET utf8 COLLATE utf8_general_ci;" mysql -u root -p ojs3_teste < /tmp/ojs_prod_32.sql
Passo 3: Saneamento Preventivo do Banco de Dados (DBeaver/MySQL)
Antes de iniciar a atualização, é obrigatório corrigir as inconsistências de dados e estruturas antigas que travam o atualizador do OJS. Abra o seu gerenciador de banco de dados (ex: DBeaver), conecte-se à base `ojs3_teste` e execute o bloco SQL abaixo integralmente:
-- ================================================================= -- CORREÇÃO 1: TABELA EMAIL_LOG (Erro de truncamento de dados) -- ================================================================= DELETE FROM email_log WHERE assoc_id IS NULL OR assoc_type IS NULL OR assoc_id = 0 OR assoc_type = 0; DELETE FROM email_log WHERE NOT assoc_id REGEXP '^[0-9]+\$'; -- ================================================================= -- CORREÇÃO 2: TABELA REVIEW_ROUND_FILES (Erro 150 / Chave Estrangeira) -- ================================================================= -- Força as duas tabelas a usarem o mesmo motor InnoDB ALTER TABLE submission_files ENGINE=InnoDB; ALTER TABLE review_round_files ENGINE=InnoDB; -- Iguala perfeitamente o tipo de dado da coluna de ligação nas duas tabelas ALTER TABLE submission_files MODIFY file_id BIGINT NOT NULL; ALTER TABLE review_round_files MODIFY file_id BIGINT NOT NULL; -- Remove registros órfãos de revisões que apontam para arquivos inexistentes DELETE FROM review_round_files WHERE file_id NOT IN (SELECT file_id FROM submission_files); -- Remove registros zerados ou nulos que corrompem a chave estrangeira posterior DELETE FROM review_round_files WHERE file_id IS NULL OR file_id = 0;
Passo 4: Execução do Script de Atualização (CLI)
Com os dados limpos, prepare o arquivo de configuração e dispare o interpretador de atualização do OJS via linha de comando.
4.1. Configuração Inicial
Edite o arquivo `/var/www/ojs3/config.inc.php` com as credenciais do banco `ojs3_teste`, aponte o `files_dir = /usr/uploads` e ajuste temporariamente a diretiva de instalação:
installed = Off
4.2. Execução do Upgrade
Acesse a pasta raiz do novo OJS e execute o comando:
cd /var/www/ojs3 php tools/upgrade.php upgrade
- Nota: O processo realizará a migração pesada OJSv3_3_0UpgradeMigration. É normal o script levar entre 45 minutos e 2 horas processando as tabelas e arquivos em segundo plano. Aguarde a mensagem final: "Successfully upgraded to version 3.3.0.22".
Passo 5: Ajuste Fino de Permissões no Linux (Pós-Upgrade)
Para resolver erros de escrita de templates (`Smarty: unable to write file`) e garantir a segurança do ambiente contra injeções de arquivos por bots, aplique as permissões estritas no Debian:
# 1. Garante que o root é dono do código e o grupo www-data (Apache) possa ler cd /var/www/ojs3 sudo chown -R root:www-data . # 2. Libera escrita estritamente nas pastas de cache e uploads públicos sudo chmod -R 775 cache/ public/ # 3. Libera escrita no diretório privado de uploads sudo chown -R root:www-data /usr/uploads sudo chmod -R 775 /usr/uploads # 4. Limpa resíduos e caches antigos gerados no processo sudo rm -rf cache/*.php cache/t_compile/* cache/_db/*
5.1. Ativação do Sistema
Retorne ao arquivo `/var/www/ojs3/config.inc.php` e reative o OJS mudando a diretiva para:
installed = On