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

介绍

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”,但您可以随意重命名它。

首先激活虚拟环境:

source my_env/bin/activate

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

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

python3 -m pip install jupyter

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

. . .
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服务器,请输入以下命令:

jupyter notebook

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

[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确认:

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命令注销服务器:

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用户的名称:

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

最后,单击“ 打开”按钮。这将通过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.py)。为了说明其中的一些功能,我们将从Notebook Dashboard创建一个笔记本文件,编写一个带有等式的简单文本板,并运行一些基本的Python 3代码。

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

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

[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后,在单元格中键入以下内容:

# Simple Equation
​
Let us now implement the following equation in Python:
$$ y = x^2$$
​
where $x = 2$

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

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

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

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》

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

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

如何深入 Python 虚拟机追查 HTTP 服务 core dump 导致 502 的问题

作者 | 今日头条技术团队 概述 今日头条目前大部分 Python 的 HTTP 服务都是用 uWSGI 托管 Python 多进程的 Django 或者 Fl...

26170
来自专栏Jimoer

JVM学习记录-类加载器

JVM设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外面去实现,以便让应用程序自己决定如何去获取所需要的...

7810
来自专栏Spark生态圈

Spark整合HBase(自定义HBase DataSource)

Spark支持多种数据源,但是Spark对HBase 的读写都没有相对优雅的api,但spark和HBase整合的场景又比较多,故通过spark的DataSou...

46620
来自专栏黑泽君的专栏

day58_BOS项目_10

之前的请假流程,是没有实际意义的,我们要使得我们流程变得有意义(有实际意义),需要在流程向下推进的过程中带着数据推进才有意义。如下图所示:

10340
来自专栏企鹅号快讯

如何深入 Python 虚拟机追查 HTTP 服务 core dump 导致 502 的问题

作者 今日头条技术团队 概述 今日头条目前大部分 Python 的 HTTP 服务都是用 uWSGI 托管 Python 多进程的 Django 或者 Fla...

21570
来自专栏飞雪无情的博客

Go语言字符串高效拼接(三)

在上一篇关于字符串拼接的文章Go语言字符串高效拼接(二) 中,我们终于为Builder拼接正名了,果真不负众望,尤其是拼接的字符串越来越多时,其性能的优越性更加...

20220
来自专栏数据库

第七节 关联映射之多对多

本次用 MyBatis 实现多对多关联映射:一个学生可以选多门课,一个课也可以由多个学生选。 一、 数据库准备 为了测试方便,我们在这里新建一个数据库并取名my...

28750
来自专栏云计算教程系列

如何为Python 3设置Jupyter Notebook

Jupyter Notebook为交互式计算提供了一个命令shell作为Web应用程序。该工具可以与多种语言一起使用,包括Python,Julia,R,Hask...

15800
来自专栏Python入门

Python存取文件方法有很多,但是这四种真的算的上是骚操作了

在不需要借助任何外界库的前提下,python内置方法其实也可以完成我们需要的文件存取任务,这里主要介绍几种python内置方法的使用方式,最后再给出一个实际案例...

19360
来自专栏腾讯IVWEB团队的专栏

通过ffi在Node.js中调用动态链接库(.so/.dll文件)

由于公司许多公共的后台服务已经有了非常成熟的C/C++编写的API,以供应用程序调用,node.js作为在公司内新兴的后台runtime在调用这些公共服务的时候...

1.3K00

扫码关注云+社区

领取腾讯云代金券