Esta guía te ayudará a actualizar Open Journal Systems (OJS). En ella se describe el conocimiento y las herramientas que necesitarás para actualizar tu sistema y proporciona un tutorial paso a paso.
Las siguientes instrucciones describen cómo actualizar OJS cuando corre cobre una pila LAMP (Linux, Apache, MySQL, PHP). Sin embargo, estos pasos se pueden adaptar tanto para actualizar otras herramientas desarrolladas por PKP (OMP, OPS) como para realizar actualizaciones de instalaciones en otros entornos de servidor.
¿Quieres saber cuándo se publican las nuevas versiones y estar al día de las novedades? Lee el foro de anuncios.
Autores/as: Marc Bria, Clinton Graham, Kaitlin Newson, Andrea Pritt. Dulip Withanage
¡ATENCIÓN! revisa la siguiente lista y comprueba que cuentas con los conocimientos y herramientas necesarios. Un error durante la actualización puede provocar errores irrecuperables.
Para usar esta guía, es necesaria experiencia con herramientas básicas de administración de sistemas, así como una comprensión de la pila de tecnología para la configuración de tu servidor.
Antes de empezar la actualización, puedes revisar docs/release-notes
y release notebook de tu versión específica para descubrir los cambios más importantes introducidos en cada versión. El archivo config.TEMPLATE.inc.php
incluye una descripción para la mayoría de los parámetros de configuración.
Ten en cuenta que, dependiendo del tamaño de tu sitio, una actualización puede tardar de unos minutos hasta varias horas.
Para definir la versión de una aplicación, todos los desarrollos de PKP usan una variante de versionado semántico y se nombran como major.minor.revision-build
. Cada número del nombre de versión describe el tipo de cambios que puedes esperar.
Tipo | Ejemplo | Descripción |
---|---|---|
mayor | 3.x.x-x |
Cambios estructurales disruptivos que modifican por completo el sistema y pueden afectar el funcionamiento de los módulos, la configuración de los servidores y todas las partes del sistema. |
menor | 3.3.x-x |
Cambios estructurales que pueden afectar a los módulos y a la configuración del servidor. |
revisión | 3.3.3-x |
Puede incorporar nuevas funcionalidades, pero los cambios estructurales se limitan al mínimo. |
compilación | 3.3.3-3 |
No hay cambios estructurales ni migraciones de bases de datos. |
Para poder comprender el proceso de actualización, primero debes determinar la distancia del “salto” entre versiones que implica la actualización. Es probable que un “salto” de la versión 3.3.0-6
a la versión3.3.0-7
pueda hacerse con un tiempo mínimo de inactividad. Sin embargo, un “salto” de la versión 2.4
a la 3.2
será un proceso largo y complejo con un mayor riesgo de introducir problemas.
Siempre deberías probar primero las actualizaciones en un entorno de prueba, incluso cuando el salto es mínimo (pe: entre versiones de construcción).
No siempre es posible actualizar directamente de una versión 2.x a cualquier versión 3.x. Cuando actualices desde una versión 2.x, primero deberás actualizar a versiones intermedias. La siguiente tabla describe los pasos necesarios.
Desde | Hasta | Descripción |
---|---|---|
< 2.4.8 |
2.4.8-x |
Antes de actualizar a 3.x, asegúrate de que has actualizado a la última versión 2.4.8-x . |
2.4.8-x |
3.2.1-x |
No puedes actualizar a la 3.3.x o posterior desde 2.x |
3.2.1-x |
3.3 >= |
Actualizar desde 3.2.1-x a cualquier versión 3.3 o posterior. |
El siguiente tutorial describe, paso a paso, el proceso recomendado para actualizar OJS de forma segura. Sin embargo, cada instalación es diferente y su entorno de servidor puede diferir sustancialmente. En todo momennto, debes revisar y entender los comandos antes de ejecutarlos.
Durante el tutorial verás comandos para los sistemas Debian o RHEL de Linux. Solo debes ejecutar el comando apropiado para tu servidor.
En este tutorial usaremos las siguientes variables para simplificar los comandos de la terminal.
VARIABLE | Predeterminada | Descripción |
---|---|---|
WEB_USER | www-data |
Usuario del servidor web |
WEB_GROUP | www-data |
Grupo del usuario del servidor web |
OJS_ROOT_PATH | /var/www |
Directorio raíz de OJS |
OJS_WEB_PATH | /var/www/html |
Directorio raíz de la web de OJS |
OJS_DB_HOST | db |
Nombre del host de la base de datos. |
OJS_DB_USER | ojs |
Usuario de la base de datos |
OJS_DB_PASSWORD | ojsPwd |
Contraseña de la base de datos |
OJS_DB_NAME | ojs |
Nombre de la base de datos |
OJS_BACKUP_PATH | /srv/backup/ojs |
Directorio en el que almacenar las copias de seguridad |
OJS_VERSION | ojs-3.3.0-8 |
Nombre de versión, tal como es nombrada en el archivo de ojs |
DATE | YYYYMMDD-HH:MM:SS |
La fecha y hora actual del sistema |
Reescribe el siguiente comando para definir estas variables con los valores adecuados para tu instalación.
$ WEB_USER="www-data" && \
WEB_GROUP="www-data" && \
OJS_ROOT_PATH="/var/www" && \
OJS_WEB_PATH="/var/www/html" && \
OJS_DB_HOST="db" && \
OJS_DB_USER="ojs" && \
OJS_DB_PASSWORD="ojsPwd" && \
OJS_DB_NAME="ojs" && \
OJS_BACKUP_PATH="/srv/backup/ojs" && \
OJS_VERSION="ojs-3.3.0-8" && \
OJS_PUBLIC_PATH="$OJS_WEB_PATH/public" && \
OJS_PRIVATE_PATH="$OJS_ROOT_PATH/files" && \
DATE=$(date "+%Y%m%d-%H:%M:%S")
Antes de empezar la migración, debes poner el sitio en “modo de mantenimiento” para asegurarte que los visitantes no vean mensajes de error y para que no haya cambios en la base de datos o en archivos mientras se realizan copias de seguridad. El “modo de mantenimiento” impide que se envíen nuevas peticiones a la aplicación.
OJS no cuenta todavía conn un modo de mantenimiento, pero estamos trabajando en ello.
Para emular este modo, modifica la directiva del VirtualHost
de tu Apache o coloca un archivo .htaccess
en el OJS_WEB_PATH
con el siguiente contenido.
order deny,allow
deny from all
ErrorDocument 403 "Este sitio está en mantenimiento y debería volver en breve. Gracias por tu paciencia."
Reinicia el servidor de Apache para aplicar los cambios:
(Debian)$ service apache2 reload
(RHEL)$ systemctl restart httpd
¡Atención! No te saltes este paso. Una actualización puede fallar por muchas razones y sin una copia de seguridad de respaldo puedes perder información importante de manera permanente.
Los siguientes pasos crearán una copia de seguridad de las siguientes carpetas y archivos.
Ruta del directorio | Descripción | VARIABLE |
---|---|---|
/var/www/html/public |
Archivos públicos | OJS_PUBLIC_PATH |
/var/www/files |
Archivos privados | OJS_PRIVATE_PATH |
/var/www/html/config.inc.php |
Archivo de configuración <code>config.inc.php </code> |
|
/var/www/html/.htaccess |
.htaccess or vhost (si existe) |
|
/var/www/html/plugins |
Módulos | |
locale files, custom code, etc. | Personalizaciones locales |
Copia de seguridad de la base de datos:
$ mysqldump --host="$OJS_DB_HOST" -u $OJS_DB_USER -p$OJS_DB_PASSWORD $OJS_DB_NAME --result-file="$OJS_BACKUP_PATH/backupDB-$DATE.sql"
Las codificaciones de caracteres son una fuente común de problemas de base de datos durante las actualizaciones.
Puedes leer más en: Guía de Administración (en inglés).
Copia de seguridad del directorio de archivos privados:
$ tar cvzf "$OJS_BACKUP_PATH/private-$DATE.tgz" "$OJS_PRIVATE_PATH"
Copia de seguridad del directorio de archivos privados:
$ tar cvzf "$OJS_BACKUP_PATH/ojsfiles-$DATE.tgz" "$OJS_WEB_PATH"
Copia de seguridad de cualquier otra personalización que hayas hecho al sistema, como módulos personalizados o archivos locales.
Utiliza tu copia de seguridad para crear un entorno de pruebas para testear la actualización. Los siguientes pasos pueden ser usados en tu entorno de pruebas (sandbox) para realizar una actualización.
Una vez completada la prueba, puedes ejecutar cualquier prueba automática o manual que hayas configurado para asegurarte de que la actualización no introdujo regresiones.
Solo realiza los siguientes pasos en tu entorno de producción en vivo si ya has completado una actualización de prueba en tu entorno sandbox.
Descargue el paquete de versión correcto.
$ cd "$OJS_ROOT_PATH"
$ wget "https://pkp.sfu.ca/ojs/download/$OJS_VERSION.tar.gz"
Lee el archivo README (en inglés) del archivo tar.gz
descargado y asegúrate de que tu sistema cumpla con los siguientes requisitos:
Además, asegúrate de realizar las siguientes comprobaciones:
Copia de seguridad los archivos de la aplicación:
$ mv "$OJS_WEB_PATH" "$OJS_BACKUP_PATH"
Descomprime el archivo de la versión de actualización:
$ mkdir "$OJS_WEB_PATH"
$ tar --strip-components=1 -xvzf "$OJS_VERSION.tar.gz" -C "$OJS_WEB_PATH"
Restaura el archivo config.inc.php
resguardado.
$ cp "$OJS_BACKUP_PATH/html/config.inc.php" "$OJS_WEB_PATH"
Ejecuta el siguiente comando para comparar tu archivo de configuración con la plantilla de la nueva versión. Añade o elimina cualquier opción de configuración según sea necesario.
$ diff "$OJS_BACKUP_PATH/config.inc.php" "$OJS_WEB_PATH/config.TEMPLATE.inc.php"
Si existe, restaura el archivo .htaccess
.
$ cp "$OJS_BACKUP_PATH/.htaccess" "$OJS_WEB_PATH"
Restaura los archivos públicos.
$ cp -r "$OJS_BACKUP_PATH/html/public/*" "$OJS_PUBLIC_PATH"
Establece los permisos de los nuevos archivos según los requisitos de la configuración de tu servidor.
(Debian)$ sudo chown -R $WEB_USER:$WEB_GROUP "$OJS_PUBLIC_PATH" "$OJS_WEB_PATH/cache/"
(RHEL)$ sudo chown -R apache:apache "$OJS_PUBLIC_PATH" "$OJS_WEB_PATH/cache/"
Establece los permisos para los directorios de plugin según sea necesario.
(Debian)$ sudo chown -R $WEB_USER:$WEB_GROUP "$OJS_WEB_PATH/plugins/"
(RHEL)$ sudo chown -R apache:apache "$OJS_WEB_PATH/plugins/"
Si el servidor se está ejecutando bajo SElinux, restablezca los contextos del archivo.
(RHEL)$ sudo restorecon -R "$OJS_WEB_PATH/"
Confirma que los números de versión coinciden con la versión deseada.
$ php tools/upgrade.php check
En la siguiente captura de pantalla, podemos ver como actualmente estamos en la versión 3.2.1-4
y que se actualizará a 3.3.0-6
.
Por último, cuando estés listo/a, ejecuta el script de actualización, teniendo en cuenta que puede tardar varias horas en completarse. Recomendamos especificar una cantidad explícita de memoria en la línea de comandos, ya que los valores por defecto del servidor pueden ser demasiado bajos. Si el proceso de actualización se queda sin memoria, fallará y tendrás que restaurar desde la copia de seguridad y comenzar de nuevo. También es posible que desees generar un registro (log) del resultado del proceso (output) log the output.
$ php -d memory_limit=2048M tools/upgrade.php upgrade
Si la actualización funciona correctamente, verás un mensaje informándote que la actualización fue exitosa.
El script de actualización imprimirá mucha información en el terminal. Recomendamos redireccionar el resultado del proceso (salida o “output”) a un archivo de registro (o “log”). Esto te ayudará a solucionar problemas si la actualización falla.
$ nohup php tools/upgrade.php upgrade > $OJS_ROOT_PATH/upgrade.log &
Para comprobar el progreso de la actualización con la salida redireccionada a un fichero, solo tienes que ejecutar el siguiente comando:
$ tail -f $OJS_ROOT_PATH/upgrade.log
Cuando la actualización se haya completado, elimina el “modo de mantenimiento” previamente configurado modificando la directiva VirtualHost
de Apache o actualizando tu archivo .htaccess
.
$ cd "$OJS_WEB_PATH/"
$ mv .htaccess .htaccess.disabled
Si modificaste los tiempos de espera y/o los límites de memoria de PHP, restaura sus valores originales.
Reinicia el servidor de Apache para que los cambios se apliquen.
(Debian)$ service apache2 reload
(RHEL)$ systemctl restart httpd
Es importante probar el sitio después de una actualización. Cualquier función principal para tus revistas debe ser probada, así como los módulos o temas personalizados una vez que se hayan reinstalado.
La siguiente es una breve lista de verificación que cubre casos de uso común.
Utiliza la Galería de plugins para restaurar los módulos personalizados que hayas instalado.
Si has instalado módulos personalizados que no están en la Galería de Plugins, comprueba con el distribuidor si existe una actualización del módulo compatible con tu versión de OJS actualizada.
Puede que desees conservar tus archivos de copia de seguridad, pero si no fuese el caso, puedes eliminarlos con el siguiente comando.
$ sudo rm -fR "$OJS_BACKUP_PATH/*"
Tu sitio OJS ha sido actualizado con éxito. ¡Felicidades!
Consulta los siguientes recursos si encuentras algún problema.
Copyright: Simon Fraser University holds the copyright for work produced by the Public Knowledge Project and has placed its documentation under a Creative Commons Attribution 4.0 International License.