¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Data Scientist y lenguaje R
  3. Despliegue Shiny en su propio Cloud
Extrait - Data Scientist y lenguaje R Autoformación en los aspectos básicos de la inteligencia artificial en el universo... (2a edición)
Extractos del libro
Data Scientist y lenguaje R Autoformación en los aspectos básicos de la inteligencia artificial en el universo... (2a edición) Volver a la página de compra del libro

Despliegue Shiny en su propio Cloud

Introducción

El objetivo de este capítulo es permitir que pueda implementar una aplicación Shiny siguiendo un número limitado de pasos y de manera totalmente autónoma. Para empezar, necesitamos llamar a un servidor para alojar nuestra aplicación. Para el resto de este capítulo, le sugerimos que utilice el servicio Oracle Cloud. En su versión gratuita, Oracle ofrece dos máquinas virtuales, que son suficientes para dejar funcionando una aplicación en línea en condiciones profesionales.

Algunas de las manipulaciones se realizarán en un entorno Linux y tendrán una explicación adicional para los no iniciados. Por lo demás, ofrecemos la herramienta Webmin, que le permite saltarse el modo línea de comandos para un determinado número de operaciones y administrar nuestra máquina Linux de forma remota. Solo se podrá acceder a la aplicación Shiny que se desplegará al final de este capítulo, a través de su dirección IP. Puede mappearla con su nombre de dominio personal si lo desea.

Alquiler de un servidor

 En el sitio de Oracle (www.oracle.com), cree una cuenta Cloud Account (tenga cuidado de no confundirla con la Oracle Account). Seleccione la oferta gratuita, que incluye dos instancias de máquinas virtuales, y finalice la creación de su cuenta.

 Identifíquese en el modo SSO (Single Sign-On) y acceda al dashboard de Oracle Cloud. La conexión SSO permite, con un único «paquete» de identificadores (SSL o del tipo login/mdp), obtener acceso a varios servicios o aplicaciones sin tener que identificarse en cada uno de ellos. Se puede considerar como una identificación de «sombrero».

Una vez en el dashboard de Oracle, observe que algunas secciones tienen la etiqueta Always Free Eligible. Oracle se compromete a mantener estos recursos en buenas condiciones, sin cargo, durante varios años.

Creación de una máquina virtual

Lo primero que vamos a hacer es crear una VM instance, que es un servidor con varios servicios preinstalados.

images/EP19-001.png

Creación de una instancia

En Linux (versión 7.9), la imagen de su VM (Virtual Machine) se crea de forma predeterminada, pero hay otras opciones disponibles en la versión gratuita. Vamos a cambiar el tipo de imagen (botón Edit) para tomar una imagen hecha en Canonical Ubuntu. Para ahorrar tiempo, cambiamos el sistema operativo a la versión completa 20.04. Estas versiones «full» son versiones LTS (Long Term Support) con garantía de soporte activo hasta cinco años (corrección de bugs, parches de seguridad, etc.). Las llamadas versiones «mínimas», son versiones básicas que requieren instalar alguna herramienta del sistema.

images/EP19-002.png

Imagen de la instancia

La forma de la instancia (Shape) se refiere a las características físicas de la VM que está alquilando. En su versión gratuita, Oracle ofrece una máquina que se basa en un procesador AMD, con una sola CPU, 1 GB de memoria y una capacidad de intercambio de red de 0,48 Gbps. Estas características se pueden modificar, pero tenga cuidado, porque algunas pueden generar costes adicionales (por ejemplo: asignación de más memoria, alquiler de una máquina física limpia, bare metal, etc.).

Debería obtener...

Conectarse en remoto a su máquina

Antes de crear nuestra instancia, debemos crear en primer lugar un proceso de conexión llamado SSH. SSH (por Secure Shell) es un protocolo de conexión segura que se basa, en gran medida, en el intercambio de claves de cifrado (pública/privada) al inicio de la conexión, a modo de autenticación. Es fundamental para garantizar la seguridad e integridad de su aplicación.

1. Instalación del cliente SSH

a. OpenSSH

Para generar un protocolo SSH, utilice software como OpenSSH o PuTTY, en función de sus hábitos y su sistema operativo (www.openssh.com, www.putty.org). Si usa Windows 10, puede habilitar OpenSSH directamente yendo a Configuración de Windows y seguidamente a Configuración - Aplicaciones - Características opcionales - Agregar una característica.

El cliente SSH se debe visualizar en la lista de las características instaladas:

images/EP19-004.png

Cliente OpenSSH en Windows

b. Git Bash

Para poder comunicarnos con nuestra máquina remota, usamos el símbolo del sistema Git Bash (que se puede descargar desde https://gitforwindows.org). Esto le permite emular un símbolo del sistema de Unix desde una máquina MS-DOS.

 Una vez que haya instalado Git Bash, vaya a la carpeta de instalación de OpenSSH (de forma predeterminada en C:\Windows\System32\OpenSSH). Abra Git Bash en modo administrador (haga clic con el botón...

Añadir los componentes de software básicos

La idea aquí es crear una máquina «digna de ese nombre» instalando en primer lugar varios componentes de software para que estén disponibles en toda la máquina.

# en cualquier momento a lo largo de este proceso puede verificar 
qué paquetes están instalados 
## verificación y copia de seguridad de la información de los paquetes 
instalados en la instancia 
sudo apt list > mi_lista_paquetes.txt 
view mi_lista_paquetes.txt 
 
#-------- Crea una máquina todoterreno 
    
# para ayudarlo si lo necesita para ciertas instalaciones  
sudo apt update 
sudo apt-get install build-essential 
sudo apt-get install software-properties-common dirmngr 
sudo apt-get install libcurl4-gnutls-dev 
sudo apt-get install libcairo2-dev 
sudo apt-get install libxt-dev 
sudo apt-get install xtail 
sudo apt-get install wget 
sudo apt-get install net-tools 
 
# para poder acceder a los paquetes fuera de los repositorios  
sudo apt-get install gdebi-core 
 
# verificación de la versión del compilador  g++ 
g++ --version 
 
# python 2 
sudo apt-get update 
sudo apt-get install python 
 
# python 3 
sudo apt-get update 
sudo apt install python3-pip 
##  lista de los paquetes py3 instalados ...

Instalación de R y Shiny

Ha llegado el momento de que instalemos R y Shiny en nuestra máquina Linux.

#-------- R et Shiny 
# añade repositorios de CRAN 
# leer http://cran.rstudio.com/bin/linux/ubuntu/ 
# nuestra versión ubuntu 20.04 LTS tiene el nombre corto "focal" (la  
18.04 LTS se llamaría bionic) 
 
 
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys  
E298A3A825C0D65DFD57CBB651716619E084DAB9 
 
sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ 
ubuntu focal-cran40/' 
 
# instala R 
sudo apt update 
sudo apt install r-base 
sudo apt install r-base-dev 
# Test R 
R --version 
sudo R 
q() 
 
 
# añadir Personal Package Archive, que permite un acceso sencillo a muchos 
paquetes R 
# leer para utilizar Personal Package Archive https://launchpad.net/ 
~c2d4u.team/+archive/ubuntu/c2d4u4.0+ 
sudo apt update -qq 
sudo add-apt-repository ppa:c2d4u.team/c2d4u4.0+ 
sudo apt update # porque es necesario que este repositorio se tenga 
en cuenta a partir de ahora 
 
# instalación de aplicaciones/paquetes importantes 
sudo apt update 
sudo apt-get install r-cran-rcpp 
sudo apt-get install r-cran-devtools 
sudo apt-get install r-cran-rstan 
sudo apt-get install r-cran-caret 
sudo apt-get install r-cran-tidyverse ...

Configuración de red y Linux

1. Configurar la VCN (Virtual Cloud Network)

Nuestro objetivo es hacer que los puertos estén disponibles para Shiny y otras aplicaciones que veremos más adelante. Una VCN nos permite interactuar y tomar el control de nuestro sistema de forma remota, desde su máquina (con o sin interfaz gráfica). De forma predeterminada, Oracle ya ha creado uno. Simplemente agregaremos nuestras propias reglas a la lista de reglas ya existentes.

 Haga clic en el nombre de su red subnet-XXXX-XXXX y edite las reglas para obtener el siguiente resultado:

  • Apertura de puerto: 3838 para Shiny

  • Apertura de puertos: 80 para Apache

  • Apertura de puertos: 10000 para Webmin (PERL)

images/EP19-007.png

Reglas VCN

2. Gestión del firewall

Compruebe si el firewall de Ubuntu está actico o no:

sudo ufw status 
Status: inactive 
 
# para activar/desactivar el cortafuegos 
sudo ufw enable 
sudo ufw disable 

Iptables es un software Linux que permite acceder y modificar las reglas de seguridad de nuestro cortafuegos durante el intercambio de datos, entre nuestra máquina y el exterior. Puede acceder a la lista de reglas actuales con el comando iptable -L.

sudo iptables -L 

Hay tres tipos de intercambios (podemos pensar en ellos como cadenas de paquetes de información):

  • Paquetes entrantes (Input)

  • Paquetes salientes (Output)

  • Paquetes en espera de ser transmitidos (Forward)

Estas cadenas pueden aceptarse (ACCEPT), rechazarse o ignorarse (REJECT o DROP), ponerse en cola (QUEUE) o devolverse a otra cadena (RETURN). A menudo es recomendable priorizar el uso de DROP en lugar de REJECT porque DROP no envía ninguna respuesta después de una solicitud externa.

Por lo tanto, llama «menos» la atención en caso de un intento de inicio de sesión malicioso. En el caso de un REJECT, nuestro cortafuegos envía un mensaje al cliente indicando que se rechaza la conexión.

Para comenzar, restableceremos las reglas del firewall y comenzaremos de nuevo de forma «correcta» con el comando sudo ufw reset. Todas las reglas anteriores han quedado establecidas o eliminadas.

sudo ufw reset 
 
Resetting all rules to installed defaults. This may disrupt existing ssh 
connections. Proceed with operation (y|n)? y 
Backing up 'user.rules' to '/etc/ufw/user.rules.20210414_133821' 
Backing up 'before.rules'...