前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何安装,运行和连接到远程服务器上的Jupyter Notebook

如何安装,运行和连接到远程服务器上的Jupyter Notebook

原创
作者头像
尘埃
修改2018-11-21 11:37:12
16.2K0
修改2018-11-21 11:37:12
举报
文章被收录于专栏:云计算教程系列

介绍

Jupyter Notebook是一个开源的交互式Web应用程序,允许您使用40多种编程语言编写和运行计算机代码,包括PythonRJuliaScala。来自Project Jupyter的产品,Jupyter Notebook对于迭代编码非常有用,因为它允许您编写一小段代码,运行它并返回结果。

Jupyter Notebook提供了创建笔记本文档的功能,简称为“笔记本”。从Jupyter笔记本创建的笔记本是可共享的,可重复的研究文档,其中包括丰富的文本元素,方程式,代码及其输出(图形,表格,交互式图)。笔记本还可以导出为原始代码文件,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隧道。

第1步 - 安装Jupyter Notebook

由于笔记本用于编写,运行和查看小代码片段的结果,因此首先需要设置编程语言支持。Jupyter Notebook使用特定于语言的内核,一个运行和内省代码的计算机程序。Jupyter Notebook有许多不同语言的内核,默认为IPython。在本教程中,您将设置Jupyter Notebook以通过IPython内核运行Python代码。

假设您遵循了准备部分中链接的教程,您应该安装Python 3,pip和虚拟环境。本指南中的示例遵循安装Python 3的准备教程中使用的约定,它将虚拟环境命名为“ my_env”,但您可以随意重命名它。

首先激活虚拟环境:

代码语言:javascript
复制
source my_env/bin/activate

在此之后,您的提示将以您的环境名称为前缀。

现在您已进入虚拟环境,请继续安装Jupyter Notebook:

代码语言:javascript
复制
python3 -m pip install jupyter

如果安装成功,您将看到类似于以下内容的输出:

代码语言:javascript
复制
. . .
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笔记本

必须从您的VPS运行Jupyter Notebook,以便您可以使用SSH隧道和您喜欢的Web浏览器从本地计算机连接到它。

要运行Jupyter Notebook服务器,请输入以下命令:

代码语言:javascript
复制
jupyter notebook

运行此命令后,您将看到类似于以下内容的输出:

代码语言:javascript
复制
[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笔记本,然后按ENTER确认:

代码语言:javascript
复制
Shutdown 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命令注销服务器:

代码语言:javascript
复制
exit

您刚刚在服务器上运行Jupyter Notebook。但是,为了访问应用程序并开始使用笔记本,您需要使用SSH隧道连接和本地计算机上的Web浏览器连接到应用程序。

第3步 - 使用SSH隧道连接到Jupyter Notebook应用程序

SSH隧道是连接到服务器上运行的Jupyter Notebook应用程序的一种简单而快速的方法。安全shell(通常称为SSH)是一种网络协议,使您可以通过不安全的网络安全地连接到远程服务器。

SSH协议包括端口转发机制,允许您将在服务器上的特定端口号上运行的某些应用程序隧道传输到本地计算机上的特定端口号。我们将学习如何安全地“转发”在服务器上运行的Jupyter Notebook应用程序(8888默认情况下在端口上)到本地计算机上的端口。

用于建立SSH隧道的方法取决于本地计算机的操作系统。跳转到与您的机器最相关的下面小节。

使用macOS或Linux进行SSH隧道

如果您的本地计算机运行Linux或macOS,则只需运行单个命令即可建立SSH隧道。

ssh是打开SSH连接的标准命令,但是当与-L指令一起使用时,您可以指定本地主机(即本地计算机)上的给定端口将转发到远程主机上的给定主机和端口(在这种情况下,您的服务器)。这意味着在远程服务器上指定端口上运行的任何内容(Jupyter Notebook的默认端口8888)都将出现在本地计算机上的指定端口上(在示例命令中为8000)。

要建立自己的SSH隧道,请运行以下命令。例如,如果另一个进程正在使用8000,请随意将端口8000更改为您选择的端口。建议您使用大于或等于8000的端口,因为这些端口号不太可能被其他进程使用。确保包含您自己的服务器的IP地址和服务器的非root用户的名称:

代码语言:javascript
复制
ssh -L 8000:localhost:8888 sammy@your_server_ip

如果此命令没有错误,它将使您登录到远程服务器。从那里,激活虚拟环境:

代码语言:javascript
复制
source ~/environments/my_env/bin/activate

然后运行Jupyter Notebook应用程序:

代码语言:javascript
复制
jupyter notebook

要连接到Jupyter Notebook,请使用您喜欢的Web浏览器导航到本地主机上的本地端口:http://localhost:8000。现在您已连接到Jupyter Notebook,继续执行步骤4以了解如何使用它。

使用Windows和PuTTY进行SSH隧道

PuTTY是Windows的开源SSH客户端,可用于连接到您的服务器。在Windows计算机上下载并安装PuTTY后(如前提条件教程中所述),打开程序并输入服务器URL或IP地址,如下所示:

接下来,单击左窗格底部的+ SSH,然后单击隧道。在此窗口中,输入要用于在本地计算机上访问Jupyter的端口(8000)。建议使用大于或等于8000的端口,因为这些端口号不太可能被其他进程使用。但是,如果由其他进程使用8000,请选择其他未使用的端口号。接下来,将目标设置为localhost:8888,因为端口8888是运行Jupyter Notebook的端口。然后单击“ 添加”按钮,端口应出现在“ 转发端口”字段中:

最后,单击“ 打开”按钮。这将通过SSH将您的机器连接到服务器并隧道传输所需的端口。如果没有出现错误,请继续并激活您的虚拟环境:

代码语言:javascript
复制
source ~/environments/my_env/bin/activate

然后运行Jupyter Notebook:

代码语言:javascript
复制
jupyter notebook

接下来,导航到您喜欢的Web浏览器中的本地端口(例如http://localhost:8000,或您选择的任何端口号),以连接到服务器上运行的Jupyter Notebook实例。现在您已连接到Jupyter Notebook,继续执行步骤4以了解如何使用它。

第4步 - 使用Jupyter Notebook

当通过Web浏览器访问时,Jupyter Notebook提供了一个Notebook Dashboard,它充当文件浏览器,为您提供了创建,编辑和浏览笔记本的界面。将这些笔记本视为文档(以.ipynb文件扩展名保存),您可以使用任意数量的单个单元格填充这些文档。每个单元格都包含一个交互式文本编辑器,可用于运行代码或编写渲染文本。此外,笔记本电脑,您可以编写和运行方程,包括其他富媒体,如图像或互动情节,他们可以以各种格式导出和共享(.ipyb.pdf.py)。为了说明其中的一些功能,我们将从Notebook Dashboard创建一个笔记本文件,编写一个带有等式的简单文本板,并运行一些基本的Python 3代码。

此时,您应该使用SSH隧道连接到服务器,并从服务器启动Jupyter Notebook应用程序。导航到http://localhost:8000之后,您将看到一个登录页面:

在顶部的密码或令牌字段中,输入从服务器运行jupyter notebook后输出中显示的令牌:

代码语言:javascript
复制
[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 Dashboard 右上角的New,然后单击Python 3,创建一个新的笔记本文件:

在此新笔记本中,通过单击顶部导航栏上的“ 单元格” >“ 单元格类型” >“ Markdown”,将第一个单元格更改为接受markdown语法。除了降价,此单元格类型还允许您在LaTeX中编写方程式。例如,在将其更改为markdown后,在单元格中键入以下内容:

代码语言:javascript
复制
# Simple Equation
​
Let us now implement the following equation in Python:
$$ y = x^2$$
​
where $x = 2$

要将降价转换为富文本格式,请按CTRL + ENTER,将会以下结果:

您可以使用markdown单元格做笔记并记录您的代码。

现在,让我们实现一个简单的等式并打印结果。单击插入 > 在下面插入单元格以插入单元格。在此新单元格中,输入以下代码:

代码语言:javascript
复制
x = 2
y = x*x
print(y)

要运行代码,请按CTRL + ENTER,结果如下:

这些是使用Jupyter Notebook可以做些什么的一些相对简单的例子。但是,它是一个非常强大的应用程序,具有许多潜在的用例。从这里开始,您可以添加一些Python库并像使用任何其他Python开发环境一样使用笔记本。

结论

您现在应该能够使用在远程服务器上运行的Jupyter Notebook编写可重现的Python代码和文本。要快速浏览Jupyter Notebook,请单击顶部导航栏中的“ 帮助”,然后选择“ 用户界面游览”,如下所示:

如果您有兴趣,我们建议您通过Project Jupyter文档了解有关Jupyter Notebook的更多信息。

想要了解更多关于安装,运行和连接到远程服务器上的Jupyter Notebook的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How to Install, Run, and Connect to Jupyter Notebook on a Remote Server》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 第1步 - 安装Jupyter Notebook
  • 第2步 - 运行Jupyter笔记本
  • 第3步 - 使用SSH隧道连接到Jupyter Notebook应用程序
    • 使用macOS或Linux进行SSH隧道
      • 使用Windows和PuTTY进行SSH隧道
      • 第4步 - 使用Jupyter Notebook
      • 结论
      相关产品与服务
      云开发 CloudBase
      云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档