本地Jupyter notebook连接远程Linux服务器

Jupyter notebook是一种Web应用程序,当在拥有图形化界面的windows、Linux和Mac系统中,很容易安装使用。不过通常我们会将一些消耗性能的代码放到性能更强的Linux服务器中,通过本地机器来访问运行,这些Linux服务器没有图形化界面只能够通过命令来进行交互,如果想要在Linux服务器中直接使用Jupyter notebook是不可能的事情。​不过我们可以将Jupyter notebook安装在Linux服务器中,然后通过本地的浏览器来访问Linux服务器中的Jupyter notebook。

1. 在Linux服务器上安装Anaconda

Jupyter notebook是Anaconda中的内嵌工具,所以如果需要使用Jupyter notebook首先要安装Anaconda。安装Anconda的方式有很多,这里使用最直观的方式,将Anconda下载到本地,然后通过XShell工具将Anaconda安装包上传到Linux服务器中,通过命令执行安装Anconda。Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。Anaconda中已经集成了Jupyter Notebook,因此,可以首先安装Anaconda,然后再配置Jupyter Notebook。

1.1 下载Linux版本的Anaconda到本地

第一种下载方式:Anaconda清华大学镜像下载:清华镜像下载地址
到达清华大学镜像网站以后,找到安装文件Anaconda3-2020.02-Linux-x86_64.sh,下载到本地即可。
第二种下载方式:Anaconda官网下载:官网下载地址
访问该网址以后,呈现如下网页,点击页面底部的“Download”。
选择Linux版本的Anconda下载到本地计算机中。这里选择Python3.9版本,X86和Power8 and Power9表示不同的处理器架构,这里选择x86即可。

1.2 通过XShell上传安装包到Linux服务器

通过XShell将本地文件上传到Linux服务器中需要使用lrzsz小工具,默认Linux中是没有这个小工具的,因此要想使用XShell上传文件首先安装lrzsz。

安装成功后直接输入rz,将下载到本地的"Anaconda3-2021.05-Linux-x86_64.sh"文件上传到Linux服务器上, 这里上传到/opt/software文件夹。

1.3 安装Anaconda

执行脚本:
bash Anaconda3-2021.05-Linux-x86_64.sh

不断输入空格, 直至出现下图, 然后输入yes后回车,接着输入安装路径 /opt/module/anaconda3
指定Anaconda的安装路径
此时, anaconda需要下载相关的依赖包, 时间比较长, 耐心等待即可....

配置anaconda的环境变量:

$ vim /etc/profile

有些vim无法写入时,试试vi /etc/profile
增加如下配置 注意anaconda3 安装路径

export ANACONDA_HOME=/opt/module/anaconda3/bin
export PATH=$PATH:$ANACONDA_HOME/bin

重新加载环境变量:

$ source /etc/profile

修改bashrc文件

$ sudo vim ~/.bashrc

添加如下内容: 直接在第二行空行添加即可

export PATH=~/anaconda3/bin:$PATH

1.4 启动anaconda并测试

注意: 请将当前连接node1的节点窗口关闭,然后重新打开,否则无法识别

2. 本地访问Linux服务器上的jupyter notebook

2.1 配置jupyter notebook文件

一般而言,安装了Anaconda发行版时,已经自动为你安装了Jupyter Notebook的,但是也可能有例外,万一如果没有自动安装,那么就在Linux终端中输入以下这一条命令安装(一定要明确知道你机器上没有安装Jupyter Notebook再执行下面命令,如果你无法确定是否已经安装Jupyter Notebook,那么就暂时不要执行下面这条命令,等到后面遇到问题的时候再来执行):

$ conda install jupyter notebook

假设Anaconda中已经自动安装好了Jupyter Notebook。下面开始配置Jupyter Notebook,在终端中执行如下命令

$ jupyter notebook --generate-config

执行效果如下图所示。

然后,在终端中执行如下命令:

$ cd /opt/module/anaconda3/bin
$ ./python

执行效果如下图所示。

然后,在Python命令提示符(不是Linux Shell命令提示符)后面输入如下命令:

>>>from notebook.auth import passwd
>>>passwd()

执行效果如下图所示。

此时系统会让输入密码,并让你确认密码(如:123456),这个密码是后面进入到Jupyter网页页面的密码。然后系统会生成一个密码字符串,比如argon2:7c7990750e83:965c1466a4fab0849051ca5f3c5661110813795,把这个argon2字符串复制粘贴到一个文件中保存起来,后面用于配置密码。具体如下图所示:

然后,在Python命令提示符后面输入“exit()”,退出Python。如下图所示:

下面开始配置文件。如果输入vi报错时, 可以换成vim试试.
在终端输入如下命令:

$ vi ~/.jupyter/jupyter_notebook_config.py

命令执行效果如下图所示:

进入到配置文件页面,在文件的开头增加以下内容: ``` c.ServerApp.ip='*' # 就是设置所有ip皆可访问 c.ServerApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$JtNdHoeJGfT5kGeFrXa55w$XVSJUC44aQylXoPUlEo3zA' # 上面复制的那个argon2密文 c.ServerApp.open_browser = False # 禁止自动打开浏览器 c.ServerApp.port =8888 # 端口 c.ServerApp.notebook_dir = '/opt/module/jupyternotebook' #设置Notebook启动进入的目录 c.NotebookApp.allow_root=True ``` 配置文件如下图所示:
然后保存并退出vi文件(Esc键,输入:wq) 需要注意的是,在配置文件中,c.NotebookApp.password的值,就是刚才前面生成以后保存到文件中的argon2密文。另外,c.NotebookApp.notebook_dir = ‘/home/hadoop/jupyternotebook’ 这行用于设置Notebook启动进入的目录,由于该目录还不存在,所以需要在终端中执行如下命令创建:
$ cd /opt/module
$ mkdir jupyternotebook

2.2 运行jupyter notebook

Step 1: 下面开始运行Jupyter Notebook。
在终端输入如下命令:

$ jupyter notebook

执行命令后出现如下效果:

Step 2: SSH端口转发实现本地访问
需要将Linux服务器中的端口转发到本地,在本地机器中执行"ssh -N -f -L localhost:8888:localhost:8888 root@10.0.32.150",如果端口8888占用时,参考:怀疑端口被占用 注意:

  • 如果本地机器是Windows,需要安装一些额外的软件使用SSH,比如OpenSSH;
    参考:window安装openSSH服务
  • 如果本地机器是Mac或者Linux,则默认安装SSH可以直接使用;
    由于我的本地机器是Windows,因此使用cmd启动Windows的命令行,输入"ssh -N -f -L localhost:8888:localhost:8888 root@10.0.32.150",这里需要注意"root@10.0.32.150"中的root表示Linux服务器的用户名,而后面的10.0.32.150为Linux服务器的ip地址,如果想要访问自己的Linux服务器,只需要改成相对应的用户名和ip地址即可。
查看在XShell中监听的jupyter notebook服务的地址,这里需要将完整的token也复制下来。

打开本地浏览器直接输入复制的完整地址即可访问Linux服务器中的jupyter notebook。登录进去以后的界面如下图所示,这时,Jupyter Notebook的工作目录(/opt/module/jupyternotebook)有如下文件。

新建一个文件夹,命名为PySparkCode用来以后存放python的代码.

进入PySparkCode文件夹,就可以新建python3文件了.

参考:
[1] https://blog.csdn.net/tcltyan/article/details/115195893
[2] https://zhuanlan.zhihu.com/p/147904283
[3] https://blog.csdn.net/weixin_41601114/article/details/108052922?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-6-108052922-blog-121537634.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-6-108052922-blog-121537634.pc_relevant_default&utm_relevant_index=11
[5] https://blog.csdn.net/Freedom_sky_/article/details/120546625
[6] http://dblab.xmu.edu.cn/blog/2575-2/

posted @ 2022-06-04 09:52  EconCoder  阅读(79)  评论(0)    收藏  举报