【Python编程】服务器长期开启jupyternotebook远程连接服务

前言

我们常常希望服务器长期开启一个jupyter notebook远程服务,这样我们就可以随时连接jupyter notebook进行编程了。

conda的安装

conda的安装参考《【Python学习】Windows10开始你的Anaconda安装与Python环境管理》或者《【Python学习】纯终端命令开始你的Anaconda安装与Python环境管理》

jupyter notebook的安装

Jupyter Notebook 是用于创建和共享计算文档的原始 Web 应用程序。 它提供了简单、流线型、以文档为中心的体验。 我们在conda环境中安装jupyter notebook非常容易,只需要执行以下命令:

conda install -c conda-forge notebook

配置jupyter notebook的远程访问

初始化配置文件

要开启Jupyter notebook的远程访问,首先要生成配置文件:

jupyter notebook --generate-config

运行成功后弹出提示:

Writing default config to: /home/username/.jupyter/jupyter_notebook_config.py

该命令会创建配置文件 ~/.jupyter/jupyter_notebook_config.py

设置远程访问密码

接着需要设置远程访问的密码,通过以下命令:

jupyter notebook password

该命令会要求我们在终端输入密码(重复两次)。建议密码长度不低于8位,同时密码与账号密码需要区别设置。输入两次密码后,弹出提示:

[NotebookPasswordApp] Wrote hashed password to /home/username/.jupyter/jupyter_notebook_config.json

修改jupyter notebook配置

使用以下命令打开配置文件:

vim ~/.jupyter/jupyter_notebook_config.py

修改部分设置,可以直接复制下面三行设置,将其粘贴在 ~/.jupyter/jupyter_notebook_config.py的开始位置,如下:

c.NotebookApp.ip='*'
c.NotebookApp.open_browser=False
c.NotebookApp.port=8888
  • 第一行设置IP为服务器主机IP,使用 *可以自动识别主机IP,对于有多台计算节点的服务器集群,这种设置更方便。
  • 第二行设置运行jupyter notebook命令时不在主机打开浏览器,对于服务器,这样的设置是合理的;
  • 第三行设置运行jupyter notebook命令时首选的端口,如果该端口被占用,则打开8889端口,如果8889端口被占用,则打开8890端口,依次类推,直到找到可用的端口。对于不少服务器集群,只会开放某个范围段的端口,例如 6666-6699,则设置 c.NotebookApp.port为范围段的起始端口,例如 c.NotebookApp.port=6666

如下图所示,修改完毕后,保存配置文件并退出!

【Python编程】服务器长期开启jupyternotebook远程连接服务

使用nohup运行jupyter notebook命令

nohup英文全称 no hang up(不挂起),用于 在系统后台不挂断地运行命令,退出终端不会影响程序的运行
nohup命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out的文件到当前目录下,如果当前目录的 nohup.out文件不可写,输出重定向到 $HOME/nohup.out文件中。

其语法格式如下:

nohup Command [ Arg ... ] [ & ]

参数说明:

  • Command:要执行的命令。
  • Arg:一些参数,可以指定输出文件。
  • &:让命令在后台执行,终端退出后命令仍旧执行。

因此,我们可以使用 nohup命令来运行 jupyter notebook,如下所示:

conda env list # 查看所有conda环境名称
conda activate [需要运行jupyter notebook的环境名]
cd ~ # 切换至home目录
nohup jupyter notebook &

当然,我们也可以指定端口,首先检测端口是否被占用,例如检测端口6666是否被占用:

netstat -lnp | grep 6666

返回 No info could be read for "-p"或者 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.),说明端口没有被占用。
然后,运行以下命令指定端口提供Jupyter notebook远程服务:

nohup jupyter notebook --port=6666 &

打开 ~/nohup.out文件,查看 jupyter notebook运行状态,如下:

[I 00:49:01.823 NotebookApp] Serving notebooks from local directory: /home/username
[I 00:49:01.823 NotebookApp] The Jupyter Notebook is running at:
[I 00:49:01.823 NotebookApp] http://gpu-6:6666/
[I 00:49:01.823 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

假设你运行该命令的服务器IP为: 123.123.123.123,则可以使用以下连接访问jupyter notebook:

http://123.123.123.123:6666/

如下图所示,输入之前使用 jupyter notebook password设置的远程访问密码,即可连接到服务器上的jupyter notebook

【Python编程】服务器长期开启jupyternotebook远程连接服务

jupyter notebook的简单使用

通过jupyter notebook打开一个终端

在jupyter notebook的右侧,有一个 New选项,可以通过该选项选择Terminal,从而打开一个终端,在终端里面进行命令操作。

【Python编程】服务器长期开启jupyternotebook远程连接服务

几个jupyter notebook使用技巧

  • 进一步地,我们可以在打开的终端使用byobu或者tmux命令,进入byobu界面/tmux界面,这就意味着,可以稳定运行命令,而不用担心本地电脑的网络连接是否稳定。
  • 同时jupyter notebook的Running菜单里面可以看到处于running状态的notebook文件或者终端,如下图所示。如果我们的某个notebook文件代码已经运行完毕,并且想关闭它,除了需要在浏览器界面关闭notebook文件或者terminal终端,还需要进入Running菜单点击 关闭,才能真正关闭代码文件或者终端,释放内存或者显存!

【Python编程】服务器长期开启jupyternotebook远程连接服务

【Python编程】服务器长期开启jupyternotebook远程连接服务

Original: https://www.cnblogs.com/chenyirong/p/16342345.html
Author: 华工陈艺荣
Title: 【Python编程】服务器长期开启jupyternotebook远程连接服务

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/712950/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球