Why?:
- 最小化安装系统后,需要安装一些常用软件,比如vim、net-tools等。因为处于内网环境,但内网环境没有yum源,只需要快速的解决此问题即可
- 在内网中有很多服务器(系统版本不一致)都需要使用基础yum源进行软件的安装
- 在内网中有很多服务器(系统版本不一致)需要使用到epel的yum源
针对如上问题大致可以有几种解决方案:
- 配置本地yum源
- 配置内网多版本base yum源
- 配置内网epel yum源
tips:base源只能给同一版本的系统使用,epel源可以给同一大版本的系统使用。
配置yum源
配置本地yum源
# 查看版本,根据不同版本选择不同镜像上传至服务器
[root@test1 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@test1 ~]# ls CentOS-7-x86_64-Everything-2009.iso
CentOS-7-x86_64-Everything-2009.iso
# 创建yum源镜像文件存放路径
[root@test1 ~]# mkdir /mnt/centos7.9
# 将iso文件挂载到目录,此时可以通过将挂载后的目录拷贝出来、相当于解压iso镜像使用、也可以根据情况选择是否进行开机启动挂载,方便后续使用
[root@test1 ~]# mount -o loop -t iso9660 CentOS-7-x86_64-Everything-2009.iso /mnt/centos7.9
# 配置yum文件
[root@test1 yum.repos.d]# cd /etc/yum.repos.d && mkdir /etc/yum.repos.d/back && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/back
[root@test1 yum.repos.d]# cat > base.repo <<EOF
> [base]
> name=Centos-7.9
> baseurl=file:///mnt/centos7.9
> enabled=1
> gpgcheck=0
> EOF
[root@test1 yum.repos.d]# yum clean all
Loaded plugins: fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Cleaning repos: base
Cleaning up list of fastest mirrors
Other repos take up 354 M of disk space (use --verbose for details)
[root@test1 yum.repos.d]# yum makecache
Loaded plugins: fastestmirror
Determining fastest mirrors
base | 3.6 kB 00:00:00
(1/4): base/group_gz | 153 kB 00:00:00
(2/4): base/primary_db | 6.1 MB 00:00:00
(3/4): base/filelists_db | 7.2 MB 00:00:00
(4/4): base/other_db | 2.6 MB 00:00:00
Metadata Cache Created
[root@test1 yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
base Centos-7.9 10,072
repolist: 10,072
配置内网多版本的base yum源
- 将各个需要的操作系统版本镜像文件通过上面的方式解压并拷贝出来保存在一个统一路径中
- 通过nginx、apache等方式提供网络访问方式
- 在不同的客户端上选择不同的版本进行yum源使用
服务端操作
# 准备不同版本的镜像、操作方式不再重复
[root@test1 yum]# pwd
/opt/yum
[root@test1 yum]# ll
total 0
drwxr-xr-x 8 root root 254 May 6 16:16 centos7.5
drwxr-xr-x 8 root root 254 May 6 16:07 centos7.9
# 安装nginx(需要解决内网环境安装的问题,此处实验环境有epel源,直接安装)
[root@test1 home]# yum install nginx -y
# 配置nginx,修改如下配置
server {
listen 80;
root /opt/yum;
location / {
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
# 重启nginx
systemctl restart nginx
客户端配置yum源测试
[root@test2 yum.repos.d]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@test2 yum.repos.d]# cat > base.repo <<EOF
> [base]
> name=Centos-7.9
> baseurl=http://192.168.199.101/centos7.9
> enabled=1
> gpgcheck=0
> EOF
[root@test2 yum.repos.d]# yum clean all && yum makecache
[root@test2 yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
base Centos-7.9 10,072
repolist: 10,072
配置内网epel yum源
在此前的基础上我们将epel的源拉到本地,然后在通过nginx提供给客户端,即可实现内网epel yum源
将epel yum源拉到本地,需要使用到如下工具(两个包都在base源中):
- reposync:可以阿里云等外网的epel源同步到本地,需安装yum-utils包。
- createrepo:用以创建yum源,生成元数据等,需安装createrepo包。
服务端
# 安装yum-utils工具
[root@test1 yum]# yum install yum-utils -y
# 同步epel源的包到本地,需要先配置阿里云的epel源,注意磁盘空间,测试时空间占用已经达到:
# centos7 epel 未压缩:17G
# centos7 epel 压缩:没啥差距
[root@test1 yum]# reposync -r epel -p /opt/yum
[root@test1 ~]# mv /opt/yum/epel /opt/yum/epel-centos7
[root@test1 ~]# createrepo -v /opt/yum/epel-centos7
客户端
# 添加epel源
cat > epel.repo <<EOF
[epel]
name=epel-Centos7
baseurl=http://192.168.199.101/epel-centos7
enabled=1
gpgcheck=0
EOF
[root@test2 yum.repos.d]# yum clean all && yum makecache
[root@test2 yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
base Centos-7.9 10,072
epel epel-Centos7 13,755
repolist: 23,827
总结
在日常工作可以参考:
- 常备不同版本的epel yum源文件在本地,将其打包压缩存放
- 将epel源文件和base iso传至服务端
- 在服务端挂载本地base源和本地base源,那么服务端的yum环境即可解决
- 服务端安装nginx并修改配置
- 将不同版本的base源和epel源通过nginx暴露出去
- 客户端挂载对应版本的base源和epel源即可完成内网环境的yum配置