Skip to main content

Nginx 代理 jupyter notebook

SmartDeng...About 2 minPythonNginxPython

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即可访问

Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v3.1.3