如何在远程服务器上安装、运行和连接JupyterNotebook
作为 Write for DOnations 计划的一部分,作者选择了 Apache 软件基金会 来接受 100 美元的捐款。
介绍
Jupyter Notebook 是一个开源的交互式 Web 应用程序,允许您使用 40 多种编程语言编写和运行计算机代码,包括 Python、R、 Julia 和 Scala。 Project Jupyter 的产品,Jupyter Notebook 对于迭代编码很有用,因为它允许您编写一小段代码,运行它并返回结果。
Jupyter Notebook 提供了创建笔记本文档的能力,简称为“笔记本”。 从 Jupyter Notebook 创建的笔记本是可共享、可重复的研究文档,其中包括富文本元素、方程式、代码及其输出(图形、表格、交互式绘图)。 笔记本还可以导出为原始代码文件、HTML 或 PDF 文档,或用于创建交互式幻灯片或网页。
本文将引导您了解如何在 Ubuntu 18.04 Web 服务器上安装和配置 Jupyter Notebook 应用程序,以及如何从本地计算机连接到它。 此外,我们还将介绍如何使用 Jupyter Notebook 运行一些示例 Python 代码。
先决条件
要完成本教程,您需要:
- 一个 Ubuntu 18.04 服务器实例。 此服务器必须具有具有 sudo 权限的非 root 用户并配置了防火墙。 按照我们的 初始服务器设置指南 进行设置。
- Python 3、pip 和安装在服务器上的 Python
venv
模块。 按照我们关于 如何在 Ubuntu 18.04 上安装 Python 3 和设置本地编程环境的教程的步骤 1 和 2 执行此操作。 - 在本地计算机上运行的现代 Web 浏览器,您将使用它来访问 Jupyter Notebook。
此外,如果您的本地计算机运行的是 Windows,则需要在其上安装 PuTTY 才能建立到服务器的 SSH 隧道。 按照我们关于 如何在 Windows 上使用 PuTTY 创建 SSH 密钥的指南下载并安装 PuTTY。
第 1 步 — 安装 Jupyter Notebook
由于笔记本用于编写、运行和查看小段代码的结果,因此您首先需要设置编程语言支持。 Jupyter Notebook 使用特定于语言的 内核 ,这是一种运行和内省代码的计算机程序。 Jupyter Notebook 有 许多不同语言的内核 ,默认为 IPython。 在本教程中,您将设置 Jupyter Notebook 以通过 IPython 内核运行 Python 代码。
假设您按照先决条件部分中链接的教程进行操作,您应该已安装 Python 3、pip 和虚拟环境 。 本指南中的示例遵循安装 Python 3 的先决条件教程中使用的约定,将虚拟环境命名为“my_env
”,但您可以随意重命名。
首先激活虚拟环境:
source my_env/bin/activate
在此之后,您的提示将以您的环境名称为前缀。
现在您已进入虚拟环境,请继续安装 Jupyter Notebook:
python3 -m pip install jupyter
如果安装成功,您将看到类似于以下的输出:
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
至此,Jupyter Notebook 已安装到您的服务器上。 接下来,我们将介绍如何运行该应用程序。
第 2 步 — 运行 Jupyter Notebook
Jupyter Notebook 必须从您的 VPS 运行,以便您可以使用 SSH 隧道和您喜欢的 Web 浏览器从本地计算机连接到它。
要运行 Jupyter Notebook 服务器,请输入以下命令:
jupyter notebook
运行此命令后,您将看到类似以下的输出:
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_3cadb8b8b7005d9a46ca4d6675&tokenExample_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675
您可能会注意到输出中有 No web browser found
警告。 这是意料之中的,因为应用程序在服务器上运行,而您可能尚未在其上安装 Web 浏览器。 本指南将在下一节中介绍如何使用 SSH 隧道连接到服务器上的 Notebook。
现在,按 CTRL+C
然后按 y
退出 Jupyter Notebook,然后按 ENTER
确认:
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
然后使用 exit
命令注销服务器:
exit
您刚刚在服务器上运行了 Jupyter Notebook。 但是,为了访问应用程序并开始使用笔记本,您需要使用 SSH 隧道和本地计算机上的 Web 浏览器连接到应用程序。
第 3 步 — 使用 SSH 隧道连接到 Jupyter Notebook 应用程序
SSH 隧道 是一种连接到服务器上运行的 Jupyter Notebook 应用程序的简单快速的方法。 安全外壳(通常称为 SSH)是一种网络协议,使您能够通过不安全的网络安全地连接到远程服务器。
SSH 协议包括一个端口转发机制,允许您将在服务器上特定端口号上运行的某些应用程序通过隧道传输到本地计算机上的特定端口号。 我们将学习如何安全地将在您的服务器上运行的 Jupyter Notebook 应用程序(默认情况下在端口 8888
上)“转发”到本地计算机上的端口。
您用于建立 SSH 隧道的方法取决于您本地计算机的操作系统。 跳转到下面与您的机器最相关的小节。
注意: 可以使用 DigitalOcean Web 控制台设置和安装 Jupyter Notebook,但是通过 SSH 隧道连接到应用程序必须通过终端或 PuTTY 完成。
使用 macOS 或 Linux 的 SSH 隧道
如果您的本地计算机运行的是 Linux 或 macOS,则只需运行一条命令即可建立 SSH 隧道。
ssh
是打开 SSH 连接的标准命令,但是当与 -L
指令一起使用时,您可以指定本地主机(即您的本地机器)上的给定端口转发到远程主机(在本例中为您的服务器)上的给定主机和端口。 这意味着在远程服务器的指定端口(8888
,Jupyter Notebook 的默认端口)上运行的任何内容都将出现在本地计算机的指定端口(示例命令中的 8000
)上。
要建立您自己的 SSH 隧道,请运行以下命令。 例如,如果 8000
正在被另一个进程使用,请随意将端口 8000
更改为您选择的端口。 建议您使用大于或等于 8000
的端口,因为这些端口号不太可能被其他进程使用。 确保包括您自己的服务器的 IP 地址和您的服务器的非 root 用户的名称:
ssh -L 8000:localhost:8888 sammy@your_server_ip
如果此命令没有错误,它会将您登录到远程服务器。 从那里,激活虚拟环境:
source ~/environments/my_env/bin/activate
然后运行 Jupyter Notebook 应用程序:
jupyter notebook
要连接到 Jupyter Notebook,请使用您喜欢的 Web 浏览器导航到本地主机上的本地端口:http://localhost:8000
。 现在您已连接到 Jupyter Notebook,请继续执行第 4 步以了解如何使用它。
使用 Windows 和 PuTTY 的 SSH 隧道
PuTTY 是适用于 Windows 的开源 SSH 客户端,可用于 连接到您的服务器 。 在您的 Windows 机器上下载并安装 PuTTY 后(如先决条件教程中所述),打开程序并输入您的服务器 URL 或 IP 地址,如下所示:
接下来,单击左窗格底部的+ SSH,然后单击Tunnels。 在此窗口中,输入要用于访问本地计算机上的 Jupyter 的端口 (8000
)。 建议使用大于或等于 8000
的端口,因为这些端口号不太可能被其他进程使用。 但是,如果 8000
被另一个进程使用,请选择一个不同的、未使用的端口号。 接下来,将目标设置为 localhost:8888
,因为端口 8888
是运行 Jupyter Notebook 的端口。 然后单击 Add 按钮,端口应出现在 Forwarded ports 字段中:
最后点击【X19X】打开【X27X】按钮。 这将通过 SSH 将您的机器连接到服务器并通过隧道连接所需的端口。 如果没有出现错误,请继续并激活您的虚拟环境:
source ~/environments/my_env/bin/activate
然后运行 Jupyter Notebook:
jupyter notebook
接下来,在您喜欢的 Web 浏览器中导航到本地端口,例如 http://localhost:8000
(或您选择的任何端口号),以连接到服务器上运行的 Jupyter Notebook 实例。 现在您已连接到 Jupyter Notebook,请继续执行第 4 步以了解如何使用它。
第 4 步 — 使用 Jupyter Notebook
通过 Web 浏览器访问时,Jupyter Notebook 提供了一个 Notebook Dashboard,它充当文件浏览器,并为您提供创建、编辑和探索笔记本的界面。 将这些笔记本视为文档(以 .ipynb
文件扩展名保存),您可以在其中填充任意数量的单个单元格。 每个单元格都有一个交互式文本编辑器,可用于运行代码或编写渲染文本。 此外,笔记本允许您编写和运行方程式,包括其他富媒体,例如图像或交互式绘图,并且可以以各种格式导出和共享(.ipyb
、.pdf
、[X203X ])。 为了说明其中一些功能,我们将从 Notebook Dashboard 创建一个笔记本文件,编写一个带有方程式的简单文本板,并运行一些基本的 Python 3 代码。
至此,您应该已经使用 SSH 隧道连接到服务器并从您的服务器启动了 Jupyter Notebook 应用程序。 导航到 http://localhost:8000
后,您将看到一个登录页面:
在顶部的 Password or token 字段中,输入从服务器运行 jupyter notebook
后输出中显示的令牌:
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] . . .
或者,您可以从终端输出复制该 URL 并将其粘贴到浏览器的地址栏中。
Jupyter notebook 将自动显示存储在运行它的目录中的所有文件和文件夹。 通过单击 Notebook Dashboard 右上角的 New 然后 Python 3 创建一个新的笔记本文件:
在这个新笔记本中,通过单击顶部导航栏上的 Cell > Cell Type > Markdown 将第一个单元格更改为接受 markdown 语法。 除了 markdown,此 Cell Type 还允许您在 LaTeX 中编写方程式。 例如,在将其更改为 markdown 后,在单元格中键入以下内容:
# Simple Equation Let us now implement the following equation in Python: $$ y = x^2$$ where $x = 2$
要将 markdown 转换为富文本,请按 CTRL + ENTER
,结果应该如下:
您可以使用降价单元格来做笔记和记录您的代码。
现在,让我们实现一个简单的方程并打印结果。 单击插入 > 在下方插入单元格以插入一个单元格。 在这个新单元格中,输入以下代码:
x = 2 y = x*x print(y)
要运行代码,请按 CTRL + ENTER
,结果如下:
这些是您可以使用 Jupyter Notebook 执行的一些相对简单的示例。 但是,它是一个非常强大的应用程序,具有许多潜在的用例。 从这里,您可以添加一些 Python 库并像在任何其他 Python 开发环境中一样使用 notebook。
结论
您现在应该能够使用在远程服务器上运行的 Jupyter Notebook 编写可重现的 Python 代码和文本。 要快速浏览 Jupyter Notebook,请单击顶部导航栏中的 Help,然后选择 User Interface Tour,如下所示:
如果您有兴趣,我们鼓励您通过 Project Jupyter 文档 了解有关 Jupyter Notebook 的更多信息。 此外,您可以通过 学习如何在 Python 3 中编码来构建您在本教程中学到的知识。