外网访问Jupyter

Jupyter是一个非常方便的Python笔记软件,不过一般都是用来本地使用,而我因为自己也有个服务器,偶尔也要用用这个笔记,但是不能每次都在本地装一大堆东西,现在都讲究上云,咱也把咱的笔记上一下云。

想要使用Jupyter,首先要安装,当然Python什么的是必须的,这里就不多讲了,我们来看看需要装哪些套件:

sudo -H pip3 install ipython jupyter opencv-python Pillow numpy scipy matplotlib -i https://pypi.douban.com/simple

这个到底装多少根据自己的需求决定把,反正我一般这些都需要的。

配置Jupyter

因为Jupyter本身只是支持本地访问,所以我们要配置一下Jupyter,让他可以远程访问,首先我们通过如下的命令产生一个配置文件:

jupyter notebook --generate-config

如果这个命令出现ASCII编码错误,这个是因为编码问题导致的,可以用以下的命令运行

LANG=zn jupyter notebook --generate-config

同样,开启服务的时候也可以加上LANG=zn

然后,我们再生成一个密码,这个要借助ipython来实现:

$ipython
In [1]: from notebook.auth import passwd

In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:98c421304732:0d98e594255c75c53b989e500f2a150ef0c85088'

这里产生了一个密码,我们再配置文件中要把这个密码写进去,编辑~/.jupyter/jupyter_notebook_config.py这个文件:

c.NotebookApp.allow_origin = '*'
# 开启远程访问支持
c.NotebookApp.allow_remote_access = True
# 因为本地有代理,这里就只监听本地地址了
c.NotebookApp.ip = '127.0.0.1'
# 默认就不打开浏览器了
c.NotebookApp.open_browser = False
# 诺,这里就是前面的密码
c.NotebookApp.password = 'sha1:98c421304732:0d98e594255c75c53b989e500f2a150ef0c85088'
# 监听的端口,找个没用到的搞一下就好了
c.NotebookApp.port = 8888

Nginx代理转发

还是因为端口的问题,我这只能通过Nginx代理通过443端口访问我的小本本,所以依然要配置Nginx的转发:

server {
    server_name               xx.yyy.zzz;
    access_log                /var/log/nginx/py_debug.access.log;
    error_log                 /var/log/nginx/py_debug.error.log;
    client_max_body_size 10000M;

    location / {
        proxy_pass            http://xxx.xxx.xxxx.xxx:8888;
        proxy_set_header      Host $host;
        proxy_http_version    1.1;
        proxy_set_header      Upgrade "websocket";
        proxy_set_header      Connection "Upgrade";
        proxy_read_timeout    86400;
    }



    listen xxx.xxx.xxxx.xxx:localport ssl; # managed by Certbot
    ssl_certificate /your.pem;
    ssl_certificate_key /your.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCMxxxxxxxGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
}

这样本地tmux里面打开jupyter:

jupyter noteboook

之后就可以通过域名访问啦!

发表新评论