搭建 Jupyter Notebook 服务

简介: 搭建 Jupyter Notebook 服务

工欲善其事,必先利其器。Jupyter Notebook 在 Python 生态中的地位想必不用我多讲,看到下图你就会明白它有多强大。

labpreview

通常我们只在自己本地的电脑上安装 Jupyter Notebook 来作为开发工具,但是当我们换了台新电脑或者是使用其他人的的电脑的时候,想用 Jupyter Notebook 来开发程序的话,就需要在新电脑上重新装一遍开发环境。如果只是临时换一台电脑的话,就会显得比较麻烦。所以,我们可以考虑在远程服务器上搭建一套 Jupyter Notebook 的开发环境。这样不管我们换到哪台电脑上,都可以远程连接服务器上的 Jupyter Notebook 环境来进行开发。

搭建 Jupyter Notebook 服务的目的,就是要统一开发环境,以实现在任何地方只要你有一个能够联网的 浏览器,就能够进行 Python 代码的开发。

准备工作

要搭建 Jupyter Notebook 服务,首先你需要有一台云服务器。我这里使用 Ubuntu 18.04 来作为演示。

至于 Python 的版本,我选择的是 Python 3.6.7。主要是因为这是我的 Ubuntu 18.04 云服务器自带的 Python 版本。你也可以选择其他版本,不过我不建议使用 Python2 的版本,毕竟到 2020-01-01 开始官方就停止维护了。

安装并配置 Jupyter

首先需要登录到云服务器,然后安装 Jupyter

$ mkdir /home/pythonic/notebooks

安装好后,我们需要对其进行配置。在服务器当前登录用户的家目录下创建一个 notebooks 目录作为 Jupyter Notebook 启动后的工作目录。

(假设我当前登录的用户名为 pythonic,后文不再提示,你可以根据你自己的登录用户名来更改路径。)

$ mkdir /home/pythonic/notebooks

/home/pythonic/.jupyter/ 目录下创建名为 jupyter_notebook_config.py 的配置文件,用来管理 Jupyter Notebook 的配置。我们并不需要做额外的工作,Jupyter Notebook 启动时会自动找到并加载这个配置文件。

$ sudo vim /home/pythonic/.jupyter/jupyter_notebook_config.py

下内容写入到所创建的配置文件中。

c.NotebookApp.port = 8888  # 默认启动端口,根据需要自行修改
c.NotebookApp.ip = '*'  # 允许任何 IP 访问
c.NotebookApp.notebook_dir = '/home/pythonic/notebooks'  # 工作目录
c.NotebookApp.open_browser = False  # 启动时不自动打开浏览器

写好配置文件,为了安全起见,我们还需要开启 Jupyter Notebook 的密码功能。这样不至于任何人都可以随意访问并使用。执行如下命令,根据提示输入两次密码即可。

$ jupyter notebook password

成功生成密码以后,Jupyter Notebook 会自动在 /home/pythonic/.jupyter/ 目录下生成 jupyter_notebook_config.json 文件。里面存储的实际上是密码的哈希值,内容格式如下。

{
  "NotebookApp": {
    "password": "sha1:b82df400d1fc:d0dc30b222bf84e8974a17206b37d3ae58b071ee"
  }
}

此时,Jupyter Notebook 的基本配置就算完成。你可以在命令行下运行服务。

$ jupyter-notebook

如果顺利的话,此时打开你本地电脑的浏览器,地址栏输入远程云服务器的 IP:8888 就能够访问 Jupyter Notebook 了。

login

index

不过需要注意的是,如果你的云服务器的 8888 端口没有对外开放,那么本地是无法访问云服务器上的 Jupyter Notebook 环境的。

例如我的云服务器使用了 UFW 防火墙,默认 8888 端口是不对外开放的,可以通过命令将其开启。

sudo ufw allow 8888

你可以根据自己的实际情况来处理可能遇到的类似问题。

现在环境已经初步搭好,不过还有一个重要的问题需要处理。我们现在通过命令行来启动 Jupyter Notebook,当命令行关闭,Jupyter Notebook 也会被同时关闭。这并不是我们想要的结果,我们需要的是无论任何时候都让 Jupyter Notebook 一直运行下去,这样才能在任何地点、任何时间通过浏览器来访问它。

Jupyter Notebook 配置为系统服务

要解决上面的问题办法有很多,我这里选择将其配置为系统服务。这样只要不关机,Jupyter Notebook 就能一直运行下去。

这里涉及到 Linux 系统中 Systemd 的使用,它可以用来启动并管理 守护进程 。你并不需要对它有深入的了解,事实上,你只需要跟着我的步骤对其进行配置即可。如果你对其感兴趣,可以自行搜索相关资料进行学习。

先将上面运行的 Jupyter Notebook 程序通过按快捷键 Ctrl + c 停止掉,然后用如下命令来创建 Jupyter Notebook 系统服务的配置文件。

$ sudo vim /lib/systemd/system/jupyter.service

写入内容如下。

[Unit]
# 简短描述
Description=Juyper-NoteBook
[Service]
# 以 fork 方式从父进程创建子进程,创建后父进程会立即退出
Type=forking
# 启动当前服务的命令
ExecStart=/usr/local/bin/jupyter-notebook
# 停止当前服务的命令
ExecStop=/usr/bin/pkill jupyter-notebook
# 任何原因退出后自动重启
Restart=always
# 重启服务之前,需要等待的秒数
RestartSec=30s
# 用户
User=pythonic
# 组
Group=root
[Install]
# 该服务所在的 Target
WantedBy=multi-user.target

对于配置文件,为了便于理解,我已经加入了简单的注释,你需要根据自己的情况对其进行更改。

接下来,就可以通过系统服务的形式来启动 Jupyter Notebook 了。

$ sudo systemctl daemon-reload
$ sudo systemctl enable jupyter
$ sudo systemctl start jupyter

依次执行以上三条命令,Jupyter Notebook 就会以系统服务的形式运行起来。每当云服务器重新启动,Jupyter Notebook 也会跟着自动启动,并且即使因为意外情况进程挂掉也会自动重启。

如果想要停止运行 Jupyter Notebook 服务,只需要执行以下命令。

$ sudo systemctl stop jupyter

以上,就是对搭建 Jupyter Notebook 服务的简单介绍。如果你还需要更高级的玩法,如 虚拟环境 使用、配置 Nginx 反向代理等,可以选择自行探索,也欢迎与我一起交流探讨。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
机器学习/深度学习 安全 数据挖掘
安全地运行 Jupyter 服务
【8月更文第29天】Jupyter Notebook 是一种流行的交互式计算环境,广泛应用于数据分析、机器学习等领域。然而,随着 Jupyter 服务越来越多地被部署在网络环境中,安全问题变得日益重要。本文将介绍一些最佳实践,帮助您保护 Jupyter 服务器免受攻击和数据泄露的风险。
84 0
|
6月前
|
数据采集 机器学习/深度学习 数据可视化
使用Jupyter Notebook进行数据分析:入门与实践
【6月更文挑战第5天】Jupyter Notebook是数据科学家青睐的交互式计算环境,用于创建包含代码、方程、可视化和文本的文档。本文介绍了其基本用法和安装配置,通过一个数据分析案例展示了如何使用Notebook进行数据加载、清洗、预处理、探索、可视化以及建模。Notebook支持多种语言,提供直观的交互体验,便于结果呈现和分享。它是高效数据分析的得力工具,初学者可通过本文案例开始探索。
|
4月前
|
Python
Jupyter Notebook又一利器nbterm,在终端玩notebook!
Jupyter Notebook又一利器nbterm,在终端玩notebook!
|
6月前
|
文字识别 异构计算 Python
关于云端Jupyter Notebook的使用过程与感想
在自学Python时,由于家庭电脑使用冲突和设备老旧,转向云端平台。体验了多个服务:1. 魔搭modelscope(最喜欢,赠送资源丰富,社区活跃),2. Colaboratory(免费GPU,但有时重启,建议用阿里云),3. Deepnote(免费环境有限,但GPT-4代码生成功能强大),4. 飞桨aistudio(适合PaddlePaddle用户),5. ModelArts(曾有免费实例,现难找)。综合来看,阿里云的稳定性与服务更优,尤其是魔搭的自动代码修正功能。对于AIGC,推荐魔搭和付费版PAI-DSW。欢迎分享更多云端Jupyter平台体验。
289 1
|
6月前
|
Python 数据挖掘 数据可视化
Python数据分析——Pandas与Jupyter Notebook
【6月更文挑战第1天】 本文探讨了如何使用Python的Pandas库和Jupyter Notebook进行数据分析。首先,介绍了安装和设置步骤,然后展示了如何使用Pandas的DataFrame进行数据加载、清洗和基本分析。接着,通过Jupyter Notebook的交互式环境,演示了数据分析和可视化,包括直方图的创建。文章还涉及数据清洗,如处理缺失值,并展示了如何进行高级数据分析,如数据分组和聚合。此外,还提供了将分析结果导出到文件的方法。通过销售数据的完整案例,详细说明了从加载数据到可视化和结果导出的全过程。最后,讨论了进一步的分析和可视化技巧,如销售额趋势、产品销售排名和区域分布,以及
216 2
|
7月前
|
JSON 数据可视化 数据挖掘
适合数据分析的ide---Jupyter Notebook的安装使用
适合数据分析的ide---Jupyter Notebook的安装使用
117 2
|
7月前
|
Ubuntu 网络安全 数据安全/隐私保护
使用SSH隧道将Ubuntu云服务器Jupyter Notebook端口映射到本地
这样,你就成功地将Ubuntu云服务器上的Jupyter Notebook端口映射到本地,使你能够通过本地浏览器访问并使用Jupyter Notebook。
471 1
|
7月前
|
Linux 数据安全/隐私保护
anaconda运行Notebook和jupyter报错resource.setrlimit(resource.RLIMIT_NOFILE, (soft, hard)) ValueError
anaconda运行Notebook和jupyter报错resource.setrlimit(resource.RLIMIT_NOFILE, (soft, hard)) ValueError
59 0
|
7月前
|
自然语言处理 数据可视化 数据挖掘
Python 的科学计算和数据分析: 解释什么是 Jupyter Notebook?
Python科学计算与数据分析中,借助`numpy`进行数值计算,`matplotlib`用于绘图。Jupyter Notebook提供交互式编程环境,支持多语言,集成各种可视化工具。其优势在于结合代码、结果和文本,提升工作效率,具备自动补全、语法高亮等特性。示例展示了导入库,生成随机数据并用`matplotlib`画正弦波图的过程。Jupyter Notebook虽便捷,但复杂任务可能需结合`scipy`、`pandas`等更多库。
80 4
|
7月前
|
Linux 数据安全/隐私保护 Python
Linux下远程访问Jupyter Notebook 配置
Linux下远程访问Jupyter Notebook 配置
107 1