Linux系统下yum镜像源环境部署记录

简介:

之前介绍了Linux环境下本地yum源配置方法,不过这个是最简单最基础的配置,在yum安装的时候可能有些软件包不够齐全,下面说下完整yun镜像源系统环境部署记录(yum源更新脚本下载地址:https://pan.baidu.com/s/1miMNPgc     提取密码:hq6u):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
1)安装nginx,用于yum镜像源访问配置
[root@yum ~] # yum -y install gcc pcre-devel zlib-devel openssl-devel
[root@yum ~] # cd /data/software
[root@yum software] # wget http://nginx.org/download/nginx-1.12.0.tar.gz
[root@yum software] # tar -zvxf nginx-1.12.0.tar.gz
[root@yum software] # cd nginx-1.12.0
    
添加www用户,其中-M参数表示不添加用户家目录,-s参数表示指定shell类型
[root@yum nginx-1.12.0] # useradd www -M -s /sbin/nologin
[root@yum nginx-1.12.0] # ./configure --prefix=/data/nginx --user=www --group=www --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre
[root@yum nginx-1.12.0] # make && make install
    
2)配置nginx
[root@yum ~] # cat /data/nginx/conf/vhosts/mirrors.conf
server {
     listen 80;
     server_name yum.kevin.com mirrors.kevin.com localhost;
     index index.html index.php index.htm;
    
     access_log   /data/nginx/logs/access .log main;
     error_log   /data/nginx/logs/error .log;
    
     location / {
     root  /data/mirrors ;
     autoindex on;
     autoindex_exact_size  off;       
     autoindex_localtime on;
     }
    
   }
    
[root@yum ~] # /data/nginx/sbin/nginx -t
nginx: the configuration  file  /data/nginx/conf/nginx .conf syntax is ok
nginx: configuration  file  /data/nginx/conf/nginx .conf  test  is successful
[root@yum ~] # /data/nginx/sbin/nginx
[root@yum ~] # lsof -i:80
COMMAND  PID USER   FD   TYPE DEVICE SIZE /OFF  NODE NAME
nginx   7741 root    6u  IPv4  28311      0t0  TCP *:http (LISTEN)
nginx   7769  www    6u  IPv4  28311      0t0  TCP *:http (LISTEN)
nginx   7770  www    6u  IPv4  28311      0t0  TCP *:http (LISTEN)
nginx   7771  www    6u  IPv4  28311      0t0  TCP *:http (LISTEN)
nginx   7772  www    6u  IPv4  28311      0t0  TCP *:http (LISTEN)
nginx   7773  www    6u  IPv4  28311      0t0  TCP *:http (LISTEN)
nginx   7774  www    6u  IPv4  28311      0t0  TCP *:http (LISTEN)
nginx   7775  www    6u  IPv4  28311      0t0  TCP *:http (LISTEN)
nginx   7776  www    6u  IPv4  28311      0t0  TCP *:http (LISTEN)
    
    
3)创建yum源数据目录
[root@yum ~] # mkdir -p /data/mirrors
[root@yum ~] # cd /data/mirrors/
[root@yum mirrors] # mkdir centos  epel  etc  rpmforge
[root@yum mirrors] # ls
centos  epel  etc  rpmforge
    
4)编写yum源下载更新脚本(从mirrors.ustc.edu.cn镜像网站下载和更新)
[root@yum ~] # cat /data/script/mirrors.sh
#!/bin/bash
     
#==========================================
# Program   : /bin/update_yum_source.sh
# Info      : 定期同步官方 yum 源到本地
# Version   : 2017.12.10 v1.0
# author    :kevin
# Usage     : 3 3 * * * /bin/bash /data/script/mirrors.sh
#==========================================
     
Date=` date  +%Y%m%d`
LogFile= "/data/logs/$Date.log"
ReceiveMail= "wangshibo@kevin.com"
     
RsyncBin= "/usr/bin/rsync"
RsyncPerm= "-avrt --delete --exclude=debug/  --exclude=isos/ --exclude=SRPMS/ --exclude=ppc/ --delete-excluded"
     
#============ centos ==============
CentOS_Path= "/data/mirrors/centos"
YumSiteList= "rsync://mirrors.ustc.edu.cn/centos/"
centosparm= "--exclude=2*/ --exclude=3*/ --exclude=4*/ --exclude=5*/"
     
#============ epel ==============
epelSite= "rsync://mirrors.ustc.edu.cn/fedora-epel"
epelLocalPath= "/data/mirrors/epel"
epelparm= "--include=7/x86_64 --include=7Server/x86_64 --include=6/x86_64 --include=6Server/x86_64"
     
#============ rpmforge ==============
rpmforgeSite= "rsync://apt.sw.be/pub/freshrpms/pub/dag/redhat/"
#rpmforgeSite="rsync://apt.sw.be/redhat/"
rpmforgeLocalPath= "/data/mirrors/rpmforge/"
rpmforgeparm= "--exclude=ppc/ --exclude=el2.1/ --exclude=el3/ --exclude=el4/ --exclude=el5/"
     
echo  "---- $Date `date +%T` Begin ----"  >>$LogFile
     
# centos
$RsyncBin $RsyncPerm  $centosparm $YumSiteList $CentOS_Path >> $LogFile
     
# epel
$RsyncBin $RsyncPerm  $epelparm  $epelSite $epelLocalPath >> $LogFile
     
# rpmforge
$RsyncBin $RsyncPerm  $rpmforgeparm $rpmforgeSite $rpmforgeLocalPath >> $LogFile
     
echo   "---- $Date `date +%T` End ----"  >> $LogFile
     
#/bin/mail -s "opt001 - update yum source - $Date" $ReceiveMail<$LogFile
    
    
以上脚本中需要注意的几点:
--exclude   表示 rsync 同步的时候,需要排除的目录(具体表现:同步下来的目录里面为空,大小为0)
--include   表示 rsync 同步的时候,只想同步的目录
    
由于本案例是部署yum源,用于linux服务器上本地yum方案安装,不需要同步isos镜像(同时也可以节省机器空间资源),所以在同步的时候将isos镜像目录屏蔽
    
执行同步脚本。这个过程比较长,大概要下载将近180G的内容。需要耐心等待~~
[root@yum ~] # sh -x /data/script/mirrors.sh
    
[root@yum ~] # du -sh /data/mirrors/*
93G    /data/mirrors/centos
80G    /data/mirrors/epel
4.0K   /data/mirrors/etc
4.0K   /data/mirrors/rpmforge
410M   /data/mirrors/software
    
[root@yum ~] # ls /data/mirrors/centos/
2    3.6  6.0  6.6       7.1.1503   dostools          RPM-GPG-KEY-CentOS-3  RPM-GPG-KEY-CentOS-Debug-6     timestamp.txt
3    3.7  6.1  6.7       7.2.1511   filelist.gz       RPM-GPG-KEY-centos4   RPM-GPG-KEY-CentOS-Debug-7
3.1  3.8  6.2  6.8       7.3.1611   graphics          RPM-GPG-KEY-CentOS-4  RPM-GPG-KEY-CentOS-Security-6
3.3  4    6.3  6.9       7.4.1708   HEADER.html       RPM-GPG-KEY-CentOS-5  RPM-GPG-KEY-CentOS-Testing-6
3.4  5    6.4  7         build      HEADER.images     RPM-GPG-KEY-CentOS-6  RPM-GPG-KEY-CentOS-Testing-7
3.5  6    6.5  7.0.1406  dir_sizes  RPM-GPG-KEY-beta  RPM-GPG-KEY-CentOS-7  TIME
[root@yum ~] # ls /data/mirrors/epel/
4    5Client  7Server                           fullfilelist.KDUVzc9WPK           RPM-GPG-KEY-EPEL-4        RPM-GPG-KEY-EPEL-7Server
4AS  5Server  epel-release-latest-6.noarch.rpm  fullfiletimelist-epel             RPM-GPG-KEY-EPEL-5        testing
4ES  6        epel-release-latest-7.noarch.rpm  fullfiletimelist-epel.WaO7KUHvYz  RPM-GPG-KEY-EPEL-6
4WS  6Server  fullfilelist                      imagelist-epel                    RPM-GPG-KEY-EPEL-6Server
5    7        fullfilelist.AwiES3LjSB           RPM-GPG-KEY-EPEL                  RPM-GPG-KEY-EPEL-7
    
    
5)替换linux本机的yum源地址
[root@yum ~] # cd /etc/yum.repos.d/
[root@yum yum.repos.d] # ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Vault.repo
[root@yum yum.repos.d] # mkdir bak
[root@yum yum.repos.d] # mv *.repo bak/
[root@yum yum.repos.d] # ls
bak
    
编写yum源文件
[root@yum yum.repos.d] # cat CentOS-Base.repo
# CentOS-Base.repo
#
# The mirrors system uses the connecting IP address of the client and the
# update status of each mirrors to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrorss.
#
# If the mirrorslist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
  
[base]
name=CentOS-CentOS-$releasever - Base
#mirrorslist=http://mirrorlist.centos.org/?release=CentOS-$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http: //mirrors .kevin.cn /centos/ $releasever /os/ $basearch/
gpgcheck=1
gpgkey=http: //mirrors .kevin.cn /centos/RPM-GPG-KEY-CentOS- $releasever
  
#released updates
[updates]
name=CentOS-CentOS-$releasever - Updates
#mirrorslist=http://mirrorlist.centos.org/?release=CentOS-$releasever&arch=$basearch&repo=updates&infra=$infra
baseurl=http: //mirrors .kevin.cn /centos/ $releasever /updates/ $basearch/
gpgcheck=1
gpgkey=http: //mirrors .kevin.cn /centos/RPM-GPG-KEY-CentOS- $releasever
  
#additional packages that may be useful
[extras]
name=CentOS-CentOS-$releasever - Extras
#mirrorslist=http://mirrorlist.centos.org/?release=CentOS-$releasever&arch=$basearch&repo=extras&infra=$infra
baseurl=http: //mirrors .kevin.cn /centos/ $releasever /extras/ $basearch/
gpgcheck=1
gpgkey=http: //mirrors .kevin.cn /centos/RPM-GPG-KEY-CentOS- $releasever
  
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-CentOS-$releasever - Plus
#mirrorslist=http://mirrorlist.centos.org/?release=CentOS-$releasever&arch=$basearch&repo=centosplus&infra=$infra
baseurl=http: //mirrors .kevin.cn /centos/ $releasever /centosplus/ $basearch/
gpgcheck=1
enabled=0
gpgkey=http: //mirrors .kevin.cn /centos/RPM-GPG-KEY-CentOS- $releasever
  
#contrib - packages by Centos Users
[contrib]
name=CentOS-CentOS-$releasever - Contrib
#mirrorslist=http://mirrorlist.centos.org/?release=CentOS-$releasever&arch=$basearch&repo=contrib&infra=$infra
baseurl=http: //mirrors .kevin.cn /centos/ $releasever /contrib/ $basearch/
gpgcheck=1
enabled=0
gpgkey=http: //mirrors .kevin.cn /centos/RPM-GPG-KEY-CentOS- $releasever
  
    
[root@yum yum.repos.d] # cat epel.repo
[epel]
name=Extra Packages  for  Enterprise Linux $releasever - $basearch
baseurl=http: //mirrors .kevin.cn /epel/ $releasever/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=http: //mirrors .kevin.cn /epel/RPM-GPG-KEY-EPEL- $releasever
   
[epel-debuginfo]
name=Extra Packages  for  Enterprise Linux 6 - $basearch - Debug
baseurl=http: //mirrors .kevin.cn /epel/ $releasever/$basearch /debug
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=http: //mirrors .kevin.cn /epel/RPM-GPG-KEY-EPEL- $releasever
gpgcheck=1
   
[epel- source ]
name=Extra Packages  for  Enterprise Linux 6 - $basearch - Source
baseurl=http: //mirrors .kevin.cn /epel/ $releasever /SRPMS
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=http: //mirrors .kevin.cn /epel/RPM-GPG-KEY-EPEL- $releasever
gpgcheck=1
    
    
[root@yum yum.repos.d] # yum clean all
[root@yum yum.repos.d] # yum makecache
    
    
其他服务器要是想用本yum源,就按照上面操作,将 /etc/yum .repos.d目录下的repo文件都移除,然后将上面编写的两个文件放进去,执行yum clean all和yum makecache即可!
    
============================================================================
温馨提示:以上的yum源配置及两个yum文件在centos6和centos7系统下都适用!已经验证!!
    
============================================================================
更新以上yum源的脚本:
可以将上面两个文件放到http: //mirrors .kevin.com /software 里面,用于脚本中下载
[root@yum ~] # cd /data/mirrors/software/
[root@yum software] # ls
yum_reset.sh        CentOS-Base.repo            epel.repo                   
    
[root@yum software] # cat yum_reset.sh
#!/bin/bash
cd  /etc/yum .repos.d/
/bin/mkdir  /etc/yum .repos.d /bak
mv  /etc/yum .repos.d/*.repo  /etc/yum .repos.d /bak
wget http: //mirrors .kevin.com /software/CentOS-Base .repo
wget http: //mirrors .kevin.com /software/epel .repo
/usr/bin/yum  clean all
/usr/bin/yum  makecache
    
    
只需要将上面的yum_reset.sh脚本下载到目标服务器上,然后执行,就可以将目标服务器的yum源更新了。
# wget http://mirrors.kevin.com/software/yum_reset.sh
# sh -x yum_reset.sh

  可以定期更新以上的yum源同步脚本(mirros.sh),比如每月更新一次

1
2
3
[root@yum ~] # crontab -e
#每个月1号的23:00点同步一次yum源
0 23 1 * *  /bin/bash  -x  /data/script/mirrors .sh >  /dev/null  2>&1

***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************
本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/8038944.html,如需转载请自行联系原作者
相关文章
|
4天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
28 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
27天前
|
缓存 Java Linux
如何解决 Linux 系统中内存使用量耗尽的问题?
如何解决 Linux 系统中内存使用量耗尽的问题?
115 48
|
17小时前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
78 62
|
1天前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
10 0
|
24天前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
17 3
|
29天前
|
存储 运维 Linux
如何在 Linux 系统中使用 envsubst 命令替换环境变量?
`envsubst` 是 Linux 系统中用于替换文本中环境变量值的实用工具。本文分三部分介绍其工作原理、使用方法及实际应用,包括配置文件替换、脚本执行中环境变量替换和动态生成文件等场景,帮助用户高效利用 `envsubst` 进行开发和运维工作。
49 4
|
27天前
|
Linux
在 Linux 系统中,`find` 命令
在 Linux 系统中,`find` 命令
29 1
|
27天前
|
网络协议 Linux 虚拟化
如何在 Linux 系统中查看进程的详细信息?
如何在 Linux 系统中查看进程的详细信息?
56 1
|
27天前
|
Linux
如何在 Linux 系统中查看进程占用的内存?
如何在 Linux 系统中查看进程占用的内存?
|
12天前
|
存储 Oracle 安全
服务器数据恢复—LINUX系统删除/格式化的数据恢复流程
Linux操作系统是世界上流行的操作系统之一,被广泛用于服务器、个人电脑、移动设备和嵌入式系统。Linux系统下数据被误删除或者误格式化的问题非常普遍。下面北亚企安数据恢复工程师简单聊一下基于linux的文件系统(EXT2/EXT3/EXT4/Reiserfs/Xfs) 下删除或者格式化的数据恢复流程和可行性。