Claws Garden

快速搭建jupyter notebook

学习Python,或者刷算法题的时候,希望可以免去本地装配python环境、命令行解释运行等烦恼。利用jupyter-notebook,可以在自己的服务器上搭建一个web端快速编写代码、一键解释运行的平台。以后就可以把精力专注在python学习和刷题上了。

准备工作

这里准备采用docker镜像的方式快速搭建,非常方便。另外,网站最好使用ssl加密一下,让数据传输更加安全,也通过域名让平台更加容易访问。因此,需要提前安装:

  1. Docker
  2. Nginx

安装步骤

确定自己需要的镜像

jupyter notebook 的官方镜像有很多个版本:

具体可以参考https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html

这里因为我们的服务器主要供学习Python和刷题使用,scipy版本就比较合适了。

Docker运行容器

1sudo docker run -d -p 10000:8888 --restart=always -v /mnt/jupyter:/home/jovyan jupyter/scipy-notebook

其中,-p是映射端口,-d指定后台运行,–restart指定每次意外关闭后还会自动启动,-v指定数据映射到宿主机,防止丢失。

Nginx 配置

 1 server {
 2        listen 443 ssl http2;
 3        server_name j.claws.top;
 4
 5        ssl_certificate /root/cert/claws.top/fullchain.cer;
 6        ssl_certificate_key /root/cert/claws.top/cert.key;
 7
 8        location / {
 9            proxy_set_header Host $http_host;
10            proxy_pass http://127.0.0.1:10000;
11        }
12
13        location ~*/(api/kernels/[^/]+/(channels|iopub|shell|stdin)|terminals/websocket)/? {
14            proxy_pass http://127.0.0.1:10000;
15
16            proxy_set_header X-Real-IP $remote_addr;
17            proxy_set_header Host $host;
18            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
19            # WebSocket support
20            proxy_http_version 1.1;
21            proxy_set_header Upgrade $http_upgrade;
22            proxy_set_header Connection "upgrade";
23
24        }
25    }

注意,一定要配置websocket支持,否则无法正常新建和编辑脚本文件,也无法正常连接内核。

#Python