本文的意图是建立一个私有的云计算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"
感谢阅读,希望能对你有帮助~