背景

自己平时喜欢用python作为编程语言,因此想着在服务器上配置anaconda3Jupyter notebook,在服务器上运行Jupyter notebook,同时在本地访问Jupyter notebook,这样可以在本地编辑代码,在服务上进行计算。

配置环境

下载anaconda3

可以在本博客的资源页面,找到各个版本的anaconda3的下载链接,我下载的是Anaconda3-2020.11-Linux-x86_64.sh

安装anaconda3

安装anaconda3就很简单了。

sh Anaconda3-2020.11-Linux-x86_64.sh	

按照提示一步一步走就可以了,安装路径我选择的是/home/user_test/softwares/anaconda3

Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]
[no] >>>

这里一定要输入no或者直接回车,不然会创建一个anaconda3的环境,在shell边上会多出来一个base的标志看起来很不爽。

配置anaconda3的环境变量

vim ~/.bashrc
#添加,并保存
export PATH=/home/user_test/softwares/anaconda3/bin:$PATH
# 执行
source ~/.bashrc

配置 Jupyter notebook

生成配置文件

一般而言,配置文件jupyter_notebook_config.py,会在/home/USERNAME/.jupyter/jupyter_notebook_config.py。如果不存在的话,可以利用下面来生成。

jupyter notebook --generate-config

如果是root`用户的话,需要使用下列命令

jupyter notebook --generate-config --allow-root

一般情况下不会在root用户下面创建软件,而且在用服务器的时候,最好别用root账号,太危险了。

配置密码

  1. 使用jupyter notebook password创建密码。
    [user_test@master ~]$ jupyter notebook password
    Enter password:
    Verify password:
    [NotebookPasswordApp] Wrote hashed password to /home/user_test/.jupyter/jupyter_notebook_config.json
  2. 查看密码的hash值,并复制
    [user_test@master ~]$ cat ~/.jupyter/jupyter_notebook_config.json
    {
    "NotebookApp": {
    "password": "argon2:$argon2id$v=19$m=10240,t=10,p=8$kzqRTDgdyoe6S647DMuOsg$3WwKVJakPy/pF7sXSMjbqg"
    }
  3. 添加密码到配置文件
    vim ~/.jupyter/jupyter_notebook_config.py
    ###添加
    ###允许访问此服务器的 IP,*表示任意 IP
    c.NotebookApp.ip='*'
    c.NotebookApp.password = u'argon2:$argon2id$v=19$m=10240,t=10,p=8$kzqRTDgdyoe6S647DMuOsg$3WwKVJakPy/pF7sXSMjbqg' #这里填上刚才复制的hash值
    c.NotebookApp.open_browser = False #运行时不打开本机浏览器
    c.NotebookApp.port =8888 #端口号
    c.NotebookApp.enable_mathjax = True # 启用 MathJax
    c.NotebookApp.allow_remote_access = True #允许远程访问

测试

启动 Jupyter book

通过后台启动Jupyter notebook

jupyter notebook &

可以使用jobs命令查看,后台运行的程序的状态。

[user_test@master ~]$ jobs
[1]+ Running jupyter notebook &

本地访问

在本地使用浏览器输入IP:8888,并输入密码进行访问就可以了

http://172.16.34.127:8888/


可以看到可以通过本地访问服务器开启的Jupyter notebook。我们在服务器哪个文件夹开启jupyter notebook,进入的界面就会在哪个文件夹,保存的.ipynb文件,也会保存在该文件夹。

关闭Jupyter notebook

可以使用kill %id号关闭后台运行的进程。

[user_test@master ~]$ jobs
[1]+ Running jupyter notebook &
[user_test@master ~]$ kill %1
[user_test@master ~]$ [C 17:44:20.996 NotebookApp] received signal 15, stopping
[I 17:44:20.997 NotebookApp] Shutting down 0 kernels
[I 17:44:20.997 NotebookApp] Shutting down 0 terminals
[1]+ Done jupyter notebook

计算节点上访问

因为我是在控制节点上配置和安装Jupyter notebook的,但是我把计算节点的/home目录通过NFS挂载到了控制节点的/home,因此我可以在计算节点上开启Jupyter notebook,一般而言控制节点不会进行计算,只有计算节点才会进行计算。

ssh node1
jupyter notebook &

依然可以成功,只要能和计算节点能够通信就可以实现,但是对于一般的集群而言,用户只能访问控制节点,计算节点是不会暴露给用户的,个人使用的话还是不错的。

参考