Nginx 代理 jupyter notebook
Nginx 代理 jupyter notebook
闲来无事,又开始折腾vps新玩法,由于最近用到python比较多,正好看到了搭建jupyter notebook的教程,就决定在vps上搭建一个jupyter notebook服务,便于在线运行代码,并且一次性配置好环境,永久收益!
环境准备
vps 一台(本人使用的Debian 10 stable),2019/07/06正式发布的Debian10,立刻就给服务器更新了。
python3, nginx
jupyter 安装和配置
最好不要用root用户运行,所以,在非root用户下,建立目录jupyter:
mkdir jupyter
cd jupyter
进入jupyter目录后,建立python3的虚拟环境,并激活:
python3 -m venv venv
. venv/bin/activate
安装jupyter notebook:
pip install --upgrade pip
pip install jupyter
此时已经可以通过直接运行:jupyter notebook 运行了,但是只能服务器本地访问,而由于这是在服务器上操作,所以这样运行后我们自己本地电脑无法访问,所以需要通过nginx代理,然后绑定域名进行访问。
先配置jupyter notebook的配置文件,输入以下命令:
jupyter notebook --generate-config
此时会在~/.jupyter 目录下生成jupyter_notebook_config.py文件,里面全是注释,可以自己编辑。在开始之前,使用以下命令生成一个加密形式的密码:
python -c "import IPython;print(IPython.lib.passwd())"
连续输入两次密码后,控制台会输出类似:
sha1:********:*****************
的字符串
编辑jupyter_notebook_config.py,我的配置如下:
#!/usr/bin/env python
# coding=utf-8
c.NotebookApp.notebook_dir = '/home/git/jupyter/codes'
c.NotebookApp.password = u'sha1:×××××××××××:×××××××××××××××××××××××××××××××××××'
c.NotebookApp.port = 8888
c.NotebookApp.port_retries = 50
c.NotebookApp.open_browser = False
c.NotebookApp.allow_remote_access = True
notebook_dir 课设置成自己的任意目录,后面nginx设置root的时候,也必须设置成相同的目录
nginx配置
建立并编辑/etc/nginx/conf.d/jupyter.conf:
upstream notebook {
server 127.0.0.1:8888;
}
server {
if ($host = py.smartdeng.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name py.smartdeng.com;
rewrite ^/(.*) https://py.smartdeng.com/$1 permanent;
}
server{
listen 443 ssl;
server_name py.smartdeng.com;
root /home/git/jupyter/codes;
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;
}
}
再使用certbot对py.smartdeng.com域名配置SSL证书.
运行jupyter notebook
可设置脚本:
jupyter.sh:
#!/bin/bash
cd /home/git/jupyter && . venv/bin/activate && jupyter notebook
再配置systemd service 开机启动:
配置文件:/etc/systemd/system/jupyter.service:
[Unit]
Description=jupyter notebook
[Service]
ExecStart=su - git -c "sh /home/git/jupyter/jupyter.sh"
[Install]
WantedBy=multi-user.target
然后设置开机自动启动服务,再立即启动:
sudo systemctl enable jupyter.service
sudo systemctl start jupyter.service
完成!
本地浏览器输入:py.smartdeng.com即可访问