Jupyter notebook服务器的搭建及常见错误解决办法


原文链接 https://blog.jaspirit.cc/posts/69f0ff47/ 作者本人

1 Jupyter notebook简介

Jupyter notebook是基于网页的python交互式开发环境,文件浏览器功能并不是其主要功能,但由于笔者在当时尚不了解其他Web文件管理系统,且有python开发的需要,因此选择在服务器上安装jupyter notebook服务。

最好在Anaconda环境下安装和运行jupyter notebook。可前往清华大学开源镜像站下载最新版本的Anaconda安装包。

2 Jupyter notebook服务的启动

若要运行jupyter notebook,需要先在终端中切换到conda环境,然后输入jupyter notebook命令即可,但此时jupyter notebook并没有向客户端开放,我们无法通过浏览器访问它,因此要更改jupyter notebook的配置文件(~/.jupyter/jupyter_notebook_config.py~为用户家目录。如果没有找到该文件,或者之前没有进行配置,可通过jupyter notebook --generate-config命令创建)

将如下字段取消注释后更改:

c.NotebookApp.ip = '*' # 设置访问notebook的ip来源,*表示所有,即服务对所有来源开放  
c.NotebookApp.password = u'sha1:xxxx' # 填写密码(见下文)  
c.NotebookApp.open_browser = False # 禁止notebook启动时自动打开浏览器(无必要打开且多数linux服务器无图形界面)  
c.NotebookApp.port = 8888 # 指定服务端口,默认是8888。e

密码通过在交互式python环境下运行如下两行python代码得到:

from notebook.auth import passwd  
passwd()

输入密码并确认后得到密码的sha1值,将其填入c.NotebookApp.password中即可。

>>> 'sha1:xxxx'  

3 将jupyter服务进行HTTPS加密

由于要使用域名访问服务,因此须在jupyter notebook的配置中将c.NotebookApp.allow_origin的值改为*以允许由域名访问(若要求严谨,可填写notebook.yourdomain.com)。否则会报Blocking Cross Origin API request for /api/sessions.错误。

另外,jupyter notebook需要nginx的websocket支持(否则会报错误Replacing stale connection),因此修改nginx配置文件如下。

server {
        listen 443 ssl;
        server_name  notebook.yourdomain.com;
        charset utf-8;
        # 大文件传输支持
        client_max_body_size 8192M;
        
        ssl_certificate yourdomain.com/fullchain.pem;
        ssl_certificate_key yourdomain.com/privkey.pem;
        ssl_trusted_certificate  yourdomain.com/chain.pem;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        server_tokens off;

        fastcgi_param   HTTPS               on;
        fastcgi_param   HTTP_SCHEME         https;
        
        # 反向代理及websocket配置
        location / {
            proxy_pass http://127.0.0.1:8888;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $http_host;
            proxy_http_version 1.1;
            proxy_redirect off;
            proxy_buffering off;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_read_timeout 86400;
        }
}

对于非root用户运行的jupyter notebook,需要有访问/usr/share的权限,因此执行命令sudo chmod 777 share/,否则会报500错误:

PermissionError: [Errno 13] Permission denied: '/usr/share/jupyter/nbconvert/templates/conf.json' -R

以上步骤完成后,使用非root账号,在conda环境下执行

nohup jupyter notebook &

即可让jupyter notebook在后台运行,并可通过https://notebook.yourdomain.com/使用它了。

  • 若提示nohup: 打开'/home/用户名/nohup.out' 失败: 权限不够,则将命令修改为

    nohup jupyter notebook >/dev/null 2>&1 &(将nohup的日志文件和错误文件重定向到/dev/null,详见此文

  • 若希望更改jupyter notebook的根目录路径(如修改为/var/www/notebook/),则可将命令进一步修改为

    nohup jupyter notebook /var/www/notebook/ >/dev/null 2>&1 &

也可通过在jupyter_notebook_config.py中修改c.NotebookApp.base_url = '/var/www/notebook/',这样就不需在运行命令时指定根目录了。

更多相关推荐

在服务器上搭建Jupyter Notebook

在服务器上搭建JupyterNotebookacmore2018.11.21.JupyterNotebook1.1安装Jupyter假定工作目录...

继续阅读

服务器上搭建jupyter notebook运...

如何在云服务器上搭建jupyternotebook运行环境(解决配置完成后,登陆密码错误的问题)最近在...

继续阅读

如何搭建服务器的远程jupyter no...

参考网站https://blog.csdn.net/ARPOSPF/article/details/80236197第一步生成配置文件jupytern...

继续阅读

服务器 jupyter notebook配置

服务器jupyternotebook配置1.建立config文件2.进入.jupyter文件夹3.打开jupyter_notebook_conf...

继续阅读

jupyter notebook NotImplemente...

Python3.8.0版本,在虚拟环境中执行报错!错误信息如下图:解决办法:找到…/tornado/platform/...

继续阅读

服务器搭建 jupyter notebook 基...

搭建jupyternotebook基于centos8开放端口查询端口是否开放打开端口重启防火墙修改jupyternoteb...

继续阅读

服务器 jupyter 虚拟,服务器运行...

学习一时爽,一直学习一直爽Hello,大家好,我是もうり,一个从无到有的技术+语言小白。https:...

继续阅读

服务器上Jupyter notebook环境搭...

可以在服务器上安装jupyternotebook进行开发工作,这样便可以摆脱服务器的vim环境在jupyternot...

继续阅读

jupyter notebook远程连接服务器...

远程连接服务器jupyternotebook运行pyspark步骤流程步骤一xshell连上服务器后修改jupyternoteb...

继续阅读

使用ssh搭建jupyter notebook服...

首先配置好linux服务器端的openssh设置jupyter生成密钥:输入密码复制“sha1………”自行创建一个配...

继续阅读