CentOS 7 离线安装软件(一)-- 操作系统
🌥在生产环境中,服务器因安全限制不可接入互联网。在这种环境下,想要安装软件,就需要提前将离线安装包及其依赖包下载下来,然后复制到服务器上执行安装。CentOS操作系统份额很高,这里做一下笔记,记录在CentOS7上离线安装的操作步骤,为今后积累经验。
- CentOS 7 离线安装软件(一)– 操作系统(本篇)
- CentOS 7 离线安装软件(二)– 安装方式
- CentOS 7 离线安装软件(三)– 关系数据库
- CentOS 7 离线安装软件(四)– 消息队列
- CentOS 7 离线安装软件(五)– 应用容器引擎
下载地址
进入
官方网站
后,点击顶部导航菜单栏的Download
后,显示页面如下:
点击x86_64
链接即进入可下载的镜像站点列表页面:
随便选一个(当然不是随便啦,哪个页面打开速度快就选哪个😉),至于选哪个版本下载,先别急,往下看。
注:之前的文章 《开源软件镜像站点列表》 就是以此列表为基础整理的。
版本选择
在官网的
安装指南下载页面
,列出了三个版本的说明,实际上在镜像站下载时可以看到第四个版本NetInstall
。以下为各个版本的区别:
- DVD ISO: 此映像包含安装程序以及一组可在交互式安装期间安装的所有包。这是大多数用户的推荐下载。
- Everything ISO: 包含
CentOS
可用的安装程序和所有包。此ISO
映像可用于安装带有额外软件包的系统(使用Kickstart
文件并在%packages
部分中指定额外软件包);它还可以用于为下载包设置本地镜像。注意,这个映像非常大,需要至少 16GB 的闪存驱动器或其他存储空间。 - Minimal ISO: 包含安装程序和一组最小包,可用于安装非常基本的
CentOS
系统。然后可以使用Yum
从更新存储库下载其他包。 - NetInstall ISO: 顾名思义,就是通过网络安装,是这四者中最小的安装包。
根据以上列出的区别,再结合实际情况,一般服务器选择安装的版本可能是首选DVD ISO,其次Minimal ISO。为了照顾自己喜欢用最新软件包的习惯,就选择下载Minimal ISO版本吧😜。
在镜像站点的下载页面,始终只能下载最新的版本 7.9 系列。实际上,客户的服务器根本达不到这个版本。没办法,既然是离线安装,那么只能尽可能选择可下载的最低版本7.9(2009)
了😢,也就是CentOS-7-x86_64-Minimal-2009.iso
。
当然,为了安全起见,校验一下下载的文件。
Linux
可以使用sha256sum
,Windows
可以在Git Bash
中使用sha256sum.exe
。
安装环境
为了方便,当然首选在虚拟机
中安装。手头现有的环境如下:
- 操作系统:Windows 10 专业版 64 位 22H2
- 处理器:Intel(R) Core(TM) i7-6770HQ CPU @ 2.60GHz (4C8T)
- 内存:32 GB
- 虚拟机:Hyper-V
安装步骤
在Hyper-V 管理器
界面中,虽然可以使用类似于远程桌面的形式操作虚拟机,但是还是没有自己常用SSH
工具界面好看、顺手。所以,我对虚拟机的网络有如下要求:
- 可以通过宿主机
SSH
工具(如MobaXterm
)连接到具有固定 IP 地址的虚拟机; - 虚拟机可以连接互联网,用于执行
yum
命令安装软件;
通过百度,在网上找到类似需求的经验分享 《关于Hyper-V网络设置经验总结(Default Switch/固定IP/SSH)》 ,按照其中的方法完成虚拟机网络和虚拟机两个网卡的设置。
创建新的虚拟网络交换机
- 名称:
Internal LAN
- 类型:
内部
为新建的虚拟网络交换机指定固定 IP 地址
任务栏上的网络图标右键 -> 点击打开“网络和 Internet”设置
-> 在弹出的状态
窗口中点击更改适配器选项
-> 在弹出的网络连接
窗口中即可看到新的网络图标vEthernet(Internal LAN)
-> 在其上右键打开其属性窗口如下进行设置。
- 地址:
192.168.xxx.1
(网段xxx
自己随意定,不要与已有的有线或无线网络重复就行) - 掩码:
255.255.255.0
创建自己所需的虚拟机
- 指定名称:输入有意义的简短名称,如
CentOS7
- 指定位置:默认的虚拟机存贮位置即可,可自定义
- 指定代数:为了兼容性,选择默认的
第一代
- 分配内存:根据自己的需要定即可,保持
动态内存
选项的默认勾选 - 配置网络:选择连接到默认的
Default Switch
- 连接虚拟硬盘:默认的创建虚拟硬盘即可
- 安装选项:注意选择以后安装操作系统,这样做的目的是还需要额外的配置
- 完成配置:点击
完成
按钮保存配置
设置虚拟机
虚拟机列表 -> 右键虚拟机 -> 点击设置...
- 添加第二块网卡:左侧点击
添加硬件
-> 右侧选择网络适配器
-> 点击添加
按钮 -> 选择连接到Internal LAN
-> 点击右下方应用
按钮保存设置 - 配置启动选项:左侧点击选中IDE 控制器 1下的
DVD 驱动器
-> 右侧指定映像文件选择之前下载好的 ISO 文件 -> 点击右下方保存
按钮保存设置并关闭设置窗口
最终设置截图如下:
正式安装
- 右键虚拟机点击
连接...
菜单项进入虚拟机连接界面 - 点击
启动
按钮根据屏幕提示按个人喜好完成操作系统安装
在虚拟机内配置两块网卡的参数
- 第一块:编辑配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
...... BOOTPROTO=dhcp # 改为 dhcp,动态获取 IP ONBOOT=yes # 改为 yes,启用该网卡
- 第二块:编辑配置文件
/etc/sysconfig/network-scripts/ifcfg-eth1
...... BOOTPROTO=static # 改为 static,静态固定 IP ONBOOT=yes # 改为 yes,启用该网卡 IPADDR=192.168.xxx.2 # 与新建的虚拟交换机 Internal LAN 的网段相同,且 IP 不重复 NETMASK=255.255.255.0 # 同上 #GATEWAY=192.168.xxx.2 # 不需要设置
应用网卡参数
- 重启网络服务
systemctl stop network systemctl start network
- 或者重启虚拟机
reboot
这样,后续的离线安装工作就可以通过
SSH
工具连接到虚拟机(IP 地址为192.168.xxx.2
,称之为内网)进行。可以根据需要先启用连接默认交换机Default Switch
的网卡eth0(连接互联网,称之为外网),完成软件离线安装所需依赖包的下载,然后再禁用该网卡,模拟内网离线安装,验证这些额外下载的依赖包在未连互联网的环境下的可用性。
“踩坑”记录
为了后续的操作,必须保证操作系统做好以下两点准备工作:
- 可通过
SSH
工具连接到内网的虚拟机 - 为加速外网的依赖包下载速度,需要将
yum 源
切换为国内源
SSH 连不上
确定配置后的两张网卡工作正常:
在多次操作(启停)虚拟机的过程中,发现偶尔出现虚拟机中的内网出现异常,即无法获取到 IP 地址。简单粗暴的方法是reboot,如果还不行,那就关闭虚拟机,禁用再启用Hyper-V 默认的虚拟交换机vEthernet(Default Switch)
,再次启动虚拟机后就可以看到能够获取到 IP 地址了。
💣遇到的第一个问题:使用SSH
工具连不上虚拟机!
我下载的这个版本,SSH
服务和firewall
防火墙服务是默认启用的,执行以下命令发现系统没有开放SSH
服务所用的默认端口22:
firewall-cmd --state
firewall-cmd --zone=public --query-port=22/tcp
难怪啊!😢 那就添加、重新载入,开放这个端口:
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --query-port=22/tcp
OK!再次连接,搞定!
yum 源切换
其实,不切换的使用官方默认源的话,也可以进行后续的操作,只是可能会出现下载慢,等待时间长。所以,为了加快后续进度,还是切换为国内源。
💣遇到的第二个问题:选择哪个国内源以及如何切换?
既然是切换,肯定要备份现有的:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
网上搜索了一番,经研究后选择三个有代表性的国内源:
- 网易: https://mirrors.163.com CentOS 使用帮助,按说明下载指定 repo 文件:
- 中科大: https://mirrors.ustc.edu.cn CentOS 使用帮助,按说明修改虚拟机中的 repo 文件:
- 阿里云: https://mirrors.aliyun.com/repo ,镜像站首页没找到入口,百度搜索得到这个地址,直接下载对应的 repo 文件:
至于用哪个,看自己的喜好了!😄
常用命令
# 查看 netstat 是由 net-tools 包提供的功能
yum provides "*/netstat"
# 如果已安装了 netstat,那么可通过以下命令快速查找
rpm -qf `which netstat`
# 查看包的依赖包
yum deplist xxx
# 查看已安装包的依赖关系
rpm -qR xxx
# 查看未安装包的依赖关系
rpm -qpR xxx
# 将安装包及其依赖包下载到指定目录,但不执行安装
yum install xxx --downloadonly --downloaddir=./rmps
# 安装本地的包及其依赖包
yum localinstall ./rpms/*.rpm
# 安装指定目录下所有 rpm 包
# -i, --install: 安装软件包
# -v, --verbose: 提供更多的详细信息输出
# -h, --hash: 软件包安装的时候列出哈希标记
rpm -ivh ./rpms/*.rpm
# 更新指定目录下所有 rpm 包
# -U, --upgrade: 升级软件包
rpm -Uvh ./rpms/*.rpm