欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

本地使用远程服务器的jupyter notebook

程序员文章站 2022-05-27 19:32:38
...

本文参考了 link,并做了适合自己的修改。

本地使用远程服务器的jupyter notebook

远程服务器端

  1. 生成jupyter notebook配置文件(终端输入命令)

    jupyter notebook --generate-config

  2. 配置密码 (终端打开ipython/python,输入两行命令)

    from notebook.auth import passwd
    passwd()

    input自己想要设置的密码,之后会自动返回一个密码序列,复制下来,第四步用

  3. 配置密码生成ssl证书(最后需要用https登录jupyter), 进入想要保存证书的目录内,粘贴以下命令

    openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mykey.key -out mycert.pem

  4. 修改jupyter配置文件

    vim ~/.jupyter/jupyter_notebook_config.py

    对以下几行做如下修改:

    c.NotebookApp.password=u'sha1:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
                                  //  (注:XXXXXXXXXXXXXXXXXXXXXXX 为第2步中生成的密码序列)
    c.NotebookApp.certfile = u'/absolute/path/to/your/certificate/mycert.pem'
    c.NotebookApp.keyfile = u'/absolute/path/to/your/certificate/mykey.key'
                         //(注:为第3步中生成的mycert.pem和mykey.key两个文件的绝对路径,可用pwd查看)        
    c.NotebookApp.ip = '*'
    c.NotebookApp.open_browser = False
    c.NotebookApp.port = 8889     //自己可以设定成别的
    

    :x 或者 :wq! 保存并退出

  5. 在服务器上运行jupyter Notebook

    nohup jupyter notebook --no-browser --port=8888 --ip=0.0.0.0 > /usr/local/myout.log 2>&1 &

    nohup不挂断的运行,可以使命令永久运行下去,和用户终端没有关系,关闭终端不会影响它的运行;no-browser是指不在服务器上使用浏览器;port可以设置成任何空闲的端口号(上一步的配置文件中我把默认端口号8888改改为了8889,这里用8888依然可以);ip如果不设置为0.0.0.0我的服务器会报错:OSError: [Errno 99] Cannot assign requested addres;[-u表示无缓冲输出(执行程序后的输出内容)暂时不加-u];>将nohup默认的输出重定向到指定文件;2>&1用来将标准错误2重定向到标准输出1中;&是指在后台运行,和nohup配合使用,使命令永久在后台执行,最后可以用kill -9 进程号 结束程序

    终端查看程序进程号

    pgrep jupyter

本地端

  1. 本地和服务器端口映射

    ssh [email protected]_ip -L127.0.0.1:8000:127.0.0.1:8888

    username就是在服务器上开设的用户名,server_ip就是服务器的IP,至于“-L127.0.0.1”中为什么是127.0.0.1我也不太清楚(L和127之间没有空格),然后就是将本地的8000端口映射到服务器端的8888端口,也就是jupyter notebook使用的端口

  2. 本地浏览器打开服务器上的Jupyter Notebook

    在本地的浏览器里输入https://127.0.0.1:8000,回车,自动跳转到输入密码页面,输入第2步中自己设置的密码(注意不是返回的那个密码序列),就可以打开服务器上的Jupyter Notebook了,开始使用吧!