Cómo instalar, ejecutar y conectarse a Jupyter Notebook en un servidor remoto

El autor seleccionó a Apache Software Foundation para recibir una donación de $100 como parte del programa Write for DOnations .

Introducción

Jupyter Notebook es una aplicación web interactiva de código abierto que permite escribir y ejecutar código informático en más de 40 lenguajes de programación, incluidos Python , R , Julia y Scala . Jupyter Notebook, un producto del Proyecto Jupyter , es útil para la codificación iterativa, ya que permite escribir un pequeño fragmento de código, ejecutarlo y devolver el resultado.

Jupyter Notebook ofrece la posibilidad de crear documentos de cuaderno, denominados simplemente “cuadernos”. Los cuadernos creados a partir de Jupyter Notebook son documentos de investigación reproducibles y compartibles que incluyen elementos de texto enriquecido, ecuaciones, código y sus resultados (figuras, tablas, gráficos interactivos). Los cuadernos también se pueden exportar a archivos de código sin procesar, documentos HTML o PDF, o se pueden utilizar para crear presentaciones de diapositivas interactivas o páginas web.

En este artículo, le explicaremos cómo instalar y configurar la aplicación Jupyter Notebook en un servidor web Ubuntu 20.04 y cómo conectarse a ella desde su computadora local. Además, también repasaremos cómo usar Jupyter Notebook para ejecutar un código Python de ejemplo.

Prerrequisitos

Para completar este tutorial, necesitarás:

  • Una instancia de servidor Ubuntu 20.04. Este servidor debe tener un usuario que no sea root con privilegios sudo y un firewall configurado. Configúrelo siguiendo nuestra guía de configuración inicial del servidor .
  • Python 3, pip y el venvmódulo Python instalados en el servidor. Para ello, siga los pasos 1 y 2 de nuestro tutorial sobre Cómo instalar Python 3 y configurar un entorno de programación local en Ubuntu 20.04 .
  • Un navegador web moderno que se ejecuta en su computadora local y que utilizará para acceder a Jupyter Notebook.

Paso 1: Instalación de Jupyter Notebook

Dado que los cuadernos se utilizan para escribir, ejecutar y ver el resultado de pequeños fragmentos de código, primero deberá configurar la compatibilidad con el lenguaje de programación. Jupyter Notebook utiliza un kernel específico del lenguaje , un programa informático que ejecuta e introspecciona el código. Jupyter Notebook tiene muchos kernels en diferentes lenguajes , siendo el predeterminado IPython . En este tutorial, configurará Jupyter Notebook para ejecutar código Python a través del kernel IPython.

Suponiendo que haya seguido los tutoriales vinculados en la sección de requisitos previos, debería tener Python 3, pip y un entorno virtual instalados . Los ejemplos de esta guía siguen la convención utilizada en el tutorial de requisitos previos sobre la instalación de Python 3, que nombra el entorno virtual “ my_env”, pero puede cambiarle el nombre si lo desea.

Comience activando el entorno virtual:

  1. source my_env/bin/activate

A continuación, su mensaje aparecerá prefijado con el nombre de su entorno.

Ahora que estás en tu entorno virtual, continúa e instala Jupyter Notebook:

  1. python3 -m pip install jupyter

Si la instalación fue exitosa, verá un resultado similar al siguiente:

Output. . .Successfully installed MarkupSafe-1.0 Send2Trash-1.5.0 backcall-0.1.0 bleach-2.1.3 decorator-4.3.0 entrypoints-0.2.3 html5lib-1.0.1 ipykernel-4.8.2 ipython-6.4.0 ipython-genutils-0.2.0 ipywidgets-7.2.1 jedi-0.12.0 jinja2-2.10 jsonschema-2.6.0 jupyter-1.0.0 jupyter-client-5.2.3 jupyter-console-5.2.0 jupyter-core-4.4.0 mistune-0.8.3 nbconvert-5.3.1 nbformat-4.4.0 notebook-5.5.0 pandocfilters-1.4.2 parso-0.2.0 pexpect-4.5.0 pickleshare-0.7.4 prompt-toolkit-1.0.15 ptyprocess-0.5.2 pygments-2.2.0 python-dateutil-2.7.3 pyzmq-17.0.0 qtconsole-4.3.1 simplegeneric-0.8.1 six-1.11.0 terminado-0.8.1 testpath-0.3.1 tornado-5.0.2

Con esto, Jupyter Notebook se habrá instalado en su servidor. A continuación, veremos cómo ejecutar la aplicación.

Paso 2: Ejecución de Jupyter Notebook

Jupyter Notebook debe ejecutarse desde su VPS para que pueda conectarse a él desde su máquina local usando un túnel SSH y su navegador web favorito.

Para ejecutar el servidor Jupyter Notebook, ingrese el siguiente comando:

  1. jupyter notebook

Después de ejecutar este comando, verá un resultado similar al siguiente:

Output[I 19:46:22.031 NotebookApp] Writing notebook server cookie secret to /home/sammy/.local/share/jupyter/runtime/notebook_cookie_secret[I 19:46:22.365 NotebookApp] Serving notebooks from local directory: /home/sammy/environments[I 19:46:22.365 NotebookApp] 0 active kernels[I 19:46:22.366 NotebookApp] The Jupyter Notebook is running at:[I 19:46:22.366 NotebookApp] http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675[I 19:46:22.366 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).[W 19:46:22.366 NotebookApp] No web browser found: could not locate runnable browser.[C 19:46:22.367 NotebookApp]    Copy/paste this URL into your browser when you connect for the first time,    to login with a token:        http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675tokenExample_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675

Es posible que notes que en la salida aparece una No web browser foundadvertencia. Esto es de esperar, ya que la aplicación se está ejecutando en un servidor y es probable que no hayas instalado un navegador web en ella. En la siguiente sección de esta guía, se explicará cómo conectarse al Notebook en el servidor mediante el túnel SSH.

Por ahora, salga de Jupyter Notebook presionando CTRL+Cseguido de y, y luego presionando ENTERpara confirmar:

OutputShutdown this notebook server (y/[n])? y[C 20:05:47.654 NotebookApp] Shutdown confirmed[I 20:05:47.654 NotebookApp] Shutting down 0 kernels

Luego cierre la sesión del servidor usando el exitcomando:

  1. exit

Acaba de ejecutar Jupyter Notebook en su servidor. Sin embargo, para acceder a la aplicación y comenzar a trabajar con notebooks, deberá conectarse a la aplicación mediante un túnel SSH y un navegador web en su computadora local.

Paso 3: Conexión a la aplicación Jupyter Notebook con túnel SSH

Si instaló Jupyter Notebook en un servidor remoto, deberá conectarse a la interfaz web de Jupyter Notebook mediante el túnel SSH. Jupyter Notebook ejecuta su interfaz de navegador en un puerto específico de su servidor remoto (como :8888, :8889etc.), que no está expuesto a la web en general de manera predeterminada. El túnel SSH le permite conectarse de forma segura a los puertos de servidores remotos, a los que luego puede acceder mediante un navegador web local.

Tenga en cuenta que estas instrucciones están diseñadas para ejecutarse desde una ventana de terminal local, es decir, no desde aquella con la que se ha conectado al servidor.

Túnel SSH

Si usas Windows, necesitarás instalar una versión de OpenSSH para poder trabajar sshdesde una terminal. Si prefieres trabajar en PowerShell, puedes seguir la documentación de Microsoft para agregar OpenSSH a PowerShell. Si prefieres tener un entorno Linux completo disponible, puedes configurar WSL , el Subsistema de Windows para Linux, que se incluirá sshde forma predeterminada. Finalmente, como una tercera opción liviana, puedes instalar Git para Windows , que proporciona un entorno de terminal bash nativo de Windows que incluye el sshcomando. Cada uno de estos tiene un buen soporte y el que decidas usar dependerá de tus preferencias.

Si estás usando Mac o Linux, ya tendrás el sshcomando disponible en tu terminal.

Los pasos para crear un túnel SSH son similares a los de la guía Cómo conectarse a Droplets con SSH, excepto que se agregan parámetros adicionales en el sshcomando. En esta subsección, se describirán los parámetros adicionales necesarios en el sshcomando para crear un túnel correctamente.

La tunelización SSH se puede realizar ejecutando el siguiente comando SSH en una nueva ventana de terminal local:

  1. ssh -L 8888:localhost:8888 your_server_username@your_server_ip

El sshcomando abre una conexión SSH, pero -L especifica que el puerto indicado en el host local (cliente) se debe reenviar al host y puerto indicados en el lado remoto (servidor). Esto significa que todo lo que se esté ejecutando en el segundo número de puerto (por ejemplo, 8888) en el servidor aparecerá en el primer número de puerto (por ejemplo, 8888) en su computadora local.

Si recibe un mensaje que indica que el puerto 8888no está disponible, puede cambiarlo a otro número de puerto arbitrario inferior a 65535. Puerto8888No tiene un significado significativo pero se usa a menudo para demostraciones como ésta.

server_usernamees tu nombre de usuario (por ejemploSammy) en el servidor que usted creó y your_server_ipes la dirección IP de su servidor.

Por ejemplo, para el nombre de usuario sammyy la dirección del servidor your_server_ip, el comando sería:

  1. ssh -L 8888:localhost:8888 sammy@your_server_ip

Si no hay errores con este comando, iniciará sesión en su servidor remoto. Desde allí, active el entorno virtual:

  1. source ~/environments/my_env/bin/activate

Luego ejecute la aplicación Jupyter Notebook:

  1. jupyter notebook

Para conectarse a Jupyter Notebook, use su navegador web favorito para navegar al puerto local en el host local: . Ahora que está conectado a Jupyter Notebook, continúe con el Paso 4 para aprender a usarlo.http://localhost:8000

Paso 4: uso de Jupyter Notebook

Cuando se accede a través de un navegador web, Jupyter Notebook proporciona un Panel de control de Notebook que actúa como un explorador de archivos y le brinda una interfaz para crear, editar y explorar notebooks. Piense en estos notebooks como documentos (guardados con una .ipynbextensión de archivo) que puede completar con cualquier cantidad de celdas individuales. Cada celda contiene un editor de texto interactivo que se puede usar para ejecutar código o escribir texto renderizado. Además, los notebooks le permiten escribir y ejecutar ecuaciones, incluir otros medios enriquecidos, como imágenes o gráficos interactivos, y se pueden exportar y compartir en varios formatos ( .ipyb, .pdf, .py). Para ilustrar algunas de estas funciones, crearemos un archivo de notebook desde el Panel de control de Notebook, escribiremos un tablero de texto con una ecuación y ejecutaremos un código de Python 3.

En este punto, debería haberse conectado al servidor mediante un túnel SSH y haber iniciado la aplicación Jupyter Notebook desde su servidor. Después de navegar a , se le presentará una página de inicio de sesión:http://localhost:8000

En el campo Contraseña o token en la parte superior, ingrese el token que se muestra en la salida después de ejecutar jupyter notebookdesde su servidor:

Output[I 20:35:17.004 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret[I 20:35:17.314 NotebookApp] Serving notebooks from local directory: /home/sammy[I 20:35:17.314 NotebookApp] 0 active kernels[I 20:35:17.315 NotebookApp] The Jupyter Notebook is running at:[I 20:35:17.315 NotebookApp] http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675[I 20:35:17.315 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).[W 20:35:17.315 NotebookApp] No web browser found: could not locate runnable browser.[C 20:35:17.316 NotebookApp]. . .

Alternativamente, puede copiar esa URL desde la salida de su terminal y pegarla en la barra de direcciones de su navegador.

Automáticamente, Jupyter Notebook mostrará todos los archivos y carpetas almacenados en el directorio desde el que se ejecuta. Cree un nuevo archivo de Notebook haciendo clic en Nuevo y luego en Python 3 en la parte superior derecha del Panel de Notebook:

En este nuevo cuaderno, cambie la primera celda para que acepte la sintaxis Markdown haciendo clic en Celda Tipo de celda Markdown en la barra de navegación de la parte superior. Además de Markdown, este tipo de celda también le permite escribir ecuaciones en LaTeX. Por ejemplo, escriba lo siguiente en la celda después de cambiarla a Markdown:

# EquationLet us now implement the following equation in Python:$$ y = x^2$$where $x = 2$

Para convertir el Markdown en texto enriquecido, presione CTRL + ENTERy el siguiente debería ser el resultado:

Puede utilizar las celdas de Markdown para tomar notas y documentar su código.

Ahora, implementemos una ecuación e imprimamos el resultado. Haga clic en Insertar Insertar celda debajo para insertar una celda. En esta nueva celda, ingrese el siguiente código:

x = 2y = x*xprint(y)

Para ejecutar el código, presione CTRL + ENTERy el resultado será el siguiente:

Estos son algunos ejemplos relativamente sencillos de lo que puede hacer con Jupyter Notebook. Sin embargo, es una aplicación muy potente con muchos casos de uso potenciales. Desde aquí, puede agregar algunas bibliotecas de Python y usar el notebook como lo haría con cualquier otro entorno de desarrollo de Python.

Conclusión

Ahora debería poder escribir código y texto Python reproducibles utilizando Jupyter Notebook ejecutándose en un servidor remoto. Para obtener una visita rápida de Jupyter Notebook, haga clic en Ayuda en la barra de navegación superior y seleccione Visita de la interfaz de usuario como se muestra aquí:

Si estás interesado, te recomendamos que aprendas más sobre Jupyter Notebook consultando la documentación del proyecto Jupyter . Además, puedes aprovechar lo que aprendiste en este tutorial y aprender a codificar en Python 3 .

SUSCRÍBETE A NUESTRO BOLETÍN 
No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio