Mudanças entre as edições de "Atualizacao OJS"
(→Passo 4: Automação de Tarefas Críticas (Cron Job)) |
|||
| Linha 325: | Linha 325: | ||
No OJS 3.5, as tarefas agendadas devem ser gerenciadas diretamente pelo agendador do Debian, aliviando o tempo de resposta das requisições HTTP normais. | No OJS 3.5, as tarefas agendadas devem ser gerenciadas diretamente pelo agendador do Debian, aliviando o tempo de resposta das requisições HTTP normais. | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Edição atual tal como às 16h20min de 17 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)
- 2 Tutorial de Atualização Final: OJS 3.3.0.22 para OJS 3.5.0-5 LTS
- 3 Documentação de Segurança e Pós-Instalação: OJS 3.5 LTS
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
Tutorial de Atualização Final: OJS 3.3.0.22 para OJS 3.5.0-5 LTS
Este guia orienta a etapa final de atualização do Open Journal Systems (OJS) para a versão mais recente com suporte de longo prazo (LTS), fechando permanentemente as vulnerabilidades contra bots.
Passo 1: Preparação do Pacote OJS 3.5 LTS
Acesse o terminal do novo servidor e faça o download do pacote limpo da versão mais recente diretamente do repositório do PKP.
1.1. Download e Extração do OJS 3.5
cd /tmp wget https://sfu.ca tar -xzvf ojs-3.5.0-5.tar.gz
1.2. Criação do Novo Diretório da Aplicação
Para manter o ambiente organizado, criaremos uma pasta temporária para a nova versão e depois substituiremos a antiga.
mv /tmp/ojs-3.5.0-5 /var/www/ojs35
Passo 2: Migração dos Arquivos Públicos e Configurações
O OJS 3.5 exige o reaproveitamento da pasta pública e do diretório de uploads que já foram saneados na etapa anterior.
2.1. Cópia da Pasta Public e Configuração
cp -R /var/www/ojs3/public /var/www/ojs35/ cp /var/www/ojs3/config.inc.php /var/www/ojs35/
2.2. Ajuste de Parâmetros no config.inc.php
Edite o arquivo `/var/www/ojs35/config.inc.php` para desativar o sistema temporariamente e conferir os caminhos:
- Altere:
installed = Off
- Garanta que o caminho dos arquivos está correto:
files_dir = /usr/uploads
Passo 3: Execução do Script de Upgrade Final (CLI)
Ao contrário da migração anterior, a atualização do 3.3 para o 3.5 é focada em novos recursos e otimizações, levando poucos minutos.
3.1. Execução do Comando
Acesse a pasta da nova versão e execute o interpretador de atualização:
cd /var/www/ojs35 php tools/upgrade.php upgrade
- Nota: Aguarde a exibição da mensagem de sucesso: "Successfully upgraded to version 3.5.0.5".
Passo 4: Substituição do Diretório de Produção e Permissões
Com o upgrade concluído com sucesso, vamos alternar as pastas para que a versão 3.5 assuma o caminho definitivo `/var/www/ojs3`.
4.1. Substituição de Pastas
cd /var/www mv ojs3 ojs3_antigo_33 mv ojs35 ojs3
4.2. Aplicação de Permissões Estritas Antibots
Execute os comandos de proteção no diretório definitivo do OJS:
cd /var/www/ojs3 sudo chown -R root:www-data . sudo chmod -R 775 cache/ public/ # Permissão no diretório de uploads externo sudo chown -R root:www-data /usr/uploads sudo chmod -R 775 /usr/uploads # Limpeza profunda de caches da versão anterior sudo rm -rf cache/*.php cache/t_compile/* cache/_db/*
4.3. Reativação do Sistema
Abra o arquivo `/var/www/ojs3/config.inc.php` e altere a seguinte diretiva para restabelecer o acesso público:
installed = On
Documentação de Segurança e Pós-Instalação: OJS 3.5 LTS
Este guia técnico detalha as camadas de proteção de infraestrutura, regras do servidor web Apache e mecanismos de defesa aplicados no ecossistema do Open Journal Systems (OJS 3.5) para eliminar ataques direcionados e cadastros automatizados de robôs.
Passo 1: Blindagem de Permissões de Arquivos no Linux
Para garantir que o usuário do servidor web (www-data) não consiga modificar ou injetar scripts maliciosos nos arquivos estruturais do OJS, redefinimos a árvore de permissões do sistema operacional de forma estrita.
1.1. Ajuste de Propriedade e Permissões Globais
Acesse a pasta definitiva de produção e transfira a propriedade do código-fonte para o usuário administrador (root), mantendo o Apache apenas no grupo de leitura.
cd /var/www/ojs3
sudo chown -R root:www-data .
sudo find . -type d -exec chmod 755 {} \;
sudo find . -type f -exec chmod 644 {} \;
1.2. Liberação de Escrita Restrita
Conceda permissão de gravação (775) exclusivamente nos diretórios onde o OJS precisa manipular arquivos temporários e receber uploads legítimos.
sudo chmod -R 775 cache/ public/ sudo chown -R root:www-data /usr/uploads sudo chmod -R 775 /usr/uploads sudo rm -rf cache/*.php cache/t_compile/* cache/_db/*
Passo 2: Configuração do reCAPTCHA v3 do Google (Invisível)
O OJS 3.5 exige o uso de chaves nativas do tipo **reCAPTCHA v3**. O uso de chaves v2 gera falhas críticas de validação de proprietário no formulário de registro.
2.1. Ajuste no Arquivo de Configuração
Edite o arquivo /var/www/ojs3/config.inc.php, localize a seção [captcha] e insira as credenciais geradas no console do Google:
[captcha] captcha = on captcha_on_register = on recaptcha = on recaptcha_public_key = "SUA_CHAVE_DE_SITE_V3" recaptcha_private_key = "SUA_CHAVE_SECRETA_V3" recaptcha_enforce_hostname = off
- Nota: Mantenha a diretiva recaptcha_enforce_hostname em off para evitar falsos positivos causados por proxies ou redirecionamentos de rede da UNESP.
Passo 3: Proteção da Pasta Pública e Regras do Apache
3.1. Criação do Arquivo de Inibição .htaccess
Crie um arquivo de controle interno na pasta de uploads públicos para impedir terminantemente a execução de qualquer interpretador de scripts backend.
sudo nano /var/www/ojs3/public/.htaccess
Cole o seguinte conteúdo estruturado para o Apache 2.4:
# 1. Mantém a liberação de scripts visuais legítimos do OJS
<Files ~ "js/\.(js|JS)$">
Require all granted
</Files>
# 2. Bloqueia a execução de QUALQUER script interpretável
<FilesMatch "\.(?:inc|php|php3|php4|php5|php7|php8|phtml|py|rb)$">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order Allow,Deny
Deny from all
</IfModule>
</FilesMatch>
# 3. Remove a capacidade do servidor de processar o tipo MIME dessas extensões nesta pasta
RemoveHandler .php .phtml .php3 .php4 .php5 .php7 .php8
RemoveType .php .phtml .php3 .php4 .php5 .php7 .php8
Ajuste as permissões de integridade do arquivo:
sudo chown root:www-data /var/www/ojs3/public/.htaccess sudo chmod 644 /var/www/ojs3/public/.htaccess
3.2. Configuração do Host Virtual do Apache e Redirecionamento HTTPS
Edite o arquivo de configuração do site (/etc/apache2/sites-available/ojs.conf) para mitigar ataques de clickjacking, ocultar dados do servidor e forçar o uso de SSL na porta 80 via redirecionamento nativo estável (301).
<VirtualHost *:80>
ServerName ojs.franca.unesp.br
Redirect permanent / https://unesp.br
</VirtualHost>
<VirtualHost *:443>
ServerName ojs.franca.unesp.br
DocumentRoot /var/www/ojs3
# Cabeçalhos Globais de Segurança
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
# Restrição física de execução e listagem na pasta Public
<Directory "/var/www/ojs3/public">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
<FilesMatch "\.(php|php3|php4|php5|php7|php8|phtml)$">
Require all denied
</FilesMatch>
</Directory>
</VirtualHost>
Aplique o teste de integridade e recarregue o servidor web:
sudo apache2ctl configtest sudo systemctl restart apache2
Passo 4: Automação de Tarefas Críticas (Cron Job)
No OJS 3.5, as tarefas agendadas devem ser gerenciadas diretamente pelo agendador do Debian, aliviando o tempo de resposta das requisições HTTP normais.