2588 字
13 分钟

服务器环境配置指南

这套流程用于初始化没有 root 权限的 Linux 服务器。目标是在用户目录中完成 Shell、Python、项目目录和远程文件挂载配置,不依赖系统管理员安装软件。

主要内容包括:

  • Shell 环境初始化与 zsh 编译安装
  • oh-my-zsh 配置与 Powerlevel10k 主题
  • micromamba 部署与初始化
  • 个人共享目录与项目工作区建立
  • 使用 rclone 将本机 SFTP 目录挂载为 FUSE 目录
  • Python 环境创建
  • pip 国内镜像配置

以下步骤均无需 sudo 或 root 权限,仅在用户目录下操作。


1. Shell 环境升级:编译安装 zsh#

大部分 Linux 服务器预装的是 bash,但如果你习惯 zsh 的补全和主题生态,建议自行编译一份用户态 zsh

1.1 准备编译依赖#

由于没有 root 权限,需要借助 micromamba 创建临时环境来提供编译工具链:

Terminal window
# 下载 micromamba 二进制(详见下一节)
curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj .local/micromamba
chmod +x .local/micromamba/micromamba
# 创建一个用于编译的环境
./.local/micromamba/micromamba create -n make make ncurses

1.2 下载并解压 zsh 源码#

Terminal window
# 下载 zsh 源码包
wget https://sourceforge.net/projects/zsh/files/zsh/5.9.1/zsh-5.9.1.tar.xz/download -O zsh-5.9.1.tar.xz
tar -xJf zsh-5.9.1.tar.xz
cd zsh-5.9.1

1.3 配置与编译#

设置编译环境变量,让编译器找到 micromamba 环境中安装的 ncurses 库:

Terminal window
ENV_PATH="$HOME/.local/micromamba/envs/make"
make distclean || rm -f config.cache
./configure --prefix="$HOME/.local/zsh" \
CFLAGS="-I${ENV_PATH}/include -I${ENV_PATH}/include/ncurses" \
CPPFLAGS="-I${ENV_PATH}/include -I${ENV_PATH}/include/ncurses" \
LDFLAGS="-L${ENV_PATH}/lib -Wl,-rpath,${ENV_PATH}/lib" \
--with-termlib=ncurses
make && make install

编译完成后,zsh 会被安装到 $HOME/.local/zsh 下。

1.4 切换默认 Shell#

~/.local/zsh/bin/zsh
# 确认 zsh 路径
which zsh
# 查看当前系统已登记的 shell
cat /etc/shells
# 切换默认登录 shell
chsh -s "$HOME/.local/zsh/bin/zsh"
TIP

如果 chsh 在服务器上可用(部分共享服务器允许用户自行切换),该命令会直接生效。重新登录后即为 zsh

chsh 不可用,可在 ~/.bash_profile 末尾添加 exec $HOME/.local/zsh/bin/zsh,每次登录时自动进入 zsh

1.5 安装 oh-my-zsh 与 Powerlevel10k 主题#

oh-my-zsh 是 zsh 最流行的配置框架,提供丰富的主题和插件生态。Powerlevel10k(p10k)是一款高性能的 oh-my-zsh 主题,提供清晰的信息展示和便捷的配置向导。

1.5.1 安装 oh-my-zsh#

通过 curl 一键安装:

Terminal window
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

安装脚本会自动备份已有的 ~/.zshrc 并生成一份新的默认配置。

1.5.2 安装 Powerlevel10k 主题#

将 p10k 主题克隆到 oh-my-zsh 的自定义主题目录下:

Terminal window
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
"${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"

1.5.3 启用主题#

编辑 ~/.zshrc,将主题设置为 powerlevel10k/powerlevel10k

Terminal window
# 修改前
ZSH_THEME="robbyrussell"
# 修改后
ZSH_THEME="powerlevel10k/powerlevel10k"

1.5.4 运行配置向导#

重新加载 ~/.zshrc 或新开一个终端标签页,p10k 会自动启动交互式配置向导:

Terminal window
source ~/.zshrc

配置向导会依次询问:

  • 字体:是否安装 Meslo Nerd Font(推荐安装,否则部分图标显示异常)
  • 样式:经典、纯净、彩虹、瘦线等多种样式可选
  • 提示符元素:选择要显示的信息(时间、电池、Python 虚拟环境、git 状态等)
  • 间距与换行:单行或双行提示符

配置完成后,p10k 会自动生成 ~/.p10k.zsh 文件,后续可通过 p10k configure 随时重新运行向导。

TIP

如果终端连接后图标显示为乱码或方框,说明缺少 Nerd Font。可以在本地终端(如 iTerm2、Windows Terminal)中下载安装 Meslo Nerd Font,并将终端字体设置为 MesloLGS NF

TIP

p10k 配置向导提供了丰富的自定义选项,强烈建议首次使用时花几分钟过一遍向导,后续使用体验会好很多。


2. 安装 Micromamba#

micromambaconda 的 C++ 重实现,静态链接、启动速度快、无环境嵌套问题,非常适合在无 root 权限的环境下管理 Python 版本和包。

2.1 下载与安装#

Terminal window
curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj .local/micromamba
chmod +x .local/micromamba/micromamba

2.2 初始化 Shell#

Terminal window
./.local/micromamba/micromamba shell init -s bash
# 如果使用 zsh,替换为:
./.local/micromamba/micromamba shell init -s zsh

初始化完成后,重新加载 shell 配置文件或重新登录即可使用 micromamba 命令。

2.3 验证安装#

Terminal window
micromamba env list

如果正确输出了环境列表(即使为空),说明安装成功。


3. 建立目录结构#

3.1 服务器摸底#

在新服务器上,先确认磁盘容量、配额和共享目录情况:

Terminal window
df -h # 查看磁盘挂载与容量
quota -v # 查看用户配额
groups # 查看所属组

3.2 创建个人工作目录#

根据共享存储的布局,建议建立标准化的个人目录结构。

这样做的目的是将自己的文件(代码、数据、模型、产出)存放在干净的独立目录中,与 ~/.cache、shell 配置文件、micromamba 环境等系统/工具生成的文件彻底分离。这样无论是备份、迁移还是清理缓存,都不会误伤自己的数据。

/share/<group_name>/<username>/
├── Datasets/ # 数据集
├── Models/ # 预训练模型
├── Outputs/ # 输出与实验结果
└── Projects/ # 项目工作区

创建命令(按实际情况修改组名):

Terminal window
GROUP_NAME="your-group"
USER_NAME="${USER:?当前 shell 未设置 USER}"
SHARE_BASE="/share/${GROUP_NAME}/${USER_NAME}"
mkdir -p "${SHARE_BASE}"/{Datasets,Models,Outputs,Projects}

3.3 创建项目工作区#

Terminal window
mkdir -p ~/Projects/work1

建议将工作区与共享目录配合使用,项目产出可以软链接或直接存放到共享目录中,便于团队协作。

3.4 使用 rclone 挂载本机 SFTP 目录#

有些程序不能正确跟随符号链接,或者要求目标必须表现为普通目录。此时可以让 rclone 通过本机的 SSH/SFTP 读取实际工作目录,再将它挂载到另一个位置。程序看到的是一个普通的 FUSE 目录,而不是符号链接。

这样做的主要目的是把当前希望通过网页查看的内容统一挂载到一个固定目录,再由 OpenList 等外部服务挂载并提供网页浏览,而不必移动或复制原始文件。

以下示例假设服务器的目录结构为:

/sdc/home/<username>/<username>/
├── ai-workspace/w1/ # 实际目录
└── Pan/w1/ # FUSE 挂载点

示例中的用户名从 $USER 获取,不需要在命令或文章中写入真实账号。

前置条件#

此方案不需要 root 权限,但需要:

  • $HOME/bin/rclone 已安装且可执行;
  • 系统提供 fusermount3
  • 本机 sshd 正在运行;
  • ~/.ssh/id_ed25519 可以免密登录 localhost
  • 挂载点存在且为空。

可以先验证依赖和本机 SSH:

Terminal window
command -v "$HOME/bin/rclone"
command -v fusermount3
ssh -i "$HOME/.ssh/id_ed25519" localhost true

定义脱敏路径变量#

Terminal window
USER_NAME="${USER:?当前 shell 未设置 USER}"
USER_ROOT="/sdc/home/${USER_NAME}/${USER_NAME}"
SOURCE_DIR="${USER_ROOT}/ai-workspace/w1"
MOUNT_DIR="${USER_ROOT}/Pan/w1"

先确认实际目录存在,再创建空挂载点:

Terminal window
test -d "$SOURCE_DIR"
mkdir -p "$MOUNT_DIR"
if [ -n "$(find "$MOUNT_DIR" -mindepth 1 -maxdepth 1 -print -quit)" ]; then
echo "挂载点非空:$MOUNT_DIR" >&2
exit 1
fi

执行挂载#

rclone 的按需 SFTP remote 使用双斜杠表示远端绝对路径。下面先移除 SOURCE_DIR 开头的 /,再显式拼接 //

Terminal window
REMOTE=":sftp,host=localhost,user=${USER_NAME},key_file=${HOME}/.ssh/id_ed25519,known_hosts_file=none://${SOURCE_DIR#/}"
LOG_FILE="$(dirname "$MOUNT_DIR")/.rclone-w1.log"
"$HOME/bin/rclone" mount "$REMOTE" "$MOUNT_DIR" \
--daemon \
--vfs-cache-mode writes \
--log-file "$LOG_FILE" \
--log-level INFO

这里的 known_hosts_file=none 会跳过 localhost 的主机密钥校验,仅适合明确连接本机回环 SSH 的场景。如果改为连接其他主机,应配置并校验 known_hosts,不要沿用这个选项。

检查挂载是否成功:

Terminal window
mountpoint "$MOUNT_DIR"
findmnt -T "$MOUNT_DIR"

成功后,访问 Pan/w1 实际会通过本机 SFTP 读写 ai-workspace/w1

卸载#

正常卸载:

Terminal window
fusermount3 -u "$MOUNT_DIR"

如果提示设备忙,先关闭终端、编辑器、训练任务等正在访问该目录的程序,再重新卸载。必要时可以延迟卸载:

Terminal window
fusermount3 -uz "$MOUNT_DIR"
WARNING

挂载期间不要删除或移动 w1 挂载点。服务器重启后 FUSE 挂载会失效,需要重新执行挂载命令;若要长期使用,可以后续再封装为登录脚本或用户级服务。


4. 创建 Python 环境#

4.1 基础 Python 环境#

创建一个通用 Python 3.10 环境:

Terminal window
micromamba create -n py10 python=3.10

4.2 环境管理常用命令#

Terminal window
micromamba env list # 列出所有环境
micromamba activate py10 # 激活环境
micromamba deactivate # 退出当前环境
micromamba remove -n py10 --all # 删除环境
micromamba install -n py10 <package> # 安装包

5. 配置 pip 国内镜像#

在国内网络环境下,配置 pip 镜像源可以显著提升包下载速度。

5.1 写入配置文件#

Terminal window
mkdir -p ~/.config/pip
cat > ~/.config/pip/pip.conf <<'EOF'
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
EOF

5.2 验证配置#

Terminal window
micromamba run -n py10 python -m pip config list

输出中应包含 index-url 指向清华源,即配置生效。


6. 启动配置文件整理#

初始化过程中需要调整以下 shell 配置文件,确保每次登录环境正确:

文件用途
~/.bashrcbash 交互式 shell 的配置文件
~/.bash_profilebash 登录时读取的配置文件
~/.zshrczsh 的配置文件

建议将 micromamba 的初始化代码、环境变量(如 PATHLD_LIBRARY_PATH)统一写入对应 shell 的配置文件中。


7. 配置 Git 提交模板#

在服务器上进行开发时,经常需要提交代码。配置一个标准化的提交信息模板可以让每次 git commit 时都有结构化的提示,避免遗漏关键信息。

7.1 创建模板文件#

Terminal window
cat > ~/.git-commit-template.txt << 'EOF'
**note:**
-
---
**todo:**
- []
---
**fixed:**
- []
EOF

模板分为三个区域:

区域用途
**note:**备注说明、背景信息、相关上下文
**todo:**待完成的待办项,使用 - [] 标记
**fixed:**本次提交修复的问题或完成的事项

7.2 配置 Git 使用模板#

Terminal window
git config --global commit.template ~/.git-commit-template.txt
TIP

如果希望只对特定项目生效,去掉 --global,在对应仓库目录下执行 git config commit.template ~/.git-commit-template.txt 即可。

7.3 效果#

配置完成后,每次执行 git commit(不带 -m)时,编辑器会自动打开并预填充模板:

**note:**
-
---
**todo:**
- []
---
**fixed:**
- []

只需在对应位置填写内容即可。使用 -m 参数时模板不会生效,适用于简单的一次性提交。


初始化结果确认#

逐项执行以下检查,确认初始化结果:

  • 用户态 micromamba 已安装,可管理 Python 环境
  • zsh 已编译安装并设为默认登录 shell
  • 个人共享目录与标准子目录结构已建立
  • 项目工作区已创建
  • Python 3.10 环境(py10)已创建
  • pip 已配置清华镜像源
  • Git 提交模板已配置(note/todo/fixed 三段式)

这些项目全部通过后,环境即可用于数据集管理、模型下载和实验脚本开发。后续升级仍应保持工具安装在用户目录中,避免与系统包管理器混用。

服务器环境配置指南
https://pinellia.uk/posts/server-env-setup/
作者
Pinellia
发布于
2026-06-12
许可协议
CC BY-NC-SA 4.0