基本介绍
这是一个笔记本软件/文本编辑器,其次它有一系列的功能,使得它非常适合写作科学类的文章。
约等于 Python 交互式命令行 + markdown,结合 numpy、plotly.py 等科学计算相关的库,实现类似 matlab 的效果。
安装
方法一:通过 anaconda 安装
这是一个开源的 Python 发行版本,其包含了conda、Python等180多个科学包及其依赖项,当然也包含了 Jupyter notebook。
在其 官网 上提供了 Mac、Linux、Windows 在内的多个系统的安装包。
方法二:通过 pip 安装
如果 Jupyter 部署服务器上,所以安装 anaconda 并不见得方便。那么可以使用 pip 来安装
pip install jupyter
安装验证
命令行输入
jupyter notebook
你可能会看到类似这样的提示
[I 09:38:52.280 NotebookApp] The Jupyter Notebook is running at:
[I 09:38:52.280 NotebookApp] http://localhost:8888/
[I 09:38:52.280 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
根据这里的提示,访问对应的网址即可对 Jupyter 进行简单的使用。
Jupyter 的配置
完成了安装后,你可能需要根据自己的需求进行一些配置,首先你需要生成配置文件
jupyter notebook --generate-config
# 这条指令会在 ~/.jupyter 下生成一个配置文件 jupyter_notebook_config.py
几个重要的配置项包括:
# TCP/IP 相关配置
## 授权
c.NotebookApp.allow_origin = '*' # 设置访问的允许来源,* 表示接受所有来源
c.NotebookApp.allow_remote_access = False # 是否支持远程访问
## HTTPS,但是建议通过 Nginx 或 Apache 进行代理,而不通过 Jupyter 直接处理 HTTPS 请求
c.NotebookApp.certfile = '' # 证书文件路径
c.NotebookApp.client_ca = '' # 公钥证书路径
c.NotebookApp.keyfile = '' # 私钥文件路径
## 地址设置
c.NotebookApp.ip = 'localhost' # 监听的 IP 地址
c.NotebookApp.port = 8888 # 监听的地址
c.NotebookApp.custom_display_url = '' # 显示的域名
# 本地文件配置
c.ContentsManager.untitled_notebook = '未命名' # 新建笔记本的默认名称
c.NotebookApp.notebook_dir = '/Users/antony/Notes' # 设置笔记本文件保存的路径
# 密码配置
c.NotebookApp.password = 'sha1:c05fe7fe7152:12cf0fe1c689112cc3451d1b13700af3fafadc1f'
# 设置访问密码,格式为 type:salt:hashed-password,可以通过 from notebook.auth import passwd; passwd() 来生成
c.NotebookApp.token = '<generated>' # 用于首次登陆 Jupyter 服务时进行校验的密码,默认是一个自动生成的字符串,在 Jupyter 运行时打印的信息中可以看到
配置 Nginx 代理
我的做法是 Jupyter Notebook 在本地运行,可以通过 localhost 来进行访问,再通过 Nginx 将 https 请求进行代理转发。
在配置 Nginx 之前,请在 Jupyer Notebook 的配置文件中,将 allow_origin 做相应调整,最简单的就是改为 *
。
upstream notebook {
server localhost:8888;
}
server {
# 监听 7123 端口,支持 SSL,当然也可以不支持 SSL
listen 7123 ssl;
# 监听 7124 端口,使用 http 协议
listen 7124;
# 如果要支持 SSL,需要配置相关的证书、密钥文件地址
ssl_certificate /etc/nginx/cert/certificate.crt;
ssl_certificate_key /etc/nginx/cert/private.key;
# 设置 Header
add_header Strict-Transport-Security max-age=15768000;
# 设置基础地址访问
location / {
proxy_pass http://notebook;
proxy_set_header Host $host;
}
# 设置相关接口请求,需要增加对 websocket 的支持,增加相关 header
location ~ /api/kernels/ {
proxy_pass http://notebook;
proxy_set_header Host $host;
# websocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "Upgrade";
proxy_read_timeout 86400;
}
# 设置终端接口请求,需要增加对 websocket 的支持
location ~ /terminals/ {
proxy_pass http://notebook;
proxy_set_header Host $host;
# websocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "Upgrade";
proxy_read_timeout 86400;
}
}
设置 Jupyter Notebook 的开机自启动
这里以 Ubuntu 系统为例,新增 /etc/systemd/system/jupyter.service
文件
[Unit]
Description=Jupyter Notebook
[Service]
Type=simple
ExecStart=/path/to/jupyter notebook --no-browser
# 需要将 /path/to 替换成 jupyter 的安装路径
# 建议在 Jupyter 的配置文件中,将 NotebookApp.token 修改为一个固定值
User=你的用户名
Group=用户群组
WorkingDirectory=你的 home 目录
[Install]
WantedBy=multi-user.target
启用这个服务
sudo systemctl start jupyter
sudo systemctl enable jupyter