在 Linux 服务器或开发机上搭建编程语言运行环境,是日常工作中最基础也最频繁的操作。下面介绍这三种语言在 Linux 下的主流部署方式,以兼顾稳定、灵活和易于切换版本为核心目标。
1. Node.js 环境部署
推荐方式:使用 nvm(Node Version Manager)
nvm 允许你在同一台机器上安装多个 Node.js 版本,并随时切换,且完全安装在你自己的家目录下,不需要 root 权限。
# 安装 nvm(需先安装 curl)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 重启终端或执行以下命令使 nvm 生效
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# 安装最新的 LTS 版本
nvm install --lts
# 或者安装特定版本
nvm install 20
# 查看已安装的版本
nvm ls
# 切换使用的版本
nvm use 20
备选:使用系统包管理器(快速但版本可能较旧)
# Debian/Ubuntu
sudo apt update && sudo apt install nodejs npm
# RHEL/CentOS/Fedora
sudo dnf install nodejs npm # 或 yum
如果通过包管理器安装的版本不够新,可以再结合 nvm 覆盖一个更新的版本。
验证安装:
node -v
npm -v
2. Python 环境部署
现代 Linux 发行版一般已预装 Python 3,但版本可能较旧或你希望隔离项目依赖。推荐组合:系统 Python + pyenv + 虚拟环境。
使用 pyenv 管理多版本 Python
pyenv 可以无缝安装和切换不同 Python 版本,无需触及系统自带的 Python(移除或替换系统 Python 可能导致系统工具故障)。
# 安装依赖(以 Debian/Ubuntu 为例)
sudo apt update
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
# 安装 pyenv
curl https://pyenv.run | bash
# 将以下内容添加到 ~/.bashrc 或 ~/.zshrc
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
# 重启终端或 source 配置文件后,安装需要的 Python 版本
pyenv install 3.12.2
# 设置全局默认版本(不影响系统 Python)
pyenv global 3.12.2
创建项目级虚拟环境
不要将项目包直接安装在系统或用户全局环境中。使用 venv 为每个项目创建独立环境:
# 在项目目录下
python -m venv venv
# 激活虚环境
source venv/bin/activate
# 现在安装的包仅限于此项目
pip install flask requests
# 退出虚环境
deactivate
搭配 pip freeze > requirements.txt 和 pip install -r requirements.txt 来复现环境。
验证版本:
python --version
pip --version
3. Go 环境部署
Go 语言官方推荐直接下载预编译的二进制包进行安装,这样能始终获得最新或特定版本,并且安装路径清晰,升级方便。
从官方下载并安装(推荐)
- 访问 https://go.dev/dl/,复制最新 Linux 版本的下载链接,或使用如下命令(以 1.22.0 为例,请根据实际需求替换版本号):
wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
- 配置环境变量,在
~/.bashrc或~/.zshrc中添加:
export PATH=$PATH:/usr/local/go/bin
# 设置 GOPATH(用于存放第三方源码和编译后的包,通常指向家目录下的 go)
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
- 立即生效:
source ~/.bashrc
验证安装与构建第一个程序:
go version
# 创建经典的 Hello World
mkdir hello && cd hello
go mod init example/hello
echo 'package main; import "fmt"; func main() { fmt.Println("Hello, Go!") }' > hello.go
go run hello.go
国内用户加速代理(可选)
如果下载 Go 模块慢,可设置国内代理:
go env -w GOPROXY=https://goproxy.cn,direct
使用包管理器安装(备选)
# Debian/Ubuntu
sudo apt install golang-go
# RHEL/Fedora
sudo dnf install golang
但版本可能落后于官方最新版,适用于快速体验或不需要最新特性的简单项目。
部署最佳实践
- 尽量不污染系统 Python:永远使用虚拟环境或用户级安装(
pip install --user),避免用sudo pip install。 - 版本管理器优先:对 Node.js 和 Python 而言,nvm 和 pyenv 让版本切换和环境复制变得极其简单,尤其适合一台机器上需要运行多个项目的场景。
- 环境变量与 PATH:清晰管理 PATH 中不同运行时的顺序,避免因 PATH 混乱导致调用到错误版本。可以用
which node,which python,which go确认实际执行的路径。 - 自动化脚本:将上述安装步骤写成脚本(或使用 Ansible、Dockerfile),确保开发、测试、生产环境的一致性。
通过这些方式,你能在 Linux 上快速构建出可靠、可复现的开发与生产运行环境。