<style>
div {text-align: left;}
section.present {font-size: 2.5rem;}
div.footnote {font-size: 1.5rem;}
div.reduced {font-size: 0.9em;}
.pkpContainer{display: flex;}
.pkpCol{flex: 1; width: 48%;}
.reveal pre {font-size: 1em;}
.reveal blockquote {
width:100%;
padding: 0.5rem 3rem;
}
.left {text-align: left;}
.center {text-align: center;}
.right {text-align: right;}
h1, h2 {
text-align: center;
text-transform: uppercase !important;}
}
h4,h5,h6 {text-align:left;}
h1.raw {padding-top:5vh}
.white img { background: rgb(255, 255, 255, 1) !important;}
.reveal .slides section .fragment.highlight-blue.visible {
color: white;
background-color: #1b91ff;
}
.logo.fixedTop {
position: fixed;
top: 0vh;
right: -20vh;
text-align: right;
}
.logo.fixedTop img {width: 50%; border: 0}
.note {
color: #AAA;
font-size: 0.8em !important;
text-align:left;
//padding: 0 5% !important;
}
</style>
# Instalación <br /> y migración <br />a OJS3
## (2019)
----
## TOC
- [x] Proceso de instalación.
- [x] Proceso de migración.
- [x] Archivos de configuración.
- [ ] Buenas y malas prácticas.
----
## Notas previas
Lo los pasos que se describen en este manual són de aplicación general, però las instrucciones que muestran, asumen que se trabaja bajo un entorno GNU/Linux (debian like) tal que:
- Directorio instalación OJS: /var/www/ojs
- Directorio de las subidas: /srv/ojs
- Servidor web: apache2
- Usuario y grupo: www-data
- Registro de errores: /var/log/apache2/error.log
> **Truco:** Antes de empezar con una nueva instalación o una actualización [descarga este manual](https://hackmd.io/drbqdxhnRXCl9aLO4SNvJg?view) y adapta las instrucciones a tu contexto.
---
# Instalación
----
## Manuales
- Instalación en **servidor**:
- OJS README:
- https://github.com/pkp/ojs/blob/master/docs/README.md
- PKP Docs:
- [PKP Administrator Guide](https://docs.pkp.sfu.ca/admin-guide/en/)
- [Aprendiendo OJS 3.1 - Capítulo 2: Instalación y actualización](https://docs.pkp.sfu.ca/learning-ojs/es/installing-upgrading#instalaci%C3%B3n)
- Bibliolab [Vídeo](https://www.youtube.com/watch?v=Uqz-xG3tyZc)
- Instalación en **pruebas**:
- Sobre XAMP: (Windows)
- [Manual](http://oca.unc.edu.ar/files/Libro-11.-Instalacion-del-OJS-en-un-servidor.pdf)
- [Vídeo](https://www.youtube.com/watch?v=vBIOBinePFU)
- Instalación sobre **docker**:
- [Pre-official docker for OJS](https://hub.docker.com/r/lucasdiedrich/ojs/) por Lucas Diedrich
----
## Requisitos
- PHP >= 7.1
- MySQL >= 4.1 or PostgreSQL >= 9.1.5
- Apache >= 1.3.2x or >= 2.0.4x or Microsoft IIS 6
- Sistema operativo: Cualquiera que soporte el software mencionado, como por ejemplo GNU/Linux, BSD, Solaris, Mac OS X, Windows...
----
# Como instalar en 7 cómodos pasos...
----
### 1) Instala un LAMP <sup>[1](#1)</sup>
```
$ sudo tasksel install lamp-server
```
Read more: https://www.rosehosting.com/blog/configure-system-locale-on-debian-9/
> **¿Seguro que funciona?**
> Antes de seguir, añade un archivo texto en la raiz de tu web (pe: test.php) con una llamada a [phpinfo()](https://www.garron.me/en/bits/phpinfo-script-test-php-apache.html) y comprueba con el navegador que el LAMP funciona correctamente y que cumples con todas las dependencias:
> - apache2-ssl apache2-utils php7-apache2 php7-zlib php7-json php7-phar php7-openssl php7-curl php7-mcrypt php7-pdo_mysql php7-ctype php7-zip php7-gd php7-xml php7-dom php7-iconv php7-mysqli php7-mbstring php7-session).
<div class="note"><a id="#1"><strong>[1]</strong></a> ¿Ya tenías un Linux/Apache/MariaDB/PHP funcionando?<br /> Entonces puedes obviar este paso.</div>
----
### 2) [Descarga](https://pkp.sfu.ca/ojs/ojs_download/) y descomprime OJS en la raiz de tu web.
```
$ cd /var/www
$ wget http://pkp.sfu.ca/ojs/download/ojs-3.1.2-1.tar.gz
$ tar xvzf ojs-3.1.2-1.tar.gz
```
----
### 3) Crea un directorio privado para las subidas.
```
$ mkdir /srv/ojs
```
> **IMPORTANTE:**
> Por motivos de seguridad, los directorios con datos privados no deben estar en un directorio mapeado por el servidor web (Pe: en vez de /var/www, usar /srv/ojs)
----
### 4) Revisa los permisos de acceso de archivos y directorios
```
- /var/www/html/ojs/
- config.inc.php
- public
- cache
- t_cache
- t_config
- t_compile
- _db
- /srv/ojs
```
```
$ chown www-data:www-data /var/www/html/ojs /srv/ojs -R
$ chmod +x config.inc.php public cache -R
```
> **IMPORTANTE:**
> El usuario de apache ("www-data" en el ejemplo) puede ser distinto en otras distribuciones o sistemas operativos.
----
### 5) Completa la instalación con el asistente web
```
# firefox http://yourdomain.com/path/to/ojs/
```
O si lo prefieres, usa el instalador desde línea de comandos:
```
$ php tools/install.php
```
----
### 6) Revisa "config.inc.php" para ajustar la instalación
<div class="pkpContainer reduced">
<div class="pkpCol">
- base_url = https://site.org
- base_url[index] = https://journal.org
- base_url[journal2] = https://journal2.net
- scheduled_tasks = On
- date_format_short = ...
- restful_urls = On
- enable_minified = On
- driver = mysqli
</div>
<div class="pkpCol">
- object_cache = none ?
- force_ssl = On
- allowed_html = ...
- smtp = On
- smtp_server = relay.mailserver.org
- index[application/pdf/postcript/word]
- oai_max_records = 1000
- recaptcha = On
- display_errors = Off
</div>
</div>
<div style="clear:both;" />
> Más opciones de configuración en la plantilla del archivo:
> https://github.com/pkp/ojs/blob/master/config.TEMPLATE.inc.php
----
### 7) Activa las tareas programadas
Existen tareas que OJS debe realizar con cierta periodicidad (enviar correos, analizar estadísticas...). Para ello, el método recomendado es la creación de una tarea programada (en el ejemplo, se ejecutarà cada hora):
```
# crontab -e www
0 * * * * php /path/to/ojs/tools /runScheduledTasks.php
```
> Si tu hosting no te permite configurar el cron, canvia de hosting. Si no es posible, usa el plugin de "Acron" que implementa la técnica del "[poor man's cron](https://www.drupal.org/project/poormanscron)".
----
<div class="center">
![](https://i.imgur.com/PUUGUlc.png =70%x)
> ¿Quieres saber [cómo actualizar a OJS3](#/2)?
</div>
---
# Actualización a OJS3
----
## Manuales
- OJS UPGRADE:
- https://github.com/pkp/ojs/blob/master/docs/UPGRADE.md
- PKP Docs:
- [PKP Administrator Guide](https://docs.pkp.sfu.ca/admin-guide/en/)
- [Aprendiendo OJS 3.1 - Capítulo 2: Instalación y actualización](https://docs.pkp.sfu.ca/learning-ojs/es/installing-upgrading#actualizaci%C3%B3n)
- PKP Guide - [5 Steps to OJS 3: Upgrade Planning for Service Providers](https://pkp.sfu.ca/2018/07/11/5-steps-to-ojs-3-upgrade-planning-for-service-providers)
- PKP [Vídeo](https://www.youtube.com/watch?v=LY4ZBdxLKDE)
- Actualización con **docker**:
- [Pre-official docker for OJS](https://hub.docker.com/r/lucasdiedrich/ojs/) por Lucas Diedrich
----
## Antes de empezar
<div class="pkpContainer reduced">
<div class="pkpCol" style="padding-top:4rem;">
### Lista de comprobación
- [ ] OJS 2.4 o superior
- [ ] Hiceste backup de:
- [ ] Base de datos
- [ ] Scripts PHP
- [ ] Archivos subidos
- [ ] Entorno de pruebas
- [ ] Has informado a lxs usuarixs?
- [ ] Tienes un plan B?
- [ ] Seguro que hiciste backup?
</div>
<div class="pkpCol">
![](https://i.imgur.com/Bnf1jcr.png =70%x)
</div>
</div>
<div style="clear:both;" />
----
## ¡¡Tengo prisa!!
<div class="pkpContainer reduced">
<div class="pkpCol">
**Guía rápida y muy resumida:**
1) Haz backup de tu viejo OJS 2.4 o superior.
2) Descarga e instala el nuevo código de OJS3.
3) Modifica config.inc.php para que encuentre la BD y ficheros.
4) Ejecuta el script de actualización.
5) Errores? Recupera el backup, investiga el error y GOTO 2.
</div>
<div class="pkpCol right">
![](https://i.imgur.com/QvNbxJC.gif)
</div>
</div>
<div style="clear:both;" />
----
# Como actualizar en 7 cómodos pasos...
----
### 1) Haz backup de tu OJS
La cópia ha de incluir el contenido de 2 directorios y la BD:
```
- Código ejectuable: /var/www/ojs
- Incluye los archivos públicos en: /var/www/ojs/public
- Archivos privados: /srv/ojs
```
Así pues:
```
$ mysqldump -u root -p --single-transaction --quick --lock-tables=false ojsDbName > ojs-database-$(date +%F).sql
$ tar cvzf ojs-code-public-%date%.tgz /var/www/ojs
$ tar cvzf ojs-private-%date%.tgz /srv/ojs
```
> **Old dog tip:**
> Se han dado reportado casos en los que la actualización no ha funcionado correctamente (BD inconsistentes, timeouts...). La actualización a OJS3 realiza cambios importantes en la BD y en los ficheros, por lo que la única manera de volver atrás es la cópia de seguridad. **En serio, es esencial hacerla y confirmar que está en buen estado.**
----
### 2) Monta tu servidor de pruebas
Se recomienda una máquina virtual o de un HW independiente para hacer las pruebas pero si lo prefieres, puedes utilizar un subdirectorio distinto en el mismo servidor de producción i con ello ahorrarte tener que sincronizar las versiones de LAMP.
Personalmente, soy partidario de docker, pues garantiza que las dependencias son exactamente las mismas.
<div class="center">
> ¿No sabes cómo montar un servidor LAMP?
> No hay problema: vuelve a la casilla 1 del [Manual de Instalación](https://hackmd.io/@marcbria/HkjaWzbgS#/1/4)
</div>
----
### 3) Confirma los requisitos
Confirma que tu servidor de producción y el de pruebas cumplen con todos los requisitos SW y HW:
- PHP >= 7.1
- Ejecuta: `$ php -v`
- Recomendación PHP 7.2 o superior.
- MySQL >= 4.1 or PostgreSQL >= 9.1.5
- Ejecuta: `$ mysql -V`
- Recomendación: MariaDB 10.2 o superior.
- Apache >= 1.3.2x or >= 2.0.4x or Microsoft IIS 6
- Ejecuta: `$ apache2 -v`
- Recomendación: Apache 2.4 o superior.
- Sistema operativo: Cualquiera que soporte el software mencionado, como GNU/Linux, BSD, Solaris (y si no queda más remedio: Mac OS X, Windows)...
- Ejecuta: `$ uname -a`
- Recomendación: Debian 10 o superior.
> **Old dog tip:**
> Confirmar las versiones te ahorrará muchos problemas.
----
### 3) Instala OJS3 en tu servidor de pruebas
- Descarga la última versión ESTABLE de OJS3:
```
$ wget http://pkp.sfu.ca/ojs/download/ojs-3.1.2-1.tar.gz
```
- Descomprime en tu directorio/servidor de pruebas:
```
$ cd /var/www
$ wget http://pkp.sfu.ca/ojs/download/ojs-3.1.2-1.tar.gz
$ tar xvzf ojs-3.1.2-1.tar.gz
$ mv ojs-3.1.2-1 ojs-test
```
----
### 4) Recupera archivos y configuración de tu OJS2
Asumiendo que ls backup se encuentran en /srv/backup:
- Restaura el directorio público:
```
$ cd /var/www/ojs-test
$ mkdir public
$ tar xvzf /srv/backup/ojs-code-public-%date%.tgz public
```
- Restaura el directorio privado:
```
$ cd /srv/ojs
$ mkdir ojs-test
$ cd ojs-test
$ tar cvzf /srv/backup/ojs-files-%date%.tgz
```
- Restaura el archivo de configuración
```
$ cd /var/www/ojs-test
$ tar xvzf ojs-code-%date%.tgz ./config.inc.php
```
----
### 6) Garantiza que los permisos son correctos
```
$ cd /var/www/html/ojs-test
$ chmod +x config.inc.php public -R
$ chown www-data:www-data /var/www/html/ojs-test /srv/ojs-test -R
```
> **Old dog tip:**
> Muchos de los problemas reportados en el foro son fruto de unos permisos incorrectos sobre los directorios de OJS.
----
### 7) Revisa tu fichero de configuración:
Este paso es muy importante por dos motivos:
- a) Si has montado el ojs de pruebas en el servidor de producción y no se configuran correctamente algunas variables, tu nuevo OJS podría estar intentando actualizar el OJS de producción, dejando tu instalación inservible.
- b) De momento el antiguo 2.x es totalmente compatible con OJS3, pero esto puede cambiar en el futuro. Los cambios se publican en el [/docs/RELEASE](https://github.com/pkp/ojs/blob/stable-3_1_2/docs/RELEASE) que se incluye en cada distribución.
Las variables que debes confirmar son:
<div class="pkpContainer reduced">
<div class="pkpCol">
- files_dir = /srv/ojs/ojs-test
- public_files_dir = public
- base_url = https://site.org/ojs-test
- driver = mysqli
</div>
<div class="pkpCol">
- host = yourHostNameOrIP
- username = dbUserName
- password = dbUserPwd
- name = dbName (pe: ojs-test)
</div>
</div>
<div style="clear:both;" />
----
### 8) Ejecuta el script de actualización
Comprueba primero que todo es correcto:
```
$ php tools/upgrade.php check
```
Y luego ejecuta el ugrade:
```
$ php tools/upgrade.php upgrade
```
Y luego... paciencia, pues si el OJS es grande, puede tardar 2-3 horas en terminar el proceso.
----
### Tips
- Confirma que tienes credenciales de admin del OJS.
- Si la instalación es multi-revista:
- Asegura que todas las revistas tienen un usuario Gestor asignado.
- Garantiza que todos los artículos están asignados a alguna sección:
```
SELECT a.article_id FROM articles a LEFT JOIN sections s ON (a.section_id = s.section_id) WHERE s.section_id IS NUL;
# Alternativamente:
SELECT * FROM a.articles WHERE section_id IS NULL;
```
Fuente: https://forum.pkp.sfu.ca/t/upgrade-from-ojs-2-4-7-to-3-0-1-fails/27716/18
Explicación: https://translate.google.com/translate?hl=en&sl=auto&tl=es&u=https%3A%2F%2Finfointerativa.com%2Fblog%2Fatualizacao-do-ojs-2-4-8-para-3-0-1%2F
----
- Grantiza que no hay entradas duplicadas en la tabla "review_round"
- ERROR: Upgrade failed: DB: Duplicate entry '120711-3-1' for key 'review_rounds_submission_id_stage_id_round_pkey
- Problemas con el charset:
- Revisa la configuración del charset en las tablas en las BBDD (Latin1, UTF8...)
- Revisa los warinings del proceso de upgrade.
- Faltan datos de nuestra revista (Logo, Pié de página, Privacidad, hoja estilo, favicon...)
- Revisión de "tabla journal_settings"
- Ej. OJS2 journalPageFooter -> OJS3 pageFooter
----
- No funciona el buscador de la revista:
- La tabla "submission_search_keyword_list" está vacía o es errónea.
```
$ php tools/rebuildSearchIndex.php” (5 horas )
```
---
# GRACIAS
#### Marc Bria Ramírez
Servei de publicacions de la UAB
PKP's technical committee (at large member)
##### marc.bria@uab.es
{"metaMigratedAt":"2023-06-14T22:30:20.805Z","metaMigratedFrom":"YAML","title":"Instalación/Migración a OJS3 (2019)","breaks":true,"slideOptions":"{\"transition\":\"slide\",\"previewLinks\":true}","contributors":"[{\"id\":\"2facdac7-0192-4693-87e8-442f43b2b059\",\"add\":19911,\"del\":5325}]"}