MENU

云计算平台Jupyterlab搭建指南

December 25, 2021 • 极意阅读设置

本文的意图是建立一个私有的云计算IDE,使用的是交互式计算的Jupyter软件,支持python,MM等等编程语言。Jupyter用久了确实已经离不开了,感觉基本是用python做科学计算的最佳IDE。

本文的实现方式是在服务器上部署Jupyterlab, 然后使用Nginx反向代理从而达到Https访问(Http不安全且无法拖拽文件),最后使用systemd保证文件在后台的正常运行。

原本还以为这种东西轮子应该很多了,结果搜出来的没几个能直接套用的,这确实让我有点意外,所以只能自己从头到尾重新弄了一遍,请参加下文,测试系统为Debian11。


—— Conda安装配置Jupyterlab ——


首先安装Anaconda

# 安装依赖
sudo apt-get install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6

wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh

bash Anaconda3-2021.11-Linux-x86_64.sh

把conda添加到系统环境

sudo nano /etc/profile
#把下面两行放在文件里面,记得修改你的user为自己的
#Anacondaexport 
export PATH=$PATH:/home/user/anaconda3/bin
#激活环境
source /etc/profile

现在你敲入conda -V应该就能正常显示版本号了

安装jupyterlab,并生成配置文件

conda install jupyterlab

# 输入密码并保存好(这样的权限比修改py配置文件要高,且不太会出问题)
jupyter lab password

# 生成配置文件
jupyter lab --generate-config

编辑刚才你生成的配置文件

c.ServerApp.password_required = True
c.ServerApp.port = 端口号,默认为8888,建议修改
c.ServerApp.notebook_dir = u'每次打开时的文件位置'
c.ServerApp.allow_remote_access = True

这里还要记得调整上文中文件位置的权限,确保user拥有对应位置的访问权限

chown -R 用户名:用户名 位置
chmod -R 755 位置

—— Nginx反代(Https) ——


安装nginx并添加反代文件(域名和ssl密钥不在本文范围)

sudo apt install -y nginx
# 添加配置文件
sudo nano /etc/nginx/conf.d/jupyterlab.conf

把配置文件按下文模式修改

map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
}

server {
        listen 80;
        server_name 你的域名;
        rewrite ^(.*)$ https://你的域名$1 permanent;
}
server {
        listen 443 ssl http2;
        server_name 你的域名;
        index index.html index.htm index.php default.html default.htm default.php;

        ssl_certificate        /etc/letsencrypt/live/你的密钥路径(域名)/fullchain.pem;
        ssl_certificate_key    /etc/letsencrypt/live/你的密钥路径(域名)/privkey.pem;
        ssl_session_timeout 10m;
        ssl_session_cache shared:SSL:10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_stapling on;
        ssl_prefer_server_ciphers on;



    location / {
        proxy_pass            http://localhost:上文自定义的端口;
        proxy_set_header      Host $http_host;
    }

    location /api/kernels/ {
        proxy_pass            http://localhost:上文自定义的端口;
        proxy_set_header      Host $http_host;
        # websocket support
        proxy_http_version    1.1;
        proxy_set_header      Upgrade "websocket";
        proxy_set_header      Connection "Upgrade";
        proxy_read_timeout    86400;
    }
}

测试并重启nginx

nginx -t
sudo systemctl reload nginx

—— Systemd配置 ——


新建Systemd配置文件

sudo nano /etc/systemd/system/jupyterlab.service

修改为如下,记得修改下面的用户名为你自己的

[Unit]
Description=jupyterlab

[Service]
User=用户名
PIDFile=/run/jupyter.pid
ExecStart=/home/用户名/anaconda3/bin/python -m jupyter-lab  --no-browser User=user
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

重新加载systemd配置,并设置开机自启动

sudo systemctl daemon-reload
sudo systemctl enable jupyterlab.service
sudo systemctl enable nginx

启动服务或者重启即可正常访问,如有问题记得检查防火墙,还有问题的话用下面方式查看日志

journalctl -u jupyterlab.service --since "30 min ago"

感谢阅读,希望能对你有帮助~