当前位置: 首页 > news >正文

CentOS7.5 编译 Python3.6.8+OpenStack 私有云 API 运维

一、文章简介

1. 适用场景

本文内容完全提取 PPT 内所有标注截图 10-x.jpg 实操步骤,无冗余理论废话,适配职业院校云计算技能大赛私有云运维赛项、高校 Linux+OpenStack 上机实训。赛项核心需求:Controller 节点离线 / 在线编译 Python3.6.8,编写测试脚本、调用 OpenStack 原生 API 完成云资源自动化管理,全部操作可直接截图提交,实训报告、竞赛答题直接套用。

2. 实验环境

  • 操作系统:CentOS 7.5 1804(VMware Workstation NAT 模式)
  • 节点角色:OpenStack all-in-one Controller 控制节点
  • 节点 IP:192.168.1.241
  • 核心任务:网络环境调试→YUM 软件源替换→离线 FTP 传输 Python 源码→源码编译安装 Python3.6.8→全局环境变量配置→Python 进度条测试程序→OpenStack Keystone V3 鉴权 API 开发

3. 文章优势

  1. 严格对应 PPT 每一张截图操作,一步一命令,无遗漏;
  2. 补充每一步操作目的、易错点、踩坑解决方案,实训报告加分项;
  3. 区分在线下载、离线 FTP 两套 Python 安装包获取方案,适配竞赛断网场景;
  4. 区分 Windows 端代码编写、Linux 终端运行两种 Python 脚本开发方式;
  5. 提供 OpenStack 原生 requests 鉴权代码,为创建用户、创建云主机赛题打底;
  6. 格式规范,可直接作为实训报告正文、CSDN 技术博客发布,评分点全覆盖。

二、截图 10-1:配置 ens33 静态网卡(打通虚拟机网络)

操作目的

NAT 模式下配置固定静态 IP,保证虚拟机与物理机互通、可访问外网,是后续下载 Python、FTP 传输文件的基础。

  1. 编辑网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
  1. 完整配置参数
DEVICE=ens33 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes IPADDR=192.168.137.10 PREFIX=24 GATEWAY=192.168.137.1 DNS1=10.91.87.88

易错点说明

  • ONBOOT=yes必须开启,否则重启后网卡不自动启动;
  • BOOTPROTO 设置为 none,禁用 DHCP,固定 IP 避免 IP 变动导致 FTP、OpenStack 访问异常。

三、截图 10-2:配置 DNS 解析文件

操作目的

单独配置 DNS,解决 yum 下载依赖、wget 下载 Python 源码域名解析失败问题。

vi /etc/resolv.conf # 添加DNS服务地址 nameserver 10.91.87.88

补充说明

CentOS7 网卡重启会覆盖 resolv.conf,如需永久生效,可在网卡配置增加 DNS 字段,本次实训临时配置满足需求。

四、截图 10-3:Windows 开启 VMnet8 ICS 网络共享

操作目的

虚拟机 NAT 模式无法直接上网时,通过物理机网卡共享网络,给 CentOS 提供外网访问通道。

  1. 物理机本地网卡右键【属性】→切换至【共享】选项卡;
  2. 勾选「允许其他网络用户通过此计算机的 Internet 连接来连接 (N)」;
  3. 家庭网络连接下拉选择:VMware Network Adapter VMnet8
  4. 点击确定保存 ICS 共享配置。

踩坑提示

共享后 Windows 防火墙会拦截虚拟机流量,后续需关闭 Linux 防火墙,避免网络不通。

五、截图 10-4:核对网卡网关参数

操作目的

确认网关与 VMware 虚拟网卡网段一致,防止跨网段无法访问外网、物理机 FTP。 核心配置字段:GATEWAY=192.168.1.254网关必须与 VMnet8 网段网关匹配,否则 ping 外网全部丢包。

六、截图 10-5:重启网卡并验证外网连通

操作目的

网卡配置生效,测试网络连通性,确认外网可用后再执行后续 YUM、Python 下载操作。

# 重启网络服务加载网卡配置 systemctl restart network # 外网连通测试 ping www.baidu.com

判断标准

持续收到数据包回复,无请求超时,代表网络配置全部完成。

七、截图 10-6:备份系统默认 YUM 源

操作目的

CentOS7.5 官方源已归档,无法正常下载软件包,先备份原有 repo 文件,避免后续出错无法回滚。

# 移动全部默认源文件至/opt目录备份 mv /etc/yum.repos.d/* /opt # 验证备份目录文件 ls /opt # 确认原repo目录已清空 ls /etc/yum.repos.d/

八、替换清华 Vault CentOS7.5 软件源(配套实训流程)

操作目的

官方源失效,使用清华镜像归档源适配 7.5.1804 版本,保证 gcc、编译依赖完整下载。

vi /etc/yum.repos.d/CentOS-Vault.repo

完整源配置:

[C7.5.1804-base] name=CentOS-7.5.1804 - Base baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.5.1804/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled=1 [C7.5.1804-updates] name=CentOS-7.5.1804 - Updates baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.5.1804/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled=1 [C7.5.1804-extras] name=CentOS-7.5.1804 - Extras baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.5.1804/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled=1 [C7.5.1804-centosplus] name=CentOS-7.5.1804 - CentOSPlus baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.5.1804/centosplus/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled=1 [C7.5.1804-fasttrack] name=CentOS-7.5.1804 - fasttrack baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.5.1804/fasttrack/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled=1

刷新缓存:

yum clean all && yum makecache

九、截图 10-7:vsftpd 开启匿名上传配置(离线传 Python 包)

操作目的

竞赛环境断网无法 wget 下载 Python 源码,搭建 FTP 服务,物理机离线上传安装包。

# 安装ftp服务 yum install vsftpd -y # 修改ftp配置文件 vi /etc/vsftpd/vsftpd.conf

删除行首 #注释,开启上传权限:

write_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES

十、截图 10-8:注释 vsftpd 本地用户 umask 配置

操作目的

关闭本地用户权限掩码限制,避免匿名文件上传后权限异常无法解压。 编辑vsftpd.conf,修改:

#local_umask=022

在行首添加 #注释屏蔽该配置。

十一、截图 10-9:授权 FTP 匿名上传目录权限

操作目的

匿名 ftp 用户默认无 pub 目录写入权限,修改归属与权限,支持拖拽上传文件。

# 修改目录归属ftp用户组 chown ftp /var/ftp/pub # 开放全部读写执行权限 chmod 777 /var/ftp/pub # 查看目录权限验证配置生效 ll /var/ftp

易错点

权限不足会出现物理机拖拽文件报错,777 为实训临时方案,生产环境不推荐。

十二、截图 10-10:启动 FTP 服务、关闭防火墙与 SELinux

操作目的

放行 FTP21 端口,关闭安全拦截策略,保证物理机可正常访问ftp://192.168.137.10

# 启动vsftpd服务 systemctl start vsftpd # 临时关闭SELinux(永久关闭需修改配置文件) setenforce 0 # 关闭防火墙放行端口 systemctl stop firewalld

物理机操作

浏览器输入ftp://192.168.137.10,将本地Python-3.6.8.tgz拖拽至 pub 文件夹完成上传。

十三、截图 10-11:解压 Python3.6.8 源码包

操作目的

将 FTP 上传的压缩包转移至编译目录,解压源码用于后续编译安装。

# 创建源码存放目录 mkdir /opt/ph # 复制FTP上传的压缩包到编译目录 cp /var/ftp/pub/* /opt/ph # 进入工作目录解压源码包 cd /opt/ph tar -xzf Python-3.6.8.tgz # 查看解压结果确认文件存在 ls

输出结果:Python-3.6.8 Python-3.6.8.tgz

十四、截图 10-12:安装编译依赖 + 编译 Python3.6.8

操作目的

Python 源码编译需要 gcc 编译器、ssl、zlib 等依赖库,缺失会导致 pip、https 模块失效,无法调用 OpenStack API。

  1. 一键安装全套编译依赖
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y
  1. 编译安装流程
# 创建Python3安装目录 mkdir /usr/local/python3 # 进入解压后的源码目录 cd /opt/ph/Python-3.6.8 # 指定自定义安装路径 ./configure --prefix=/usr/local/python3 # 编译+安装,虚拟机配置低会耗时10分钟以上 make && make install

实训重点

--prefix指定自定义路径,不和系统自带 Python2.7 冲突,是私有云运维标准部署方式。

十五、截图 10-13:配置 Python 全局环境变量

操作目的

任意终端直接输入 python3 即可调用新版本,无需写完整绝对路径。

vi /etc/profile

文件末尾追加两行环境变量配置:

export PYTHON=/usr/local/python3 export PATH=$PYTHON/bin:$PATH

执行命令刷新配置永久生效:

source /etc/profile

原理说明

将 Python3 bin 目录前置到 PATH,系统优先调用新版 Python,不覆盖系统 python2 软链接,不影响 OpenStack 原有服务运行。

十六、Python3 环境验证

操作目的

校验编译、环境变量配置全部生效,确认 Python3 可正常运行。 任意目录执行:

python3

正常输出:

Python 3.6.8 (default,May 6 2024,21:57:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux Type "help","copyright","credits" or "license" for more information >>> exit()

输入 exit () 退出交互模式。

十七、截图 10-14:无中文进度条测试脚本(Linux 兼容版)

操作目的

编写基础 Python 程序,验证语法、循环、time 库、格式化输出功能,规避 Linux 中文编码报错。 文件名:jdt.py

python

import time wz = 56 print("starting download".center(wz-3,"=")) for i in range(1,wz-6+1): jd = i/(wz-6) ks1 = "*"*i js1 = "。"*(wz-6-i) print("\r{:3.0%}[{}{}]".format(jd,ks1,js1),end="") time.sleep(0.1) print() print("download finished".center(wz-3,"="))

开发说明

PPT 支持两种编写工具:Windows PyCharm/Notepad++ 编写后上传,或 Linux vi 直接编写;脚本去除全部汉字,解决 CentOS 默认 ASCII 编码乱码问题。

十八、截图 10-15:执行 Python 测试脚本

操作目的

在 Controller 节点运行脚本,完整验证 Python 运行环境可用。

# 使用vi新建脚本粘贴代码 vi ~/jdt.py # 执行测试程序 python3 jdt.py

运行效果

终端动态刷新百分比进度条,程序结束打印下载完成分割线,代表 Python 环境搭建全部完成。

十九、OpenStack Keystone V3 鉴权 API 代码(实训赛题核心)

操作目的

赛题任务 A 创建用户、任务 B 创建云主机前置鉴权步骤,通过 requests 调用 Keystone 接口获取 Token,后续所有 OpenStack 接口调用都需要该令牌。

python

import json import requests import time try: # Keystone V3认证地址,替换为本地Controller IP url = "http://192.168.1.241:5000/v3/auth/tokens" body = { "auth":{ "identity":{ "methods":["password"], "password":{ "user":{"domain":{"name":"demo"},"name":"admin","password":"000000"} } }, "scope":{"project":{"domain":{"name":"demo"},"name":"admin"}} } } headers = {"Content-Type":"application/json"} resp = requests.post(url,json.dumps(body),headers=headers) Token = resp.headers["X-Subject-Token"] headers = {"X-Auth-Token":Token} print("获取认证Token成功:",Token) except Exception as e: print(f"鉴权失败,错误信息:{str(e)}") exit(0)

赛题拓展说明

拿到 Token 后,可扩展代码调用 Nova、Identity 接口,实现赛题要求:创建用户、查询云主机、删除同名云主机、新建 pvm1 云主机。

三、实训常见问题汇总

  1. Python 编译缺失 ssl/zlib 模块原因:yum 依赖未完整安装;解决方案:重新执行截图 10-12 的 yum 安装命令,所有 devel 包缺一不可。
  2. FTP 无法上传文件原因:未关闭防火墙 / SELinux、pub 目录权限不足;对照截图 10-9、10-10 权限与服务配置修正。
  3. yum 下载软件 404 报错原因:使用 CentOS7 最新源,7.5 版本已归档;解决方案:使用 PPT 内清华 Vault 源。
  4. 运行 Python 脚本中文乱码 / 报错原因:Linux 默认无中文编码;解决方案:脚本全部使用英文(截图 10-14 标准代码)。
  5. OpenStack API 返回 401 无权限原因:domain、project、用户名、密码、5000 端口防火墙拦截;核对鉴权 body 内账号信息,关闭 Linux 防火墙。

四、实训总结

本次实训完整完成 OpenStack Controller 节点 Python3.6.8 离线部署全流程,严格按照 PPT 截图步骤完成网络调试、YUM 源替换、FTP 离线文件传输、源码编译、环境变量配置、Python 程序开发、OpenStack API 鉴权开发。 通过本次实操掌握了 Linux 静态网络配置、YUM 软件源管理、vsftpd 文件传输服务、Python 源码编译部署、RESTful API 调用私有云资源等核心运维技能,理解了企业私有云自动化运维的基础开发环境搭建流程,规避了编译缺失依赖、网络权限、编码、鉴权等典型故障,具备独立完成云计算赛项 Python 自动化运维任务的能力。

http://www.jsqmd.com/news/1152204/

相关文章:

  • Ubuntu 22.04下编译安装wave2Foam与OpenFOAM v2206完整指南
  • 阿里千问智能体下线:数据备份与迁移技术指南
  • 合肥TAVR手术安全性分析与临床实践——合肥高新心血管病医院经导管主动脉瓣置换术(TAVR)按国家标准及安徽省质控规范开展
  • 免费Mermaid实时编辑器:5分钟创建专业图表无需代码基础
  • WIZnet 开源方案分享:W55MH32 开发板 + 小智 AI实现以太网版本的小智机器人
  • 技术深度解析:Topit macOS窗口置顶技术的架构设计与性能优化
  • EasyConnect全平台部署与故障排查手册:Windows/macOS/Linux常见报错速查与解决
  • CPT Markets:从公开信息出发,观察移动端体验与平台稳定性
  • OceanBase 为什么要做 AI 数据库?
  • 2026 Web3 AI 融资地图:基础设施、应用层与中间件赛道的技术趋势分析
  • 2026年纯音乐素材下载网站清单:5个适合个人创作者与低成本项目的网站
  • 测试人必备的用例评审SKILL,采纳率提升至95%以上
  • DeepSeek与Claude的1000轮对抗测试(含越狱攻击、多跳推理、跨文档引用):结果颠覆认知,第876轮开始出现决定性分水岭
  • 为什么PCBA加工必须留工艺边?揭秘3大关键作用!
  • ROS2 Windows安装实战:从环境搭建到跨语言通信
  • Windsurf vs Cursor性能对决:本地代码索引耗时、AI补全准确率、多文件关联推理延迟——实验室级基准测试全公开
  • DM扩散模型_DDPM Denoising Diffusion Probabilistic Model去噪扩散概率模型_DALL模型_Clip模型---AI大模型系统从零开始0034
  • ClaudeAPI 旅游场景提示词模板:行程、攻略、报价和客服答疑
  • 大数据毕设项目:基于 Python 爬虫数据建模的智能书籍推荐系统的设计与实现 基于分布式爬虫的海量图书个性化推荐系统 (源码+文档,讲解、调试运行,定制等)
  • 如何用Photon光影包彻底改变你的Minecraft视觉体验?终极配置指南
  • CPT Markets:聚焦细节,看看风控思路的关键路径
  • 基于multisim的自动光控路灯控制电路设计
  • PHILIPS 4598-001-21121 接口模块
  • 机加工车间设备数据采不上来?SCADA系统选型先看这三点
  • 无犯罪记录证明公证需要哪些材料?慧办好有答案
  • 文生图原理_Latent Diffusion Model 潜扩散模型_LDM扩散模型---AI大模型系统从零开始0035
  • 【大数据课程设计/毕业设计】基于 SpringBoot 大数据开发的养老院运营监测系统的设计与实现 基于数据建模的养老院服务需求预测系统【附源码、数据库、万字文档】
  • 企业采购决策前必读(2024Q3最新版):DeepSeek-R1和Claude-3.5在私有化部署、审计日志、国产信创适配上的不可逆差距
  • 黎平县天明眼科验光靠谱吗第一次选验光诊所该问哪些问题
  • 广州全屋定制怎么选