问题:在同一个ubuntu系统上部署多个服务,以来的环境版本可能不同,怎么办?
设置不同的环境
(一)按照语言不同配置不同的环境
python语言的环境隔离
env/virtualenv
python3 -m venv ~/envs/jupyter_env
source ~/envs/jupyter_env/bin/activate
pip install jupyterlab
conda
conda create -n jupyter_env python=3.10
conda activate jupyter_env
conda install jupyterlab
node.js语言的环境隔离
nvm(
nvm install 18
nvm use 18
npm install -g hexo-cli
cd /path/to/hexo-site
npm install
(二)使用docker进行隔离
每个服务打包成独立容器,完全隔离运行时、依赖、网络等。
为 Hexo 创建 Dockerfile(基于 Node 镜像)
为 Jupyter Lab 创建 Dockerfile(基于 Python 镜像)
使用 docker-compose.yml 统一管理:
version: ‘3’
services:
hexo:
build: ./hexo-site
ports:
- “4000:4000”
jupyter:
build: ./jupyter-config
ports:
- “8888:8888”
(三)使用系统级用户隔离(较粗糙但简单)
为每个服务创建独立系统用户,配合各自环境变量和家目录。
sudo useradd -m hexo_user
sudo useradd -m jupyter_user
然后分别以不同用户登录或 sudo -u 运行服务,各自管理自己的 Node/Python 环境。
适用于不想用容器但希望避免全局污染的场景。
(四)使用 Podman(Docker 的无守护进程替代)
与 Docker 类似,但更轻量、无需 root,适合桌面或安全要求高的环境。
(五)使用 systemd-nspawn 或 LXC(轻量虚拟机)
比 Docker 更重,但提供接近完整系统的隔离。一般用于需要内核级隔离但又不想开完整 VM 的场景。
用 Hexo 部署博客,且同时运行 Jupyter Lab 做数据分析,nvm + conda + Docker 是一个稳健组合。