diff --git a/LEAME.md b/LEAME.md new file mode 100644 index 000000000..2b7bba3f5 --- /dev/null +++ b/LEAME.md @@ -0,0 +1,278 @@ +# iSkyLIMS + +[![Django](https://img.shields.io/static/v1?label=Django&message=4.2&color=azul?style=plastic&logo=django)](https://github.com/django/django) +[![Python](https://img.shields.io/static/v1?label=Python&message=3.8.10&color=verde?style=plastic&logo=Python)](https://www.python.org/) +[![Bootstrap](https://img.shields.io/badge/Bootstrap-v5.0-azulvioleta?style=plastic&logo=Bootstrap)](https://getbootstrap.com) +[![versión](https://img.shields.io/badge/versión-3.0.0-naranja?style=plastic&logo=GitHub)](https://github.com/BU-ISCIII/iskylims.git) + +La introducción de la secuenciación masiva (MS) en las instalaciones de genómica ha significado un crecimiento exponencial en la generación de datos, lo que requiere un sistema de seguimiento preciso, desde la preparación de la biblioteca hasta la generación de archivos fastq, el análisis y la entrega al investigador. El software diseñado para manejar esas tareas se llama Sistemas de Gestión de Información de Laboratorio (LIMS), y su software debe adaptarse a las necesidades particulares de su laboratorio de genómica. iSkyLIMS nace con el objetivo de ayudar con las tareas de laboratorio húmedo e implementar un flujo de trabajo que guíe a los laboratorios de genómica en sus actividades, desde la preparación de la biblioteca hasta la producción de datos, reduciendo los posibles errores asociados a la tecnología de alto rendimiento y facilitando el control de calidad de la secuenciación. Además, iSkyLIMS conecta el laboratorio húmedo con el laboratorio seco, facilitando el análisis de datos por parte de bioinformáticos. + +![Imagen](img/iskylims_scheme.png) + +De acuerdo con la infraestructura existente, la secuenciación se realiza en un instrumento Illumina NextSeq. Los datos se almacenan en un dispositivo de almacenamiento masivo NetApp y los archivos fastq se generan (bcl2fastq) en un clúster de cómputo de alto rendimiento Sun Grid Engine (SGE-HPC). Los servidores de aplicaciones ejecutan aplicaciones web para el análisis bioinformático (GALAXY), la aplicación iSkyLIMS y alojan la capa de información de MySQL. El flujo de trabajo de iSkyLIMS WetLab se ocupa del seguimiento y las estadísticas de la ejecución de la secuenciación. El seguimiento de la ejecución pasa por cinco estados: "registrado", el usuario de genómica registra la nueva ejecución de la secuenciación en el sistema, el proceso esperará hasta que la ejecución se complete en la máquina y los datos se transfieran al dispositivo de almacenamiento masivo; "Envío de hoja de muestra", el archivo de hoja de muestra con la información de la ejecución de la secuenciación se copiará en la carpeta de ejecución para el proceso de bcl2fastq; "Procesamiento de datos", se procesan los archivos de parámetros de ejecución y los datos se almacenan en la base de datos; "Estadísticas en ejecución", los datos de desmultiplexación generados en el proceso de bcl2fastq se procesan y almacenan en la base de datos, "Completado", todos los datos se procesan y almacenan correctamente. Se proporcionan estadísticas por muestra, por proyecto, por ejecución y por investigación, así como informes anuales y mensuales. El flujo de trabajo de iSkyLIMS DryLab se encarga de la solicitud de servicios de bioinformática y estadísticas. El usuario solicita servicios que pueden estar asociados con una ejecución de secuenciación. Se proporciona seguimiento de estadísticas y servicios. + +- [iSkyLIMS](#iskylims) + - [Instalación](#instalación) + - [Requisitos previos](#requisitos-previos) + - [Instalación de iSkyLIMS en Docker](#instalación-de-iskylims-en-docker) + - [Instalación de iSkyLIMS en su servidor con Ubuntu/CentOS](#instalación-de-iskylims-en-su-servidor-con-ubuntucentos) + - [Clonar el repositorio de GitHub](#clonar-el-repositorio-de-github) + - [Crear la base de datos de iSkyLIMS y otorgar permisos](#crear-la-base-de-datos-de-iskylims-y-otorgar-permisos) + - [Configuración de ajustes](#configuración-de-ajustes) + - [Ejecutar el script de instalación](#ejecutar-el-script-de-instalación) + - [Actualización a la versión 3.0.0 de iSkyLIMS](#actualización-a-la-versión-300-de-iskylims) + - [Prerrequisitos](#prerrequisitos) + - [Clonar el repositorio de GitHub](#clonar-el-repositorio-de-github-1) + - [Configuración de opciones](#configuración-de-opciones) + - [Ejecución del script de actualización](#ejecución-del-script-de-actualización) + - [Pasos que necesitan permisos de adminsitración](#pasos-que-necesitan-permisos-de-adminsitración) + - [Pasos que no necesitan de permisos de administración](#pasos-que-no-necesitan-de-permisos-de-administración) + - [Qué hacer si algo falla](#qué-hacer-si-algo-falla) + - [Pasos finales de configuración](#pasos-finales-de-configuración) + - [Configuración de SAMBA](#configuración-de-samba) + - [Verificación de correo electrónico](#verificación-de-correo-electrónico) + - [Configurar el servidor Apache](#configurar-el-servidor-apache) + - [Verificación de la instalación](#verificación-de-la-instalación) + - [Documentación de iSkyLIMS](#documentación-de-iskylims) + +## Instalación + +Si tienes algún problema o deseas informar de algún error, por favor, publícalo en [issue](https://github.com/BU-ISCIII/iSkyLIMS/issues) + +### Requisitos previos + +Antes de comenzar la instalación, asegúrate de lo siguiente: + +- Tienes privilegios de **sudo** para instalar los paquetes de software adicionales que iSkyLIMS necesita. +- Base de datos MySQL > 8.0 o MariaDB > 10.4 +- Tienes configurado un servidor local para enviar correos electrónicos. +- git > 2.34 +- Tienes Apache servidor v2.4 +- Tienes Python > 3.8 +- Tienes una conexión a la carpeta compartida de Samba donde se almacenan las carpetas de ejecución (por ejemplo, galera/NGS_Data). +- Dependencias: + - lsb_release: + - RedHat/CentOS: `yum install redhat-lsb-core` + - Ubuntu: `apt install lsb-core lsb-release` + +### Instalación de iSkyLIMS en Docker + +Puedes probar iSkyLIMS creando un contenedor Docker en tu máquina local. + +Clona el repositorio de GitHub de iSkyLIMS y ejecuta el script de Docker para crear el contenedor Docker. + +```bash +git clone https://github.com/BU-ISCIII/iSkyLIMS.git iSkyLIMS +sudo bash docker_install.sh +``` + +El script crea un contenedor de Docker Compose con 3 servicios: + +- web1: contiene la aplicación web iSkyLIMS +- db1: contiene la base de datos MySQL +- samba: contiene el servidor Samba + +Después de crear Docker y tener los servicios en funcionamiento, la estructura de la base de datos y los datos iniciales se cargan en la base de datos. Cuando se complete este paso, se le pedirá que defina al superusuario que tendrá acceso a las páginas de administración de Django. Puede escribir cualquier nombre, pero recomendamos que utilice "admin", ya que más adelante se le pedirá un usuario administrador cuando defina la configuración inicial. + +Siga el mensaje de instrucciones para crear la cuenta del superusuario. + +Cuando el script finalice, abra su navegador escribiendo **localhost:8001** para acceder a iSkyLIMS + +### Instalación de iSkyLIMS en su servidor con Ubuntu/CentOS + +#### Clonar el repositorio de GitHub + +Abra una terminal de Linux y vaya a un directorio donde se descargará el código de iSkyLIMS + +```bash +cd +git clone https://github.com/BU-ISCIII/iskylims.git iskylims +cd iskylims +``` + +#### Crear la base de datos de iSkyLIMS y otorgar permisos + +1. Cree una nueva base de datos llamada "iskylims" (esto es obligatorio). +2. Cree un nuevo usuario con permisos para leer y modificar esa base de datos. +3. Anote el nombre de usuario, la contraseña y la información del servidor de la base de datos. + +#### Configuración de ajustes + +Copia la plantilla de ajustes iniciales en un archivo llamado `install_settings.txt` + +```bash +cp conf/template_install_settings.txt install_settings.txt +``` + +Abra el archivo de configuración con su editor favorito para establecer sus propios valores para la base de datos, la configuración de correo electrónico y la dirección IP local del servidor donde se ejecutará iSkyLIMS. + +```bash +sudo nano install_settings.txt +``` + +#### Ejecutar el script de instalación + +iSkyLIMS debe instalarse en el directorio "/opt". + +Necesitará privilegios de administrador para instalar las dependencias. Para manejar diferentes responsabilidades de instalación dentro de la organización, donde es posible que no sea la persona con privilegios de administrador, nuestro script de instalación tiene estas opciones en el parámetro `--install`: + +- `dep`: para instalar los paquetes de software, así como los paquetes de Python dentro del entorno virtual. Se necesita permisos de administrador. +- `app`: para instalar solo el software de la aplicación iSkyLIMS sin necesidad de tener permisos de administrador. +- `full`: si tiene directamente permisos de administrador, puede instalar tanto las dependencias como la aplicación con esta opción. + +Ejecute uno de los siguientes comandos en una terminal de Linux para la instalación, de acuerdo con la descripción anterior. + +```bash +# para instalar solo las dependencias +sudo bash install.sh --install dep + +# para instalar la aplicación iskylims +bash install.sh --install app + +# para instalar ambos al mismo tiempo +sudo bash install.sh --install full +``` + +### Actualización a la versión 3.0.0 de iSkyLIMS + +Si ya tienes iSkyLIMS en la versión 2.3.0, puedes actualizar a la última versión estable, la 3.0.0. + +La versión 3.0.0 es una versión importante con actualizaciones significativas en dependencias de terceros como Bootstrap. También hemos realizado un gran trabajo en la refactorización y el cambio de nombres de variables/funciones que afectan a la base de datos. Para obtener más detalles sobre los cambios, consulta las notas de la versión. + +#### Prerrequisitos + +Debido a que en esta actualización se modifican muchas tablas en la base de datos, es necesario que hagas una copia de seguridad de: + +- La base de datos de iSkyLIMS. +- La carpeta de iSkyLIMS (carpeta de instalación completa, por ejemplo, /opt/iSkyLIMS). + +Se recomienda encarecidamente que hagas estas copias de seguridad y las guardes de manera segura en caso de que la actualización falle, para poder recuperar tu sistema. Por ejemplo crea una carpeta en `/home/dadmin/backup_pro` que contenga la base de datos y la carpeta de /opt/iskylims para tenerla a mano y poder [restaurar el sistema](#qué-hacer-si-algo-falla). + +#### Clonar el repositorio de GitHub + +También hemos cambiado la forma en que se instala y actualiza iSkyLIMS. A partir de ahora, iSkyLIMS se descarga en una carpeta del usuario y se instala en otro lugar (por ejemplo, /opt/). + +Abre una terminal de Linux y dirígete a un directorio donde se descargará el código de iSkyLIMS. + +```bash +cd < directorio distinto al directorio de instalación > +git clone https://gitlab.isciii.es/BU-ISCIII/iskylims.git iskylims +cd iskylims +``` + +#### Configuración de opciones + +Copia la plantilla de configuración inicial en un archivo llamado install_settings.txt + +```bash +cp conf/template_install_settings.txt install_settings.txt +``` + +Abre el archivo de configuración con tu editor favorito para establecer tus propios valores para la base de datos, la configuración de correo electrónico y la dirección IP local del servidor donde se ejecutará iSkyLIMS. +> Si utilizas un sistema basado en Windows para modificar el archivo, asegúrate de que el archivo se guarde con una codificación amigable para Linux, como ASCII o UTF-8. + +```bash +nano install_settings.txt +``` + +#### Ejecución del script de actualización + +Si en tu organización se requiere que las dependencias u otros elementos que necesiten permisos de administrador sean instalados por una persona diferente a la que instala la aplicación, puedes utilizar el script de instalación en varios pasos de la siguiente manera. + +El script te irá solicitando confirmación en algun paso, si todo está yendo bien sin errores deberás pulsar `y` o `yes` según te lo solicite. + +> Nota: Los errores: "ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'query' at line 1" son normales ya que se trata del título de las sentencias sql que no deben ejecutarse. Se puede ignorar. + +##### Pasos que necesitan permisos de adminsitración + +En primer lugar, debes cambiar el nombre de la carpeta de la aplicación en la carpeta de instalación (`/opt/iSkyLIMS`): + +```bash +# Necesitas ser usuario root para realizar esta operación +sudo mv /opt/iSkyLIMS /opt/iskylims +``` + +Asegúrate de que la carpeta de instalación tenga los permisos correctos para que la persona que instala la aplicación pueda escribir en esa carpeta. + +```bash +# En el caso de que tengas un script para esta tarea. Necesitarás ajustar este script de acuerdo al cambio en el nombre de la ruta: /opt/iSkyLIMS a /opt/iskylims +sudo /scripts/hardening.sh +``` + +En la terminal de Linux, ejecuta uno de los siguientes comandos que mejor se adapte a ti: + +```bash +# para actualizar solo las dependencias del software. ES NECESARIO DISPONER DE PERMISOS DE ROOT. +sudo bash install.sh --upgrade dep + +# PARA INSTALAR AMBAS COSAS AL MISMO TIEMPO. REQUIERE DE ROOT. SI SE VA A INSTALAR POR OTRA PERSONA SIN ROOT NO HACER ESTO. +sudo bash install.sh --upgrade full --ren_app --script drylab_service_state_migration --script rename_app_name --script rename_sample_sheet_folder --script migrate_sample_type --script migrate_optional_values --tables +``` + +##### Pasos que no necesitan de permisos de administración + +A continuación instalamos la aplicación de iskylims usando el siguiente comando: + +```bash +# para actualizar la aplicación de iskylims, incluyendo los cambios necesarios para la versión en base de datos. NO ES NECESARIO DISPONER DE PERMISOS ROOT. +bash install.sh --upgrade app --ren_app --script drylab_service_state_migration --script rename_app_name --script rename_sample_sheet_folder --script migrate_sample_type --script migrate_optional_values --tables +``` + +Por último, asegúrate que los permisos de la carpeta son correctos. + +```bash +# En el caso de que tengas un script para esta tarea. En esta versión han cambiado algunas rutas a ficheros, es posible que tengas que ajustar el script en consecuencia. +sudo /scripts/hardening.sh +``` + +#### Qué hacer si algo falla + +Cuando actualizamos la aplicación usando el script estamos realizando varios cambios en la base de datos. Si algo falla tenemos que restaurar el estado anterior, antes de que hubiesemos realizado ninguna acción. + +Necesitamos copiar de vuelta nuestro backup de carpet ade aplicación a /opt/iSkyLIMS (o la carpeta de instalación de nuestra elección), y restaurar la base de datos realizando algo como lo siguiente: + +```bash +sudo rm -rf /opt/iskylims +sudo cp -r /home/dadmin/backup_prod/iSkyLIMS/ /opt/ +sudo /scripts/hardening.sh +mysql -u iskylims -h dmysqlps.isciiides.es -p +# drop database iskylims; +# create database iskylims; +mysql -u iskylims -h dmysqlps.isciiides.es iskylims < /home/dadmin/backup_prod/bk_iSkyLIMS_202310160737.sql +``` + +### Pasos finales de configuración + +#### Configuración de SAMBA + +- Inicia sesión con la cuenta de administrador. +- Ve a Massive Sequencing +![Ir a WetLab](img/got_to_wetlab.png){width:50px} +- Ve a Configuración -> Configuración de SAMBA +- Completa el formulario con los parámetros apropiados para la carpeta compartida de SAMBA: +![Formulario SAMBA](img/samba_form.png) + +#### Verificación de correo electrónico + +- Ve a Massive Sequencing +- Ve a Configuración -> Configuración de correo electrónico +- Completa el formulario con los parámetros necesarios para la configuración de correo electrónico y trata de enviar un correo de prueba. + +#### Configurar el servidor Apache + +Copia el archivo de configuración de Apache que se encuentra en la carpeta `conf` según tu distribución dentro del directorio de configuración de Apache y cambia el nombre a iskylims.conf. Revisa cualquier requerimiento de tu sistema, se trata solo de un ejemplo. + +#### Verificación de la instalación + +Abre el navegador y escribe "localhost" o la "IP local del servidor" para comprobar que iSkyLIMS está en funcionamiento. + +También puedes verificar algunas funcionalidades mientras compruebas las conexiones de SAMBA y la base de datos usando: + +- Ve a [configurationTest](https://iskylims.isciii.es/wetlab/configurationTest/) +- Haz clic en Enviar +- Verifica todas las pestañas para asegurarte de que cada conexión sea exitosa. +- Ejecuta las 3 pruebas para cada máquina de secuenciación: MiSeq, NextSeq y NovaSeq. + +### Documentación de iSkyLIMS + +La documentación de iSkyLIMS está disponible en [https://iskylims.readthedocs.io/en/latest](https://iskylims.readthedocs.io/en/latest) diff --git a/README.md b/README.md index 0fd253de5..d585518e6 100644 --- a/README.md +++ b/README.md @@ -7,36 +7,56 @@ The introduction of massive sequencing (MS) in genomics facilities has meant an exponential growth in data generation, requiring a precise tracking system, from library preparation to fastq file generation, analysis and delivery to the researcher. Software designed to handle those tasks are called Laboratory Information Management Systems (LIMS), and its software has to be adapted to their own genomics laboratory particular needs. iSkyLIMS is born with the aim of helping with the wet laboratory tasks, and implementing a workflow that guides genomics labs on their activities from library preparation to data production, reducing potential errors associated to high throughput technology, and facilitating the quality control of the sequencing. Also, iSkyLIMS connects the wet lab with dry lab facilitating data analysis by bioinformaticians. -![Image](https://github.com/BU-ISCIII/iskylims/blob/main/img/iskylims_scheme.png) +![Image](img/iskylims_scheme.png) According to existent infrastructure sequencing is performed on an Illumina NextSeq instrument. Data is stored in NetApp mass storage device and fastq files are generated (bcl2fastq) on a Sun Grid Engine High Performance Computing cluster (SGE-HPC). Application servers run web applications for bioinformatics analysis (GALAXY), the iSkyLIMS app, and host the MySQL information tier. iSkyLIMS WetLab workflow deals with sequencing run tracking and statistics. Run tracking passes through five states: "recorded” genomics user record the new sequencing run into the system, the process will wait till run is completed by the machine and data is transferred to the mass storage device; “Sample sheet sent” sample sheet file with the sequencing run information will be copied to the run folder for bcl2fastq process; “Processing data” run parameters files are processed and data is stored in the database; “Running stats” demultiplexing data generated in bcl2fastq process is processed and stored into the database, “Completed” all data is processed and stored successfully. Statistics per sample, per project, per run and per investigation are provided, as well as annual and monthly reports. iSkyLIMS DryLab workflow deals with bioinformatics services request and statistics. User request services that can be associated with a sequencing run. Stats and services tracking is provided. - [iSkyLIMS](#iskylims) - [Installation](#installation) - - [iSkyLIMS docker installation](#iskylims-docker-installation) - - [Install iSkyLIMS in your server running ubuntu/CentOS](#install-iskylims-in-your-server-running-ubuntucentos) - [Pre-requisites](#pre-requisites) - - [Clone github repository](#clone-github-repository) - - [Create iskylims database and grant permissions](#create-iskylims-database-and-grant-permissions) - - [Configuration settings](#configuration-settings) - - [Run installation script](#run-installation-script) - - [Configure Apache server](#configure-apache-server) - - [Installation verification](#installation-verification) - - [Upgrade to iSkyLIMS version 3.0.0](#upgrade-to-iskylims-version-300) - - [Pre-requisites](#pre-requisites-1) - - [Executing the upgrade](#executing-the-upgrade) - - [Clone github repository](#clone-github-repository-1) - - [Configuration settings](#configuration-settings-1) - - [Runing upgrade script](#runing-upgrade-script) - - [Verification installation](#verification-installation) - - [iSkyLIMS documentation](#iskylims-documentation) + - [iSkyLIMS docker installation](#iskylims-docker-installation) + - [Install iSkyLIMS in your server running ubuntu/CentOS](#install-iskylims-in-your-server-running-ubuntucentos) + - [Clone github repository](#clone-github-repository) + - [Create iskylims database and grant permissions](#create-iskylims-database-and-grant-permissions) + - [Configuration settings](#configuration-settings) + - [Run installation script](#run-installation-script) + - [Upgrade to iSkyLIMS version 3.0.0](#upgrade-to-iskylims-version-300) + - [Pre-requisites](#pre-requisites-1) + - [Clone github repository](#clone-github-repository-1) + - [Configuration settings](#configuration-settings-1) + - [Running upgrade script](#running-upgrade-script) + - [Steps requiring root](#steps-requiring-root) + - [Steps not requiring root](#steps-not-requiring-root) + - [What to do if something fails](#what-to-do-if-something-fails) + - [Final configuration steps](#final-configuration-steps) + - [SAMBA configurarion](#samba-configurarion) + - [Email verification](#email-verification) + - [Configure Apache server](#configure-apache-server) + - [Verification of the installation](#verification-of-the-installation) + - [iSkyLIMS documentation](#iskylims-documentation) ## Installation For any problems or bug reporting please post us an [issue](https://github.com/BU-ISCIII/iSkyLIMS/issues) -## iSkyLIMS docker installation +### Pre-requisites + +Before starting the installation make sure : + +- You have **sudo privileges** to install the additional software packets that iSkyLIMS needs. +- Database MySQL > 8.0 or MariaDB > 10.4 +- Local server configured for sending emails +- Apache server v2.4 +- git > 2.34 +- Python > 3.8 +- Connection to samba shared folder where run folders are stored (p.e galera/NGS_Data) +- Dependencies: + - lsb_release: + - RedHat/CentOS: ```yum install redhat-lsb-core``` + - Ubuntu: ```apt install lsb-core lsb-release``` + +### iSkyLIMS docker installation You can test iSkyLIMS by creating a docker container on your local machine. @@ -59,24 +79,9 @@ Follow the prompt message to create the super user account. When script ends open your navigator typing **localhost:8001** to access to iSkyLIMS -## Install iSkyLIMS in your server running ubuntu/CentOS - -### Pre-requisites - -Before starting the installation make sure : - -- You have **sudo privileges** to install the additional software packets that iSkyLIMS needs. -- Database (MySQL/MariaDB) > 10.4 is running. -- Local server configured for sending emails -- Apache server is running. -- Python > 3.8 installed -- Connection to samba dir where run folders are stored. -*- Dependencies: - - lsb_release: - - RedHat/CentOS: ```yum install redhat-lsb-core``` - - Ubuntu: ```apt install lsb-core lsb-release``` +### Install iSkyLIMS in your server running ubuntu/CentOS -### Clone github repository +#### Clone github repository Open a linux terminal and move to a directory where iSkyLIMS code will be downloaded @@ -87,13 +92,13 @@ git clone https://github.com/BU-ISCIII/iskylims.git iskylims cd iskylims ``` -### Create iskylims database and grant permissions +#### Create iskylims database and grant permissions 1. Create a new database named "iskylims" (this is mandatory) 2. Create a new user with permission to read and modify that database. 3. Write down user, passwd and db server info. -### Configuration settings +#### Configuration settings Copy the initial setting template into a file named install_settings.txt @@ -105,11 +110,10 @@ Open with your favourite editor the configuration file to set your own values fo database ,email settings and the local IP of the server where iSkyLIMS will run. ```bash - -sudo nano install_settings.txt +nano install_settings.txt ``` -### Run installation script +#### Run installation script iSkyLIMS should be installed on the "/opt" directory. @@ -133,36 +137,25 @@ bash install.sh --install app sudo bash install.sh --install full ``` -### Configure Apache server - -Copy the apache configuration file according to your distribution inside the apache configutation directory and rename it to iskylims.conf - -### Installation verification - -After installation is completed and apache server is up and running open you navigator typing "localhost" or the "server local IP". - -## Upgrade to iSkyLIMS version 3.0.0 +### Upgrade to iSkyLIMS version 3.0.0 If you have already iSkyLIMS on version 2.3.0 you can upgrade to the latest stable version 3.0.0. Version 3.0.0 is a major release with important upgrades in third parties dependencies like bootstrap. Also, we 've done a huge work on refactoring and variables/function renaming that affects the database. For more details about the changes see the release notes. -### Pre-requisites +#### Pre-requisites Because in this upgrade many tables in database are modified it is required that you backup: - iSkyLIMS database -- iSkyLIMS document folder +- iSkyLIMS folder (complete installation folder, p.e /opt/iSkyLIMS) -It is highly recomended that you made these backups and keep them safely in case of -upgrade failure, to recover your system. +It is highly recomended that you made these backups and keep them safely in case of upgrade failure, to recover your system. -### Executing the upgrade +#### Clone github repository We've also change the way that iSkyLIMS is installed and upgraded. From now on iskylims is downloaded in a user folder and installed elsewhere (p.e /opt/). -### Clone github repository - Open a linux terminal and move to a directory where iSkyLIMS code will be downloaded @@ -172,7 +165,7 @@ git clone https://github.com/BU-ISCIII/iSkyLIMS.git iskylims cd iskylims ``` -### Configuration settings +#### Configuration settings Copy the initial setting template into a file named install_settings.txt @@ -182,39 +175,96 @@ cp conf/template_install_settings.txt install_settings.txt Open with your favourite editor the configuration file to set your own values for database ,email settings and the local IP of the server where iSkyLIMS will run. +> If you use a windows-based system for modifying the file, make sure the file is saved using a linux-friendly encoding like ASCII or UTF-8 ```bash - sudo nano install_settings.txt ``` -### Runing upgrade script +#### Running upgrade script If your organization requires that dependencies / stuff that needs root are installed by a different person that install the application the you can use the install script in several steps as follows. First you need to rename the folder app name in the installation folder (`/opt/iSkyLIMS`): +##### Steps requiring root + ```bash # You need root for this operation -mv /opt/iSkyLIMS /opt/iskylims +sudo mv /opt/iSkyLIMS /opt/iskylims ``` Make sure that the installation folder has the correct permissions so the person installing the app can write in that folder. +```bash +# In case you have a script for this task. You'll need to adjust this script according to the name changing: /opt/iSkyLIMS to /opt/iskylims +/scripts/hardening.sh +``` + In the linux terminal execute one of the following command that fit better to you: ```bash # to upgrade only software packages dependences. NEEDS ROOT. sudo bash install.sh --upgrade dep +# to install both software. NEEDS ROOT. +sudo bash install.sh --upgrade full --ren_app --script drylab_service_state_migration --script rename_app_name --script rename_sample_sheet_folder --script migrate_sample_type --script migrate_optional_values --tables +``` + +##### Steps not requiring root + +Next you need to upgrade iskylims app. Please use the command below: + +```bash # to upgrade only iSkyLIMS application including changes required in this release. DOES NOT NEED ROOT. bash install.sh --upgrade app --ren_app --script drylab_service_state_migration --script rename_app_name --script rename_sample_sheet_folder --script migrate_sample_type --script migrate_optional_values --tables +``` -# to install both software. NEEDS ROOT. -sudo bash install.sh --upgrade full --ren_app --script drylab_service_state_migration --script rename_app_name --script rename_sample_sheet_folder --script migrate_sample_type --script migrate_optional_values --tables +Make sure that the installation folder has the correct permissions. + +```bash +# In case you have a script for this task. Some paths have changed in this version, so you may need to adjust your hardening script. +/scripts/hardening.sh +``` + +#### What to do if something fails + +When we upgrade using the installation script we are performing several changes in the database. If something fails we need to restore the app situation before anything happened and start all over. + +We need to copy back the full `/opt/iSkyLIMS` folder back to `/opt` (or your installation path preference), and restore the database doing something like this: + +```bash +sudo rm -rf /opt/iskylims +sudo cp -r /home/dadmin/backup_prod/iSkyLIMS/ /opt/ +sudo /scripts/hardening.sh +mysql -u iskylims -h dmysqlps.isciiides.es +# drop database iskylims; +# create database iskylims; +mysql -u iskylims -h dmysqlps.isciiides.es iskylims < /home/dadmin/backup_prod/bk_iSkyLIMS_202310160737.sql ``` -### Verification installation +### Final configuration steps + +#### SAMBA configurarion + +- Login with admin account. +- Go to Massive sequencing +![go_to_wetlab](img/got_to_wetlab.png){width:50px} +- Go to Configuration -> Samba configuration +- Fill the form with the appropiate params for the samba shared folder: +![samba form](img/samba_form.png) + +#### Email verification + +- Go to Massive sequencing +- Go to Configuration -> Email configuration +- Fill the form with the needed params for your email configuration and try to send a test email. + +#### Configure Apache server + +Copy the apache configuration file according to your distribution inside the apache configutation directory and rename it to iskylims.conf + +#### Verification of the installation Open the navigator and type "localhost" or the "server local IP" and check that iSkyLIMs is running. @@ -225,6 +275,6 @@ You can also check some of the functionality, while also checking samba and data - Check all tabs so every connectin is successful. - Run the 3 tests for each sequencing machine: MiSeq, NextSeq and NovaSeq. -## iSkyLIMS documentation +### iSkyLIMS documentation iSkyLIMS documentation is available at [https://iskylims.readthedocs.io/en/latest](https://iskylims.readthedocs.io/en/latest) diff --git a/conf/first_install_tables.json b/conf/first_install_tables.json index bb46798cc..a6982e522 100644 --- a/conf/first_install_tables.json +++ b/conf/first_install_tables.json @@ -1856,6 +1856,14 @@ "error_text": "Sample names differ between sample sheet and demultiplexing stats." } }, +{ + "model": "wetlab.runerrors", + "pk": 34, + "fields": { + "error_code": "34", + "error_text": "Run has been cancelled or ended with errors." + } +}, { "model": "wetlab.runconfigurationtest", "pk": 1, diff --git a/conf/template_settings.txt b/conf/template_settings.txt index 4c8cd378a..5f01c644d 100644 --- a/conf/template_settings.txt +++ b/conf/template_settings.txt @@ -165,10 +165,11 @@ CRISPY_TEMPLATE_PACK = "bootstrap5" # Redirect to home URL after login (Default redirects to /accounts/profile/) LOGIN_REDIRECT_URL = "/" -EMAIL_BACKEND = ( - "django.core.mail.backends.console.EmailBackend" # During development only -) -# EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' +#EMAIL_BACKEND = ( +# "django.core.mail.backends.console.EmailBackend" # During development only +#) + +EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # EMAIL settings EMAIL_HOST = "emailhostserver" @@ -176,7 +177,7 @@ EMAIL_PORT = "emailport" EMAIL_HOST_USER = "emailhostuser" EMAIL_HOST_PASSWORD = "emailhostpassword" EMAIL_USE_TLS = emailhosttls -ALLOWED_EMAIL_DOMAINS = [] +ALLOWED_EMAIL_DOMAINS = ["isciii.es", "externos.isciii.es"] LOG_CRONTAB_FILE = os.path.join(BASE_DIR, "logs", "crontab.log") LOG_CLEAN_FILE = os.path.join(BASE_DIR, "logs", "crontab_cleanup.log") @@ -185,7 +186,6 @@ LOG_CLEAN_FILE = os.path.join(BASE_DIR, "logs", "crontab_cleanup.log") # Crontab settings CRONJOBS = [ ("*/15 * * * *", "wetlab.cron.looking_for_new_runs", ">>" + LOG_CRONTAB_FILE), - ("0 0 1 * *", "wetlab.cron.delete_invalid_run", ">>" + LOG_CLEAN_FILE), ] CRONTAB_COMMAND_SUFFIX = "2>&1" diff --git a/drylab/templates/drylab/add_resolution.html b/drylab/templates/drylab/add_resolution.html index 2bc5817f1..6fa79d5f0 100644 --- a/drylab/templates/drylab/add_resolution.html +++ b/drylab/templates/drylab/add_resolution.html @@ -1,122 +1,152 @@ {% extends 'core/base.html' %} {% load static %} - {% block content %} - -{% include 'core/jexcel_functionality.html' %} - -{% include "drylab/menu.html" %} - -
-
- {% include 'registration/login_inline.html' %} - {% if ERROR %} -
-
-
-
-

Result of your request

-
-
- {% for message in ERROR %} -

{{message}}

- {% endfor %} + {% include 'core/jexcel_functionality.html' %} + {% include "drylab/menu.html" %} +
+
+ {% include 'registration/login_inline.html' %} + {% if ERROR %} +
+
+
+
+

Result of your request

+
+
+ {% for message in ERROR %}

{{ message }}

{% endfor %} +
+
+ {% endif %} +
+
+ {% if created_resolution %} +
+
Resolution has been successfully created
+
+
+ Your resolution proposal has been successfully recorded: + {{ created_resolution.resolution_number }} +
+ + +
+
+ {% else %} +
+
+
+
+ Add resolution + {{ resolution_form_data.service_number }} +
+
+
+ {% csrf_token %} + {% if resolution_form_data.selected_avail_services %} +

+ Resolution for services : + {% for id, name in resolution_form_data.selected_avail_services %}{{ name }},{% endfor %} +

+ + {% endif %} + + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ {% if resolution_form_data.pipelines_data %} +
+
+
+
+
+ {% endif %} + + +
+

+ Fields marked with * are mandatory +

+
+
+
+
+ {% endif %} +
- {% endif %} -
-
- {% if created_resolution %} -
-
- Resolution has been successfully created -
-
-
Your resolution proposal has been successfully recorded: - {{created_resolution.resolution_number}}
- - -
-
- {% else %} -
-
-
-
Add resolution - {{resolution_form_data.service_number}}
-
-
- {% csrf_token %} - {% if resolution_form_data.selected_avail_services_data %} -

Resolution for services : {% for id, name in resolution_form_data.selected_avail_services_data %} {{name}},{% endfor %}

- - {% endif %} - - -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-
- {% if resolution_form_data.pipelines_data %} -
-
-
-
-
- {% endif %} - - -
-

Fields marked with * are mandatory

-
-
-
-
- {% endif %} -
-
-
-
- -{% endblock %} \ No newline at end of file + +{% endblock %} diff --git a/drylab/utils/resolutions.py b/drylab/utils/resolutions.py index a9370d4b8..a914e069f 100644 --- a/drylab/utils/resolutions.py +++ b/drylab/utils/resolutions.py @@ -242,9 +242,9 @@ def create_new_resolution(resolution_data_form): resolution_data_form["select_available_services"].append(avail_service[0]) # Add selected available services to the new resolution - for avail_sarvice in resolution_data_form["select_available_services"]: + for avail_service in resolution_data_form["select_available_services"]: avail_service_obj = drylab.utils.req_services.get_available_service_obj( - avail_sarvice + avail_service ) new_resolution.available_services.add(avail_service_obj) @@ -326,8 +326,8 @@ def prepare_form_data_add_resolution(form_data): resolution_form_data = {} selected_children_services = [] # pipelines_data = [] - if "childrenServices" in form_data: - list_of_ch_services = form_data.getlist("childrenServices") + if "children_services" in form_data: + list_of_ch_services = form_data.getlist("children_services") else: list_of_ch_services = False service_obj = drylab.utils.common.get_service_obj( @@ -348,10 +348,7 @@ def prepare_form_data_add_resolution(form_data): selected_children_services.append( [children, avail_serv_obj.get_service_description()] ) - resolution_form_data[ - "selected_avail_services_data" - ] = selected_children_services - + resolution_form_data["selected_avail_services"] = selected_children_services if drylab.models.Resolution.objects.filter( resolution_service_id=service_obj ).exists(): diff --git a/img/got_to_wetlab.png b/img/got_to_wetlab.png new file mode 100755 index 000000000..ec7e71321 Binary files /dev/null and b/img/got_to_wetlab.png differ diff --git a/img/samba_form.png b/img/samba_form.png new file mode 100755 index 000000000..777b64cd0 Binary files /dev/null and b/img/samba_form.png differ diff --git a/install.sh b/install.sh index 6bd912857..8e07fb181 100644 --- a/install.sh +++ b/install.sh @@ -668,7 +668,7 @@ if [ $install == true ]; then python3-venv \ libpq-dev \ python3-dev python3-pip python3-wheel \ - apache2-dev\ + apache2-dev cifs-utils \ gnuplot fi @@ -678,7 +678,7 @@ if [ $install == true ]; then yum install zlib-devel bzip2-devel openssl-devel \ wget httpd-devel mysql-libs sqlite sqlite-devel \ mariadb-devel libffi-devel \ - gnuplot + gnuplot cifs-utils fi ## Create the installation folder diff --git a/wetlab/utils/crontab_update_run.py b/wetlab/utils/crontab_update_run.py index 1821e3fdd..b6d4db9d8 100644 --- a/wetlab/utils/crontab_update_run.py +++ b/wetlab/utils/crontab_update_run.py @@ -647,8 +647,7 @@ def manage_run_in_sample_sent_processing_state(conn, run_process_objs): experiment_name, ) elif run_status == "cancelled": - run_process_obj.set_run_state("Processed Run") - logger.info("%s changed to Processed Run state", experiment_name) + wetlab.utils.crontab_process.handling_errors_in_run(experiment_name, 34) string_message = experiment_name + "was cancelled on the sequencer" wetlab.utils.common.logging_warnings(string_message, True) logger.debug(