Como configurar o Jupyter Notebook com o Python 3 no Ubuntu 20.04 e se conectar via protocolo de tunelamento SSH

Introdução

O Jupyter Notebook é um aplicativo Web de código aberto que permite que você crie e compartilhe códigos interativos, visualizações, e mais. Essa ferramenta pode ser usada com várias linguagens de programação, incluindo o Python, Julia, R, Haskell, e Ruby. Muitas vezes, ele é usado para trabalhar com dados, modelagem estatística e machine learning.

Jupyter Notebooks (ou apenas “Notebooks”) são documentos produzidos pelo app Jupyter Notebook, que contêm tanto códigos de computador quanto elementos de rich text (parágrafos, equações, figuras, links, etc.) que ajudam na apresentação e compartilhamento de pesquisa reprodutível. Sendo assim, eles podem ser uma ferramenta excelente para se usar em apresentações baseadas em dados ou programação, ou como uma ferramenta de ensino.

Este tutorial irá guiá-lo na configuração do Jupyter Notebook para ser executado a partir de um servidor Ubuntu 20.04, bem como demonstrar como se conectar e usar o notebook de uma máquina local via tunelamento. Ao final deste guia, você será capaz de executar código em Python 3 usando o Jupyter Notebook em execução em um servidor remoto.

Pré-requisitos

Para completar este guia, você deve ter uma nova instância de servidor Ubuntu 20.04 com um firewall básico e um usuário não root com privilégios sudo configurados. Você pode aprender como configurar isso examinando nosso guia de configuração inicial de servidor.

Passo 1 — Configurando o Python

Para começar o processo, instalaremos as dependências que precisamos para o nosso ambiente de programação Python dos repositórios Ubuntu. O Ubuntu 20.04 vem pré-instalado com o Python 3. Usaremos o gerenciador de pacotes do Python para instalar componentes adicionais um pouco mais tarde.

Primeiro, precisamos atualizar o índice de pacotes local apt e, em seguida, baixar e instalar os pacotes:

  • sudo apt update

Em seguida, instale o pip e os arquivos de cabeçalho do Python, que são usados por algumas das dependências do Jupyter:

  • sudo apt install python3-pip python3-dev

Agora, podemos continuar para a configuração de um ambiente virtual Python onde instalaremos o Jupyter.

Passo 2 — Criar um ambiente virtual Python para o Jupyter

Agora que temos o Python 3, seus arquivos de cabeçalho e o pip prontos para uso, podemos criar um ambiente virtual Python para gerenciar nossos projetos. Vamos instalar o Jupyter neste ambiente virtual.

Para fazer isso, primeiro precisamos de acesso ao comando virtualenv, que podemos instalar com o pip.

Atualize pip e instale o pacote digitando:

  • sudo -H pip3 install --upgrade pip
  • sudo -H pip3 install virtualenv

O sinalizador -H garante que a política de segurança aloca a variável de ambiente home no diretório home do usuário de destino.

Com o virtualenv instalado, podemos começar a formar nosso ambiente. Crie um diretório onde possamos manter nossos arquivos do projeto e vá até ele: Vamos chamá-lo de my_project_dir, mas você deve usar um nome que tenha significado para você e para aquilo no que está trabalhando.

  • mkdir ~/my_project_dir
  • cd ~/my_project_dir

Dentro do diretório do projeto, vamos criar um ambiente virtual Python. Para os fins deste tutorial, vamos chamá-lo de my_project_env, mas você deve chamá-lo de algo que seja relevante para o seu projeto.

  • virtualenv my_project_env

Isso criará um diretório chamado my_project_env dentro do seu diretório my_project_dir. Lá dentro, ele instalará uma versão local do Python e uma versão local do pip. Podemos usar isso para instalar e configurar um ambiente Python isolado para o Jupyter.

Antes de instalarmos o Jupyter, precisamos ativar o ambiente virtual. Você pode fazer isso digitando:

  • source my_project_env/bin/activate

Seu prompt deverá mudar para indicar que você agora está operando em um ambiente virtual Python. Agora, você verá em seu prompt de comando algo parecido com isto: (my_project_env)[email protected]:~/my_project_dir$.

Agora, você está pronto para instalar o Jupyter neste ambiente virtual.

Passo 3 — Instalar o Jupyter

Com seu ambiente virtual ativo, instale o Jupyter com a instância local do pip.

Nota: quando o ambiente virtual for ativado (quando seu prompt tiver (my_project_env) antecedendo-o) use o pip em vez do pip3, mesmo se estiver usando o Python 3. A cópia da ferramenta do ambiente virtual é sempre chamada de pip, independentemente da versão do Python.

  • pip install jupyter

Até aqui, você instalou todos os softwares necessários para executar o Jupyter. Agora, podemos iniciar o servidor Notebook.

Passo 4 — Executando o Jupyter Notebook

Agora, você tem tudo o que precisa para executar o Jupyter Notebook! Para executá-lo, utilize o seguinte comando:

  • jupyter notebook

Um registro das atividades do Jupyter Notebook será impresso no terminal. Quando você executa o Jupyter Notebook, ele é executado em um número de porta específico. O primeiro Notebook que você executar geralmente usará a porta 8888. Para verificar em qual número de porta específico o Jupyter Notebook está em execução, consulte o resultado do comando usado para iniciá-lo:

Output[I 21:23:21.198 NotebookApp] Writing notebook server cookie secret to /run/user/1001/jupyter/notebook_cookie_secret [I 21:23:21.361 NotebookApp] Serving notebooks from local directory: /home/sammy/my_project_dir [I 21:23:21.361 NotebookApp] The Jupyter Notebook is running at: [I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72 [I 21:23:21.361 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 21:23:21.361 NotebookApp] No web browser found: could not locate runnable browser. [C 21:23:21.361 NotebookApp]      Copy/paste this URL into your browser when you connect for the first time,     to login with a token:         http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72 

Se estiver executando o Jupyter Notebook em um computador local (não em um servidor), você pode acessar o URL exibido para se conectar ao Jupyter Notebook. Se estiver executando o Jupyter Notebook em um servidor, você precisará se conectar ao servidor usando o protocolo de tunelamento SSH, como descrito na próxima seção.

Neste ponto, você pode manter a conexão via protocolo SSH aberta e manter o Jupyter Notebook em execução, ou pode sair do app e executá-lo novamente assim que configurar o protocolo de tunelamento SSH. Vamos optar por parar o processo do Jupyter Notebook. Vamos executá-lo novamente assim que tivermos o protocolo de tunelamento SSH configurado. Para parar o processo do Jupyter Notebook, pressione CTRL+C, digite Y, e, em seguida, ENTER para confirmar. O seguinte resultado será exibido:

Output[C 21:28:28.512 NotebookApp] Shutdown confirmed [I 21:28:28.512 NotebookApp] Shutting down 0 kernels 

Agora, vamos configurar um túnel SSH para que possamos acessar o Notebook.

Passo 5 — Conectando-se ao servidor usando o protocolo de tunelamento SSH

Nesta seção, vamos demonstrar como se conectar à interface Web do Jupyter Notebook usando o protocolo de tunelamento SSH. Como o Jupyter Notebook será executado em uma porta específica no servidor (como :8888, :8889, etc.), o tunelamento SSH permite que você se conecte à porta do servidor com segurança.

As duas subseções a seguir descrevem como criar um túnel SSH a partir de 1) um Mac ou Linux, ou 2) Windows. Por favor, consulte a subsecção referente ao seu computador local.

Protocolo de tunelamento SSH com um Mac ou Linux

Se estiver usando um computador local do Mac ou Linux, os passos para a criação de um túnel SSH são semelhantes a usar o SSH para fazer login em seu servidor remoto. Apenas haverão alguns parâmetros adicionais no comando ssh. Esta subsecção irá mostrar os parâmetros adicionais necessários no comando ssh para estabelecer o tunelamento com sucesso.

O tunelamento SSH pode ser feito executando o seguinte comando SSH em uma nova janela de terminal local:

O comando ssh abre uma conexão via protocolo SSH, mas -L especifica que a porta em questão no host (cliente) local será enviada ao host e porta em questão no lado remoto (server). Isso significa que tudo que esteja em execução no segundo número de porta (por exemplo, 8888) no servidor aparecerá no primeiro número de porta (por exemplo, 8888) em seu computador local.

Se precisar, altere a porta 88 para outra de sua escolha para evita usar uma porta que já esteja em uso por outro processo.

server_username é seu nome de usuário (por exemplo, sammy) no servidor que você criou e your_server_ip é o endereço IP do seu servidor.

Por exemplo, para o nome de usuário sammy e para o endereço de servidor 203.0.113.0, o comando seria:

Se nenhum erro aparecer após executar o comando ssh -L, vá para seu ambiente de programação e execute o Jupyter Notebook:

  • jupyter notebook

Você receberá um resultado com um URL. A partir de um navegador Web em sua máquina local, abra a interface Web do Jupyter Notebook com o URL que começa com http://localhost:8888. Certifique-se de que o número do token esteja incluído, ou digite a string do número de token quando solicitado em http://localhost:8888.

Protocolo de tunelamento SSH com Windows e Putty

Se estiver usando o Windows, você pode criar um túnel SSH usando o Putty.

Primeiro, digite o URL do servidor ou endereço IP como nome de host, assim como mostrado:

Definir nome de host para o túnel SSH

Em seguida, clique em SSH no final do painel esquerdo para expandir o menu e, depois disso, clique em Tunnels. Digite o número da porta local que você deseja usar para acessar o Jupyter em sua máquina local. Escolha 8000 ou maior para evitar portas usadas por outros serviços, e defina o destino como localhost:8888 onde o :8888 é o número da porta em que o Jupyter Notebook está em execução.

Agora, clique no botão Add e as portas devem aparecer na lista Forwarded ports:

Lista de portas encaminhadas

Por fim, clique no botão Open para se conectar ao servidor via SSH e aplicar o tunelamento nas portas desejadas. Vá para http://localhost:8000 (ou qualquer porta que você tenha escolhido) em um navegador Web para se conectar ao Jupyter Notebook em execução no servidor. Certifique-se de que o número do token esteja incluído, ou digite a string do número de token quando solicitado em http://localhost:8000.

Passo 6 — Usando o Jupyter Notebook

Esta seção aborda o básico do uso do Jupyter Notebook. Se você ainda não tiver o Jupyter Notebook em execução, inicie-o com o comando jupyter notebook.

Agora, você deve estar conectado a ele usando um navegador Web. O Jupyter Notebook é uma ferramenta muito poderosa com muitos recursos. Esta seção irá mostrar alguns recursos básicos para que você comece a utilizar o Notebook. O Jupyter Notebook irá mostrar todos os arquivos e pastas do diretório em que ele é executado. Dessa forma, quando estiver trabalhando em um projeto, certifique-se de iniciá-lo no diretório do projeto.

Para criar um novo arquivo do Notebook, selecione New > Python 3 no menu suspenso superior à direita:

Criar um novo notebook Python 3

Isso abrirá um Notebook. Agora, podemos executar o código Python na célula ou alterar a célula para markdown. Por exemplo, altere a primeira célula para aceitar o Markdown clicando em Cell > Cell Type > Markdown na barra de navegação superior. Agora, podemos escrever notas usando o Markdown e até incluir equações escritas em LaTeX, colocando-as entre os símbolos $$. Por exemplo, digite o seguinte na célula após alterá-la para markdown:

# First Equation  Let us now implement the following equation: $$ y = x^2$$  where $x = 2$ 

Para transformar o markdown em rich text, pressione as teclas CTRL e ENTER. Você deve receber um resultado similar ao seguinte:

Resultados do markdown

Você pode usar as células markdown para fazer anotações e documentar seu código. Vamos implementar essa equação e imprimir o resultado. Clique na célula superior e, em seguida, pressione as teclas ALT e ENTER juntas para adicionar uma célula abaixo dela. Digite o seguinte código na nova célula.

x = 2 y = x**2 print(y) 

Para executar o código, pressione CTRL+ENTER. Você receberá os seguinte resultados:

Resultados da primeira equação

Agora, você é capaz de importar módulos e usar o Notebook como faria com qualquer outro ambiente de desenvolvimento do Python.

Conclusão

Parabéns! Agora, você deve conseguir escrever um código Python reprodutível e notas em Markdown usando o Jupyter Notebook. Para um tour rápido pelo Jupyter Notebook de dentro da interface, selecione Help > User Interface Tour no menu de navegação superior para aprender mais.

A partir daqui, você pode iniciar um projeto de análise de dados e visualização lendo Análise de dados e a visualização com o pandas e o Jupyter Notebook em Python 3.