内网环境下离线安装软件的完美解决方案(以MySQL为例)
文章目录
- 前言
- 一、内网环境软件安装的困境与解决方案概述
- 1.1 问题背景
- 1.2 常用解决方案
- 二、RPM包离线安装方法(以MySQL为例)
- 2.1 准备工作
- 2.1.1 确认系统版本和架构
- 2.1.2 准备一台联网的同版本系统机器
- 2.2 在联网机器上下载MySQL及依赖
- 2.2.1 安装必要工具
- 2.2.2 下载MySQL及所有依赖包
- 2.3 传输RPM包到内网机器
- 2.4 在内网机器上安装MySQL
- 2.4.1 安装本地RPM包
- 2.4.2 初始化MySQL
- 2.4.3 修改mysql配置文件(降低密码复杂性)
- 2.4.4 修改简单密码(根据需求)
- 2.4.5 启动并设置开机自启
- 2.5 RPM包离线安装通用流程
- 2.5.1 联网机器操作步骤
- 2.5.1.1 确认目标软件名称
- 2.5.1.2 下载软件及所有依赖
- 2.5.1.3 打包并传输
- 2.5.2 内网机器操作步骤
- 三、本地YUM仓库配置方法
- 3.1 准备工作
- 3.2 安装createrepo工具并创建仓库
- 3.3 配置Apache服务
- 3.4 创建仓库目录并复制RPM包
- 3.5 配置客户端yum源
- 3.6 验证本地仓库
- 3.7 维护本地仓库
- 四、其他离线安装方法
- 4.1 使用ISO镜像作为本地源
- 4.2 源码编译安装
- 总结
- 各种方法的优缺点比较
- 适用场景建议
前言
在企业级内网环境中,服务器通常出于安全考虑会限制互联网访问,这给软件安装带来了不小的挑战。特别是当我们需要安装像MySQL这样依赖众多的软件时,无法直接使用yum命令从官方仓库获取安装包和依赖,往往会让运维工作变得十分棘手。
本文将以MySQL安装为例,详细介绍几种在内网环境下实现软件离线安装的方法,包括RPM包离线安装、本地YUM仓库配置等,并总结通用的操作流程,帮助大家轻松应对内网环境下的软件安装难题。
一、内网环境软件安装的困境与解决方案概述
1.1 问题背景
在无法连接互联网的内网环境中,传统的yum安装方式会失效,主要面临以下问题:
- 无法直接从远程仓库获取安装包
- 软件依赖关系复杂,手动解决难度大
- 编译安装耗时且容易出错
- 多台机器重复安装时效率低下
1.2 常用解决方案
针对内网环境的特点,常用的解决方案有以下几种:
- RPM包离线安装:在联网机器下载所需包及依赖,拷贝至内网安装\
- 本地YUM仓库:在内网搭建本地仓库,集中管理安装包
- ISO镜像源:利用系统ISO镜像作为基础软件源
- 源码编译:适用于特殊需求或无预编译包的情况
二、RPM包离线安装方法(以MySQL为例)
这种方法适用于安装单个或少量软件,步骤简单直接,无需复杂配置。
2.1 准备工作
2.1.1 确认系统版本和架构
在内网目标机器上执行以下命令,记录系统版本和架构信息:
# 查看系统版本
cat /etc/redhat-release # 示例输出:CentOS Linux
# 查看系统架构
uname -m # 示例输出:x86_64(主流架构,32位为i686,需对应下载)
2.1.2 准备一台联网的同版本系统机器
确保该机器与内网目标机器具有相同的操作系统版本和架构,以保证下载的RPM包兼容。
2.2 在联网机器上下载MySQL及依赖
2.2.1 安装必要工具
# 安装yum-utils,提供yumdownloader工具
sudo yum install -y yum-utils
2.2.2 下载MySQL及所有依赖包
# 下载 MySQL 5.7 的 YUM 仓库配置包
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
安装 repo 配置包(让 yum 能识别 MySQL 5.7 仓库)
sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm
默认情况下,MySQL YUM 源可能优先启用 8.0 版本,需手动切换到 5.7
编辑仓库配置文件,启用 5.7、禁用 8.0
# 启用MySQL 5.7仓库(如需其他版本可修改)
sudo vim /etc/yum.repos.d/mysql-community.repo
找到 [mysql57-community] 段落:将 enabled=0 改为 enabled=1
找到 [mysql80-community] 段落:将 enabled=1 改为 enabled=0
# 下载MySQL服务器及所有依赖包(不安装)
mkdir -p /tmp/mysql5720_rpms # 目录可自定义
# 用 yumdownloader 下载(--resolve 自动下载依赖,--destdir 指定保存目录)
yumdownloader --resolve --destdir=/tmp/mysql5720_rpms mysql-community-server-5.7.20
2.3 传输RPM包到内网机器
将下载好的所有RPM包打包并传输到内网机器:
# 在联网机器上打包
cd /tmp
tar -czvf mysql_rpms.tar.gz mysql_rpms/# 通过U盘、内网传输工具等方式将mysql_rpms.tar.gz拷贝到内网机器
2.4 在内网机器上安装MySQL
2.4.1 安装本地RPM包
# 解压RPM包
tar -xzvf mysql_rpms.tar.gz
# 切换到存放所有 MySQL 及依赖 RPM 包的文件夹
cd mysql5720_rpms# yum 会自动识别当前目录下所有 .rpm 文件,并处理依赖关系(若本地包已包含所有依赖,会直接安装;若缺依赖会提示)
yum localinstall -y *.rpm
2.4.2 初始化MySQL
# 启动MySQL服务
sudo systemctl start mysqld# 修改初始密码
mysql -uroot -p$(grep "password" /var/log/mysqld.log | awk '{print $NF}') --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@123';"
2.4.3 修改mysql配置文件(降低密码复杂性)
# 修改配置文件
vim /etc/my.cnf
[mysqld]
# 其他原有配置(如datadir、socket等)保持不变,新增以下两行
validate_password_policy=LOW # 降低强度策略(仅检查长度)
validate_password_length=6 # 最小密码长度设为6位
# 修改错误日志名称(指定日志文件路径,路径可自定义,建议放/var/log下,默认已开启)
log_error = /var/log/mysql/mysql_error.log
# 开启慢查询日志
slow_query_log = ON # 开启慢查询日志
slow_query_log_file = /var/log/mysql/mysql_slow.log # 日志文件路径
long_query_time = 2 # 超过多少秒认为是慢查询(默认 10s)
log_queries_not_using_indexes = ON # 可选:记录未使用索引的查询
# 创建日志目录
sudo mkdir -p /var/log/mysql# 设置目录所有者为mysql用户
sudo chown -R mysql:mysql /var/log/mysql# 重启mysqld
systemctl restart mysqld
2.4.4 修改简单密码(根据需求)
mysql -uroot -pAdmin@123 -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';"# 赋权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';FLUSH PRIVILEGES;
2.4.5 启动并设置开机自启
# 设置开机自启
sudo systemctl enable mysqld# 查看服务状态
sudo systemctl status mysqld
2.5 RPM包离线安装通用流程
上述MySQL安装方法可以推广到其他软件,以下是通用流程:
2.5.1 联网机器操作步骤
2.5.1.1 确认目标软件名称
明确需要安装的软件包名称,例如httpd、nginx等。
2.5.1.2 下载软件及所有依赖
# 安装yum-utils,提供yumdownloader工具
sudo yum install -y yum-utils# 创建存放目录
mkdir -p /tmp/offline_pkgs
cd /tmp/offline_pkgs# 下载软件及依赖(以httpd为例)
sudo yumdownloader --resolve --destdir=/tmp/offline_pkgs httpd
2.5.1.3 打包并传输
# 打包
tar -czvf offline_pkgs.tar.gz offline_pkgs/# 传输到内网机器
2.5.2 内网机器操作步骤
# 解压
tar -xzvf offline_pkgs.tar.gz
cd offline_pkgs# 使用yum localinstall(推荐,处理依赖更智能)
sudo yum localinstall -y *.rpm
三、本地YUM仓库配置方法
对于需要在多台内网机器上安装软件的场景,配置本地YUM仓库是更高效的方案。
3.1 准备工作
- 一台作为仓库服务器的内网机器(建议配置固定IP)
- 关闭防火墙和增强功能(或者开放端口)
- 已下载好的各类软件RPM包
3.2 安装createrepo工具并创建仓库
# 如果仓库服务器可以联网,直接安装
sudo yum install -y createrepo httpd# 如果仓库服务器也无法联网,需先离线安装createrepo和httpd
3.3 配置Apache服务
# 启动Apache服务
sudo systemctl start httpd
sudo systemctl enable httpd
3.4 创建仓库目录并复制RPM包
# 在仓库服务器上创建目录
sudo mkdir -p /var/www/html/yumrepo/{Packages,repodata}# 将所有RPM包复制到Packages目录
sudo cp /path/to/downloaded/rpms/* /var/www/html/yumrepo/Packages/# 创建仓库索引
sudo createrepo /var/www/html/yumrepo/
3.5 配置客户端yum源
在需要安装软件的内网机器上,创建repo文件:
sudo vi /etc/yum.repos.d/local.repo
添加以下内容:
[local-repo]
name=Local YUM Repository
baseurl=http://仓库服务器IP/yumrepo/
enabled=1
gpgcheck=0
3.6 验证本地仓库
# 清除yum缓存
sudo yum clean all
sudo yum makecache# 列出可用仓库
yum repolist# 测试安装
sudo yum install -y mysql-community-server
3.7 维护本地仓库
当有新的RPM包添加到仓库时,需要更新仓库索引:
sudo createrepo --update /var/www/html/yumrepo/
四、其他离线安装方法
4.1 使用ISO镜像作为本地源
适用于需要安装系统自带软件的场景:
# 挂载ISO镜像
sudo mount -o loop /path/to/CentOS-7-x86_64-DVD-2009.iso /mnt
# 例如
# 直接挂载光盘设备(虚拟机光驱)
sudo mount /dev/cdrom /mnt# 创建repo文件
sudo vi /etc/yum.repos.d/local.repo
添加以下内容:
[local] #仓库类别
name=local #仓库名称
baseurl=file:///mnt #指定URL 访问路径为光盘挂载目录
enabled=1 #开启此yum源,此为默认项,可省略
gpgcheck=0 #不验证软件包的签名#删除yum缓存并更新
yum clean all && yum makecache
如果需要永久挂载,可以将挂载信息添加到/etc/fstab文件中,例如:
对于 ISO 文件:
/path/to/CentOS-7-x86_64-DVD-2009.iso /mnt iso9660 loop 0 0
对于物理光盘:
dev/cdrom /mnt iso9660 defaults 0 0
4.2 源码编译安装
当没有合适的RPM包时,可以使用源码编译:
# 解压源码包
tar -zxvf software.tar.gz
cd software# 配置
./configure --prefix=/usr/local/software# 编译
make# 安装
make install
总结
各种方法的优缺点比较
方法 | 优点 | 缺点 |
---|---|---|
RPM包离线安装 | 操作简单,无需配置 | 依赖处理复杂,不适合多机环境 |
本地YUM仓库 | 依赖自动处理,适合多机环境 | 需额外服务器,配置稍复杂 |
ISO镜像源 | 系统软件安装方便,官方认证 | 软件版本可能较旧,种类有限 |
源码编译 | 可定制性强,版本灵活 | 编译耗时,依赖需手动解决 |
适用场景建议
- 单台机器安装少量软件:优先选择RPM包离线安装
- 多台机器需要安装多种软件:推荐配置本地YUM仓库
- 需要安装系统自带基础软件:可考虑ISO镜像源
- 特殊版本需求或无预编译包:只能选择源码编译
通过本文介绍的方法,相信大家能够轻松应对内网环境下的软件安装挑战。选择适合自己场景的方法,可以极大提高工作效率,减少不必要的麻烦。在实际操作中,还需要根据具体环境和需求进行灵活调整,不断积累经验,才能更好地解决内网环境下的各种技术难题。