W02-D03|VMware、CentOS 7 与 FinalShell 环境操作手册
一、用途和边界
本手册用于在 Windows 宿主机上安装 VMware Workstation、创建 CentOS 7 虚拟机、建立 FinalShell SSH 连接,并为 W02 项目复现准备经过验收的 Python 3.12 与 Git 环境。
CentOS Linux 7 已于 2024 年 6 月 30 日结束生命周期。本期按课程指定使用它做隔离实验;虚拟机不承载生产服务、真实业务数据或密钥。停止维护意味着系统不再持续获得常规安全与缺陷更新,因此生产环境应选择仍在维护周期内的发行版。
实机验收要求:本文的 Python 与 Git 安装路线已按 CentOS、Git、CPython 和 Fedora 的官方资料交叉核对;发布课程快照前,还要在本期实际 VMware、ISO 和网络条件下完整执行一次,并保存
yum、configure、make与第 10.5 节的原始输出。文档中的命令不能代替这次实机证据。
二、环境关系
Windows 宿主机
→ VMware Workstation:提供虚拟硬件
→ CentOS 7:真正运行 Linux 进程和保存 Linux 文件
→ sshd:接受 SSH 连接
→ FinalShell:Windows 上的 SSH 客户端
→ Bash:解释输入的 Linux 命令虚拟机不是远程服务器,而是运行在个人电脑中的一台“虚拟电脑”。它拥有独立的虚拟 CPU、内存、硬盘、网卡和操作系统。

三、课前材料
| 项目 | 验收条件 |
|---|---|
| Windows 宿主机 | 虚拟化可用,磁盘空间满足虚拟机安装 |
| VMware Workstation | 能启动并创建虚拟机,记录实际版本 |
| CentOS ISO | 课程目录中的 CentOS-7-x86_64-DVD-1908.iso |
| FinalShell | 能新建 SSH 连接 |
| 课程运行时基线 | python3 -V 为 3.12.x,venv 可用,Git 可用 |
| 课程快照 | 环境验收完成后创建,可供课堂恢复 |
课程已知 ISO 位置:
03_上课课件\上课所需软件\08.CentOS镜像\CentOS-7-x86_64-DVD-1908.iso四、安装 VMware Workstation
- 确认 Windows 版本、CPU 虚拟化和剩余磁盘空间。
- 使用机构确认的安装包或 Broadcom 官方当前安装程序。
- 按官方要求以管理员身份运行安装程序。
- 选择典型安装,或按机房规范设置明确的虚拟机存放目录。
- 完成后重启 Windows。
- 启动 VMware,在“帮助 → 关于”记录版本。
- 创建空白测试虚拟机或进入新建向导,确认程序基本功能。
进入 VMware 后,从“创建新的虚拟机”进入向导。不同版本的按钮位置可能略有变化,动作名称基本一致。

安装失败时保留完整错误、Windows 版本、VMware 版本和是否重启。驱动与虚拟化问题应按机型和组织策略处理,来源不明的注册表或破解脚本会扩大系统风险。
五、从 ISO 创建 CentOS 7 虚拟机
- 选择“创建新的虚拟机”。
- 使用典型配置。
- 安装来源选择课程 CentOS ISO。
- 客户操作系统选择 Linux / CentOS 64 位。
- 虚拟机名称建议 W02-CentOS7。
- 存放位置使用空间充足、路径明确的目录。
- 建议资源基线:2 个虚拟 CPU、4 GB 内存、40 GB 动态磁盘;机房可按硬件调整。
- 网络选择 NAT,便于虚拟机通过宿主机访问网络。
- 启动虚拟机进入安装。
创建完成前检查名称、存放位置、磁盘、内存和网络模式。下图是向导汇总页示例,课堂以本手册给出的资源基线为准。

六、安装 CentOS 7
- 选择 Install CentOS 7。
- 设置语言、时区和键盘。
- 选择安装目标磁盘,确认只作用于虚拟磁盘。
- 网络与主机名页面开启虚拟网卡。
- 选择带基础工具的安装方案;图形界面不是本课必需。
- 设置 root 密码并创建普通学习账号。
- 安装完成后重启,弹出 ISO 或调整启动顺序。
- 使用普通学习账号登录。
完成安装并登录后,应能进入 CentOS 桌面或命令行。图形界面只是安装完成的一种表现,后续操作仍以终端命令为主。

系统安装操作只影响 VMware 创建的虚拟磁盘。安装目标若误选宿主机真实磁盘会造成严重数据损失,因此必须在虚拟机窗口中确认设备信息。
七、基础环境取证
在 VMware 控制台执行:
cat /etc/centos-release
uname -r
whoami
pwd
hostname
ip addr记录:
VMware 版本:
虚拟机名称:
CentOS 版本:
内核:
普通用户名:
IPv4:八、准备 SSH
检查服务:
systemctl status sshd未启动时由具备管理员权限的教师或学生按课程要求执行:
sudo systemctl start sshd
sudo systemctl enable sshd再次执行 systemctl status sshd,确认 active (running)。
如果虚拟机没有 IPv4,先在 VMware 中确认网络适配器为 NAT 且“已连接”,再回到 CentOS 检查 ip addr。
先用 ping -c 3 <目标地址> 区分“虚拟机没有网络”与“某个网站或域名不可达”。-c 3 表示发送 3 次后停止,便于保留一段完整输出。

九、使用 FinalShell 连接
在 FinalShell 新建 SSH 连接:
| 字段 | 填写内容 |
|---|---|
| 名称 | W02-CentOS7 |
| 主机 | ip addr 查到的虚拟机 IPv4 |
| 端口 | 22 |
| 用户名 | 普通学习账号 |
| 认证 | 课堂统一的密码或密钥方式 |
下图展示 SSH 连接表单的位置。名称可以自定义,主机、端口和用户名必须填写本机实际值,图中的地址与账号只用于说明字段位置。

连接后再次执行:
cat /etc/centos-release
whoami
pwd
hostnameFinalShell 与 VMware 控制台显示同一版本、用户和主机名,说明连接到预期虚拟机。截图和提交物不包含密码、私钥或访问令牌。

十、安装 Git 与 Python 3.12
CentOS 7 自带的软件版本较旧,而且官方仓库已经归档。这里采用一条可解释、可验收的安装路径:
- Git 使用 CentOS 7 的 yum 包,满足本周的 clone、status、add、commit、push 等操作;
- Python 3.12 从 Python 官方源码构建,安装到
/opt/python-3.12; - 系统原有
/usr/bin/python保持不变,因为 CentOS 7 的 yum 等系统工具依赖它; /usr/local/bin/python3指向课程的 Python 3.12,让学生直接使用python3;- OpenSSL 采用 CPython 官方为 RHEL 7 / CentOS 7 提供的
Misc/rhel7配置方式。
下面的系统管理命令需要管理员权限。普通账号能够使用 sudo 时直接执行;没有 sudo 权限时,由教师在 VMware 控制台切换到管理员账号完成。
10.1 先检查 yum 软件源
sudo yum repolist如果能正常读取课程机构已经配置好的 CentOS 7 归档源,可以继续到 10.2。若出现 Could not resolve host: mirrorlist.centos.org 或找不到可用镜像,原因是 CentOS 7 已结束维护、软件包已迁入 Vault。先备份原配置,再固定到 CentOS 7.9.2009 归档:
sudo cp -a /etc/yum.repos.d/CentOS-Base.repo \
/etc/yum.repos.d/CentOS-Base.repo.before-vault
sudo tee /etc/yum.repos.d/CentOS-Base.repo >/dev/null <<'EOF'
[base]
name=CentOS-7.9.2009 - Base
baseurl=https://vault.centos.org/7.9.2009/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-7.9.2009 - Updates
baseurl=https://vault.centos.org/7.9.2009/updates/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-7.9.2009 - Extras
baseurl=https://vault.centos.org/7.9.2009/extras/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
EOF
sudo yum clean all
sudo yum makecache
sudo yum repolistVault 是停止更新后的历史快照,不会继续获得安全修复。因此这台 CentOS 7 虚拟机只承担隔离教学实验,项目中不放真实业务数据、生产密钥或长期对外服务。
10.2 安装 Git
yum 会根据仓库元数据解决 Git 所需依赖。先安装,再用真实版本输出验收:

sudo yum install -y git
git --version
command -v gitCentOS 7 仓库中的 Git 版本可能低于当前官网版本。本周使用的 clone、status、log、add、commit、pull、push 等基础命令与该版本兼容。
10.3 准备 Python 3.12 的编译依赖
Python 3.12 的 ssl 和 hashlib 至少需要 OpenSSL 1.1.1,而 CentOS 7 原生 OpenSSL 版本更早。CPython 源码中的 Misc/rhel7 专门说明了在 RHEL 7 / CentOS 7 上使用 openssl11-devel 的配置方式。该包位于归档的 EPEL 7 中。
先安装 EPEL 7 的仓库描述包,并把软件源固定到归档地址:
sudo yum install -y \
https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm
sudo cp -a /etc/yum.repos.d/epel.repo \
/etc/yum.repos.d/epel.repo.before-archive
sudo tee /etc/yum.repos.d/epel.repo >/dev/null <<'EOF'
[epel]
name=Extra Packages for Enterprise Linux 7 - Archive
baseurl=https://archives.fedoraproject.org/pub/archive/epel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
EOF
sudo yum clean all
sudo yum makecache然后安装编译器、构建工具和 Python 常用标准库所需的开发包:
sudo yum groupinstall -y "Development Tools"
sudo yum install -y \
curl tar xz xz-devel zlib-devel bzip2-devel \
libffi-devel readline-devel sqlite-devel ncurses-devel \
gdbm-devel libuuid-devel pkgconfig openssl11-devel
gcc --version
pkg-config --modversion libssl1110.4 下载并编译 Python 3.12
下面以 Python 3.12.14 为本期固定补丁版本。固定版本能让全班得到一致环境;以后更新补丁版本时,应重新在教师虚拟机中完整验收后再更新课程快照。
cd /tmp
curl -fLO https://www.python.org/ftp/python/3.12.14/Python-3.12.14.tgz
tar -xzf Python-3.12.14.tgz
cd Python-3.12.14先确认 CPython 为 CentOS 7 准备的 OpenSSL 配置能被 pkg-config 识别,再配置构建目录:
PKG_CONFIG_PATH="$PWD/Misc/rhel7" pkg-config --modversion openssl
PKG_CONFIG_PATH="$PWD/Misc/rhel7" ./configure \
--prefix=/opt/python-3.12 \
--with-ensurepip=install编译会持续一段时间,并明显占用 CPU。终端最后若列出无法构建的模块,需要先保留完整输出并补齐依赖;不能只看到 make 返回就认定 Python 完整可用。
make -j "$(nproc)"
./python -V
./python -c "import ssl; print(ssl.OPENSSL_VERSION)"
sudo make altinstall这里使用 altinstall,它会安装带版本号的 python3.12,避免覆盖系统 Python。课程再单独建立 /usr/local/bin/python3 入口:
if [ ! -e /usr/local/bin/python3 ]; then
sudo ln -s /opt/python-3.12/bin/python3.12 /usr/local/bin/python3
fi
hash -r
command -v python3
python3 -V预期 command -v python3 指向 /usr/local/bin/python3,版本为 3.12.14。/usr/bin/python 仍由 CentOS 系统管理,不参与课程项目运行。
10.5 验收 Python 的关键能力
版本号只是第一层证据。W02 会用到 HTTPS、JSON、压缩库、SQLite、虚拟环境和 pip,因此继续验证关键模块:
python3 -c "import ssl, sqlite3, bz2, lzma, ctypes; print(ssl.OPENSSL_VERSION)"
python3 -m pip --version
python3 -m venv /tmp/w02_venv_check
/tmp/w02_venv_check/bin/python -V
/tmp/w02_venv_check/bin/python -m pip --version
git --version通过条件:
python3 为 3.12.14
ssl 能输出 OpenSSL 1.1.1 系列版本
sqlite3、bz2、lzma、ctypes 导入成功
venv 中的 Python 仍为 3.12.14
主环境和 venv 的 pip 均能输出版本
Git 能输出版本10.6 课程环境检查与补验
用于课堂的虚拟机应由教师或机构课前完成以上安装、验证和快照。学生拿到环境后仍要亲自执行:
python3 -V
python3 -m venv --help
git --version任一命令未达到条件时,保存完整输出并标记“Python 项目运行门未通过”。Linux 文件操作和 Git 中仍可执行的部分可以继续;项目运行在恢复教师验收过的快照、重新通过三条命令后再开始。这样能把环境故障与代码故障分开,避免用旧解释器的报错去判断项目代码。
十一、创建环境基线快照
快照保存的是某个时间点的虚拟机状态。环境实验出现问题时,可以回到已知可用状态,而不必重新安装整套系统。

上述环境检查通过后:
- 正常关闭 CentOS;
- 在 VMware 快照管理器创建快照;
- 名称建议 W02-D03-环境基线;
- 描述写明日期、CentOS 版本、Python 版本、Git 版本和 FinalShell 连接状态;
- 启动虚拟机,确认快照后的环境仍可用。
快照用于恢复教学实验环境,不替代学生项目的 Git 提交。
恢复快照会丢弃快照之后的虚拟机状态,因此先把项目代码推送到自己的远端仓库,再在快照管理器中选择明确的恢复点。

十二、Linux 文件实验
mkdir -p ~/w02_linux_lab/inbox
cd ~/w02_linux_lab
pwd
ls -la
touch inbox/orders.txt
printf "O20260827001 待支付 129.00元\nO20260827002 已取消 35.00元\n" > inbox/orders.txt
cat inbox/orders.txt
grep "待支付" inbox/orders.txt | wc -l
cp inbox/orders.txt inbox/orders.bak
mv inbox/orders.bak inbox/orders.backup.txt
pwd
ls -la inbox
rm -i inbox/orders.backup.txt删除前确认 pwd 和 ls,使用明确文件名与 -i。原因是 Linux 命令行删除通常不进入 Windows 回收站,错误目录或通配符会扩大不可恢复范围。
十三、从远端复现项目
mkdir -p ~/projects
cd ~/projects
git clone <学生自己的仓库地址> w02-order-service
cd w02-order-service
git status
git log --oneline --decorate -5
python3 -m venv .venv
source .venv/bin/activate
python -V
python -c "import sys; print(sys.executable)"
python -m pip install -r requirements.txt
python -m pip install -e .
python -c "import order_management; print(order_management.__file__)"
python -m pytest tests/test_models.py tests/test_storage.py -qWindows 和 CentOS 分别创建 .venv。两者的目录结构、可执行文件和基础解释器路径不同,复制 Windows .venv 无法形成可靠的 Linux 环境。
程序运行时,可以用 ps 观察 Linux 中真实存在的进程。ps -ef 列出进程,管道后的 grep 再筛选 Python:

ps -ef | grep '[p]ython'方括号写法仍能匹配 python,同时避免把当前这条 grep python 命令本身列入结果。若项目脚本已经结束,列表为空是正常结果;需要观察长期运行进程时,可以另开一个 FinalShell 标签页执行检查。
十四、故障矩阵
| 现象 | 先取证 | 正确处理路径 |
|---|---|---|
| VMware 提示虚拟化不可用 | Windows 版本、虚拟化状态、VMware 版本 | 按机型与组织策略处理 |
| CentOS 无 IPv4 | NAT、网卡连接、ip addr | 恢复虚拟网卡链路 |
| FinalShell 超时 | 虚拟机状态、IP、sshd | 从 VMware 控制台逐层检查 |
| yum 找不到 mirrorlist | sudo yum repolist 完整输出 | 按 10.1 切换到 CentOS Vault 归档源 |
| openssl11-devel 找不到 | yum repolist、EPEL repo 文件 | 按 10.3 固定 EPEL 7 归档源后重建缓存 |
| python3 命令不存在或版本旧 | python3 -V、command -v python3 | 按第十节完成源码构建,或恢复教师课程快照补齐环境检查 |
| ssl、sqlite3 等模块导入失败 | configure 与 make 尾部输出 | 补齐开发包后重新配置、编译并完成 10.5 验收 |
| venv 模块不可用 | python3 -m venv —help | 保持项目运行门未完成,回到 10.5 检查 Python 构建 |
| git clone 认证失败 | remote URL、账号、完整错误 | 核对仓库所有权与认证方式 |
| Permission denied | whoami、pwd、ls -l | 修正路径、所有者或权限 |
| 模块导入失败 | pwd、find、文件名大小写、解释器路径 | 按路径和环境层定位 |
十五、环境验收表
- VMware 实际版本和虚拟机名称;
- CentOS 版本、内核、用户、主机名和 IPv4;
- FinalShell 连接结果;
- python3 -V 为 3.12.x;
- venv 可用;
- Git 可用;
- 已创建环境基线快照;
- Linux 文件实验完成;
- 从学生自己的远端 clone;
- Linux .venv 创建并激活;
- 跨环境报告真实运行;
- 提交物不包含密码或密钥。
参考资料
- Broadcom:安装 VMware Workstation Pro
- CentOS:CentOS Linux 7 生命周期
- CentOS:CentOS Linux 7 于 2024-06-30 结束生命周期并转入 Vault
- CentOS Vault:CentOS 7.9.2009 ISO 与归档说明
- Red Hat Enterprise Linux 7:OpenSSH 服务
- Git:Linux 安装方式
- Python 3.12:构建要求与 OpenSSL 配置
- CPython 3.12.14:RHEL 7 / CentOS 7 的 pkg-config 配置说明
- Python:Python 3.12.14 官方源码目录
- Fedora Packages:EPEL 7 的 openssl11-devel
- Python 3.12:虚拟环境