Installieren, Ausführen und Herstellen einer Verbindung mit Jupyter Notebook auf einem Remote-Server

Der Autor hat the Apache Software Foundation ausgewählt, um eine Spende in Höhe von 100 USD als Teil von Write for DOnations zu erhalten Programm.

Einführung

Jupyter Notebook ist eine interaktive Open-Source-Webanwendung, mit der Sie Computercode in mehr als 40 Programmiersprachen schreiben und ausführen können, einschließlich https: // www.python.org/[Python], R, Julia und https://www.scala-lang.org / [Scala]. Ein Produkt von Project Jupyter. Jupyter Notebook ist nützlich für die iterative Codierung, da Sie einen kleinen Codeausschnitt schreiben, ausführen und das Ergebnis zurückgeben können.

Jupyter Notebook bietet die Möglichkeit, Notizbuchdokumente zu erstellen, die einfach als "Notizbücher" bezeichnet werden. Mit dem Jupyter-Notizbuch erstellte Notizbücher sind gemeinsam nutzbare, reproduzierbare Forschungsdokumente, die Rich-Text-Elemente, Gleichungen, Code und deren Ausgabe (Abbildungen, Tabellen, interaktive Diagramme) enthalten. Notizbücher können auch in Rohcodedateien, HTML- oder PDF-Dokumente exportiert oder zum Erstellen interaktiver Diashows oder Webseiten verwendet werden.

In diesem Artikel erfahren Sie, wie Sie die Jupyter Notebook-Anwendung auf einem Ubuntu 18.04-Webserver installieren und konfigurieren und von Ihrem lokalen Computer aus eine Verbindung dazu herstellen. Darüber hinaus wird erläutert, wie Sie mit Jupyter Notebook Beispiel-Python-Code ausführen.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie:

Wenn auf Ihrem lokalen Computer Windows ausgeführt wird, müssen Sie PuTTY darauf installieren, um einen SSH-Tunnel zu Ihrem Server einzurichten. Folgen Sie unserer Anleitung unter So erstellen Sie SSH-Schlüssel mit PuTTY an Windows zum Herunterladen und Installieren von PuTTY.

Schritt 1 - Jupyter Notebook installieren

Da Notebooks zum Schreiben, Ausführen und Anzeigen des Ergebnisses kleiner Codefragmente verwendet werden, müssen Sie zunächst die Unterstützung für die Programmiersprache einrichten. Jupyter Notebook verwendet einen sprachspezifischen kernel, ein Computerprogramm, das Code ausführt und überprüft. Jupyter Notebook verfügt über https://github.com/jupyter/jupyter/wiki/Jupyter-kernels über eine Vielzahl von Kernels in verschiedenen Sprachen. Die Standardeinstellung lautet IPython. In diesem Tutorial richten Sie Jupyter Notebook so ein, dass Python-Code über den IPython-Kernel ausgeführt wird.

Angenommen, Sie haben die im Abschnitt "Voraussetzungen" verlinkten Lernprogramme ausgeführt, sollten Sie über https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-local-programming verfügen -environment-on-ubuntu-18-04 [Python 3, pip und eine virtuelle Umgebung installiert]. Die Beispiele in diesem Handbuch folgen der Konvention, die im vorausgesetzten Lernprogramm zur Installation von Python 3 verwendet wird. Dabei wird die virtuelle Umgebung mit "+ my_env +" bezeichnet. Sie können sie jedoch jederzeit umbenennen.

Beginnen Sie mit der Aktivierung der virtuellen Umgebung:

source /bin/activate

Anschließend wird Ihrer Eingabeaufforderung der Name Ihrer Umgebung vorangestellt.

Nachdem Sie sich in Ihrer virtuellen Umgebung befinden, installieren Sie Jupyter Notebook:

python3 -m pip install jupyter

Wenn die Installation erfolgreich war, wird eine Ausgabe ähnlich der folgenden angezeigt:

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

Damit wurde Jupyter Notebook auf Ihrem Server installiert. Als Nächstes wird erläutert, wie die Anwendung ausgeführt wird.

Schritt 2 - Ausführen des Jupyter-Notebooks

Jupyter Notebook muss von Ihrem VPS ausgeführt werden, damit Sie von Ihrem lokalen Computer aus über einen SSH-Tunnel und Ihren bevorzugten Webbrowser eine Verbindung dazu herstellen können.

Geben Sie den folgenden Befehl ein, um den Jupyter Notebook-Server auszuführen:

jupyter notebook

Nach dem Ausführen dieses Befehls wird eine Ausgabe ähnlich der folgenden angezeigt:

Output[I 19:46:22.031 NotebookApp] Writing notebook server cookie secret to /home//.local/share/jupyter/runtime/notebook_cookie_secret
[I 19:46:22.365 NotebookApp] Serving notebooks from local directory: /home//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=
[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=&token

Möglicherweise wird in der Ausgabe die Warnung "+ Kein Webbrowser gefunden +" angezeigt. Dies ist zu erwarten, da die Anwendung auf einem Server ausgeführt wird und Sie wahrscheinlich keinen Webbrowser darauf installiert haben. In diesem Handbuch wird erläutert, wie Sie mithilfe von SSH-Tunneling eine Verbindung zum Notebook auf dem Server herstellen.

Verlassen Sie das Jupyter-Notizbuch zunächst, indem Sie die Tastenkombination "+ STRG + C " gefolgt von " y " und anschließend die Tastenkombination " EINGABE +" drücken, um Folgendes zu bestätigen:

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

Melden Sie sich dann mit dem Befehl + exit + vom Server ab:

exit

Sie führen Jupyter Notebook nur auf Ihrem Server aus. Damit Sie jedoch auf die Anwendung zugreifen und mit Notebooks arbeiten können, müssen Sie eine Verbindung mit der Anwendung über SSH-Tunnel und einen Webbrowser auf Ihrem lokalen Computer herstellen.

Schritt 3 - Herstellen einer Verbindung zur Jupyter Notebook-Anwendung mit SSH-Tunneling

SSH-Tunneling ist eine einfache und schnelle Methode, um eine Verbindung mit der Jupyter Notebook-Anwendung herzustellen, die auf Ihrem Server ausgeführt wird. Secure Shell (besser bekannt als SSH) ist ein Netzwerkprotokoll, mit dem Sie Folgendes ausführen können Stellen Sie eine sichere Verbindung zu einem Remoteserver über ein ungesichertes Netzwerk her.

Das SSH-Protokoll enthält einen Portweiterleitungsmechanismus, mit dem Sie bestimmte Anwendungen, die auf einer bestimmten Portnummer auf einem Server ausgeführt werden, zu einer bestimmten Portnummer auf Ihrem lokalen Computer tunneln können. Wir werden lernen, wie Sie die Jupyter Notebook-Anwendung, die auf Ihrem Server ausgeführt wird (standardmäßig an Port + 8888 +), sicher an einen Port auf Ihrem lokalen Computer weiterleiten.

Die Methode zum Einrichten eines SSH-Tunnels hängt vom Betriebssystem Ihres lokalen Computers ab. Wechseln Sie zu dem Unterabschnitt, der für Ihre Maschine am relevantesten ist.

SSH-Tunneling unter MacOS oder Linux

Wenn auf Ihrem lokalen Computer Linux oder macOS ausgeführt wird, können Sie einen SSH-Tunnel nur mit einem einzigen Befehl erstellen.

"+ ssh " ist der Standardbefehl zum Öffnen einer SSH-Verbindung. Bei Verwendung der Direktive " -L " können Sie jedoch festlegen, dass ein bestimmter Port auf dem lokalen Host (dh Ihrem lokalen Computer) an a weitergeleitet wird angegebenen Host und Port auf dem Remote-Host (in diesem Fall Ihrem Server). Dies bedeutet, dass alles, was auf dem angegebenen Port des Remote-Servers ausgeführt wird (" 8888 ", der Standardport von Jupyter Notebook), auf dem angegebenen Port Ihres lokalen Computers angezeigt wird ("+" im Beispielbefehl).

Führen Sie den folgenden Befehl aus, um Ihren eigenen SSH-Tunnel einzurichten. Sie können den Port "+" in einen beliebigen Port ändern, wenn beispielsweise " 8000 " von einem anderen Prozess verwendet wird. Es wird empfohlen, einen Port zu verwenden, der größer oder gleich " 8000 +" ist, da es unwahrscheinlich ist, dass diese Portnummern von einem anderen Prozess verwendet werden. Stellen Sie sicher, dass Sie die IP-Adresse Ihres eigenen Servers und den Namen des Nicht-Root-Benutzers Ihres Servers eingeben:

ssh -L :localhost:8888 @

Wenn dieser Befehl keine Fehler enthält, werden Sie auf Ihrem Remote-Server angemeldet. Aktivieren Sie von dort aus die virtuelle Umgebung:

source ~/environments//bin/activate

Führen Sie dann die Jupyter Notebook-Anwendung aus:

jupyter notebook

Um eine Verbindung zu Jupyter Notebook herzustellen, navigieren Sie mit Ihrem bevorzugten Webbrowser zum lokalen Port auf dem lokalen Host: + http: // localhost: +. Nachdem Sie mit Jupyter Notebook verbunden sind, fahren Sie mit Schritt 4 fort, um zu erfahren, wie Sie es verwenden.

SSH-Tunneling unter Windows und PuTTY

PuTTY ist ein Open-Source-SSH-Client für Windows, mit dem https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-putty-on-digitalocean-droplets-windows verwendet werden können -users [verbinde dich mit deinem Server]. Öffnen Sie nach dem Herunterladen und Installieren von PuTTY auf Ihrem Windows-Computer (wie im vorausgesetzten Lernprogramm beschrieben) das Programm und geben Sie Ihre Server-URL oder IP-Adresse ein, wie hier gezeigt:

image: https: //assets.digitalocean.com/articles/jupyter_notebook/JN_putty_1.png [Server-URL oder IP in Putty eingeben]

Klicken Sie anschließend unten im linken Bereich auf * + SSH * und dann auf * Tunnel *. Geben Sie in diesem Fenster den Port ein, über den Sie auf Ihrem lokalen Computer auf Jupyter zugreifen möchten (++). Es wird empfohlen, einen Port größer oder gleich "+ 8000 " zu verwenden, da es unwahrscheinlich ist, dass diese Portnummern von einem anderen Prozess verwendet werden. Wenn ` 8000 ` jedoch von einem anderen Prozess verwendet wird, wählen Sie eine andere, nicht verwendete Portnummer. Als nächstes setzen Sie das Ziel auf " localhost: 8888 ", da Port " 8888 +" derjenige ist, auf dem Jupyter Notebook ausgeführt wird. Klicken Sie dann auf die Schaltfläche * Hinzufügen *, und die Ports sollten im Feld * Weitergeleitete Ports * angezeigt werden:

image: https: //assets.digitalocean.com/articles/jupyter_notebook/JN_putty_2.png [SSH-Tunnel in Putty konfigurieren]

Klicken Sie abschließend auf die Schaltfläche * Öffnen *. Dadurch wird Ihr Computer über SSH mit dem Server verbunden und die gewünschten Ports werden getunnelt. Wenn keine Fehler angezeigt werden, aktivieren Sie Ihre virtuelle Umgebung:

source ~/environments//bin/activate

Dann starte Jupyter Notebook:

jupyter notebook

Navigieren Sie als Nächstes in Ihrem bevorzugten Webbrowser zum lokalen Port, z. B. "+ http: // localhost: +" (oder zu der von Ihnen gewählten Portnummer), um eine Verbindung mit der auf dem Server ausgeführten Jupyter Notebook-Instanz herzustellen. Nachdem Sie mit Jupyter Notebook verbunden sind, fahren Sie mit Schritt 4 fort, um zu erfahren, wie Sie es verwenden.

Schritt 4 - Verwenden von Jupyter Notebook

Beim Zugriff über einen Webbrowser stellt Jupyter Notebook ein Notizbuch-Dashboard zur Verfügung, das als Dateibrowser fungiert und eine Oberfläche zum Erstellen, Bearbeiten und Durchsuchen von Notizbüchern bietet. Stellen Sie sich diese Notizbücher als Dokumente vor (gespeichert mit der Dateierweiterung "+ .ipynb "), die Sie mit einer beliebigen Anzahl einzelner Zellen füllen. Jede Zelle enthält einen interaktiven Texteditor, mit dem Code ausgeführt oder gerenderter Text geschrieben werden kann. Darüber hinaus können Sie mit Notebooks Gleichungen schreiben und ausführen, andere Rich-Media-Elemente wie Bilder oder interaktive Diagramme einbeziehen und sie in verschiedenen Formaten (" .ipyb ", " .pdf ", " .py +") exportieren und freigeben `). Um einige dieser Funktionen zu veranschaulichen, erstellen wir eine Notizbuchdatei über das Notizbuch-Dashboard, schreiben eine einfache Texttafel mit einer Gleichung und führen einen grundlegenden Python 3-Code aus.

Zu diesem Zeitpunkt sollten Sie über einen SSH-Tunnel eine Verbindung zum Server hergestellt und die Jupyter Notebook-Anwendung von Ihrem Server aus gestartet haben. Nach dem Navigieren zu "+ http: // localhost: +" wird eine Anmeldeseite angezeigt:

Geben Sie oben im Feld * Passwort oder Token * das in der Ausgabe angezeigte Token ein, nachdem Sie + jupyter notebook + von Ihrem Server ausgeführt haben:

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=
[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]
. . .

Alternativ können Sie diese URL von Ihrer Terminalausgabe kopieren und in die Adressleiste Ihres Browsers einfügen.

Jupyter Notebook zeigt automatisch alle Dateien und Ordner an, die in dem Verzeichnis gespeichert sind, in dem es ausgeführt wird. Erstellen Sie eine neue Notizbuchdatei, indem Sie oben rechts im Notizbuch-Dashboard auf * Neu * und dann auf * Python 3 * klicken:

Ändern Sie in diesem neuen Notizbuch die erste Zelle, um die Markdown-Syntax zu akzeptieren, indem Sie oben in der Navigationsleiste auf * Zelle *> * Zelltyp *> * Markdown * klicken. Zusätzlich zum Markdown können Sie mit diesem Zelltyp auch Gleichungen in LaTeX schreiben. Geben Sie beispielsweise Folgendes in die Zelle ein, nachdem Sie sie in Markdown geändert haben:

# Simple Equation

Let us now implement the following equation in Python:
$$ y = x^2$$

where $x = 2$

Drücken Sie die Tastenkombination STRG + EINGABETASTE, um die Markierung in Rich-Text umzuwandeln. Das Ergebnis sollte Folgendes sein:

image: https: //assets.digitalocean.com/articles/jupyter_notebook/JN_sample_equation.png [Beispielgleichung in Rich Text umwandeln]

Mit den Markdown-Zellen können Sie Notizen machen und Ihren Code dokumentieren.

Lassen Sie uns nun eine einfache Gleichung implementieren und das Ergebnis ausdrucken. Klicken Sie auf * Einfügen *> * Zelle darunter einfügen *, um eine Zelle einzufügen. Geben Sie in diese neue Zelle den folgenden Code ein:

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

Drücken Sie zum Ausführen des Codes die Tastenkombination "+ STRG + EINGABETASTE +". Das Ergebnis ist:

Dies sind einige relativ einfache Beispiele dafür, was Sie mit Jupyter Notebook tun können. Es ist jedoch eine sehr leistungsfähige Anwendung mit vielen potenziellen Anwendungsfällen. Von hier aus können Sie einige Python-Bibliotheken hinzufügen und das Notizbuch wie in jeder anderen Python-Entwicklungsumgebung verwenden.

Fazit

Sie sollten nun in der Lage sein, reproduzierbaren Python-Code und Text mit dem Jupyter Notebook zu schreiben, das auf einem Remote-Server ausgeführt wird. Um eine kurze Einführung in Jupyter Notebook zu erhalten, klicken Sie in der oberen Navigationsleiste auf * Hilfe * und wählen Sie * Benutzeroberflächentour * wie hier gezeigt:

image: https://assets.digitalocean.com/articles/jupyter_notebook/JN_help_tour.png [Auffinden der Jupyter Notebook-Hilfetour]

Wenn Sie interessiert sind, empfehlen wir Ihnen, in der Project Jupyter documentation mehr über Jupyter Notebook zu erfahren. Darüber hinaus können Sie auf dem, was Sie in diesem Tutorial gelernt haben, aufbauen, indem Sie lernen, wie man in Python 3 codiert.