# Upgrade OJS2 a OJS3 (sobre CentOS)
## Introducción
El servidor de revistas reside en una máquina con CentOS y PHP 5.6.
Para ejecutarse y actualizar, OJS3 requiere de PHP7 por lo que se realiza el upgrade en un nuevo servidor (newServer) con la versión de php requerida.
La base de datos mysql reside un un servidor externo restringida por iptables (al que el nuevo servidor puede acceder).
Esta arquitectura permitirá que en un futuro próximo la aplicación se incorpore en el cluster de la institución, ofreciendo alta disponibilidad, mejor rendimiento y backup.
## Contexto
- Servidor origen:
- Name: oldServer
- IP: 192.168.0.1
- Servidor destino:
- Name: newServer
- IP: 192.168.0.2
- Web:
- URL: https://revistas3.uaa.mx
- Path: /var/www/html/ojs3
- Privado: /var/www/ojs3-files
- BD:
- Server: dbServer
- Name: revistas
- Usr: ojs
## Proceso
- Realizar una réplica de la BD de OJS2.
- Servidor: dbServer
- DB: revistas
- Copiar los archivos públicos y privados de OJS2 (oldServer).
- Privados: /var/www/ojs3-files
- Públicos: /var/www/html/public
- Confirmar versiones de Apache, PHP, MySQL.
- Instalar dependencias:
```
$ yum install poppler-utils
$ wget https://forensics.cert.org/cert-forensics-tools-release-el7.rpm
$ rpm -Uvh cert-forensics-tools-release-el7.rpm
$ yum --enablerepo=forensics
$ yum install pstotext antiword
```
- Revisar la configuración de php para timeouts & upload size:
```
$ vim /etc/php.ini
```
- Descargar el nuevo fuente en el folder web:
```
$ cd /var/www/html
$ wget http://pkp.sfu.ca/ojs/download/ojs-3.1.2-1.tar.gz
```
- Descomprimir y crear un enlace simbolico
```
$ tar xvzf ojs-3.1.2-1.tar.gz
$ ln -s ojs3 ojs-3.1.2-1
```
- Garantizar permisos para el usuario de apache:
```
$ chown apache:apache ojs-3.1.2-1 -Rf
```
- Revisar la configuración de OJS3 (ver manual)
```
$ vim config.inc.php
```
- Revisar permisos
```
$ cd /var/www/html/ojs3
$ chmod +x config.inc.php public -R
$ chown apache:apache /var/www/html/ojs3 /var/www/ojs3-files -R
```
- Parece que con un CentOS regalaban un SELinux luego...
```
sudo chcon -t httpd_sys_content_t /var/www/html/ojs3 -R
sudo chcon -t httpd_sys_rw_content_t /var/www/ojs3-files -R
sudo chcon -t httpd_sys_rw_content_t /var/www/html/ojs3/public -R
sudo chcon -t httpd_sys_rw_content_t /var/www/html/ojs3/cache -R
sudo chcon -t httpd_sys_rw_content_t /var/www/html/ojs3/plugins -R
```
- Ejecutar el upgrade:
```
$ php tools/upgrade.php check
$ php tools/upgrade.php upgrade
```
- Cargar la última traducción de es_ES.
```
$ mkdir tmp
$ cd tmp
$ tar xvzf ../es_ES-v2.tgz
$ chown apache:apache * -R
$ \cp * ../ . -a
```
- Configurar el crontab
```
$ crontab -e www
# Añadir:
0 * * * * php /var/www/html/ojs3/tools/runScheduledTasks.php
```
## Referencias:
- [Manual de migración para la UAA](https://hackmd.io/drbqdxhnRXCl9aLO4SNvJg)
- [UPGRADE from PKP](https://github.com/pkp/ojs/blob/ojs-3_1_2-1/docs/UPGRADE.md)
- Issues: [OJS with CentOS (SELinux problems)](https://forum.pkp.sfu.ca/t/installing-3-0-file-put-errors/4493/7)