Centos自建本地Cetnos及epel更新源

使用本地更新源可以大大减少系统部署中安装更新软件的时间。

平台使用CENTOS7+apahce2.4+RSYNC(本文脚本适合centos6|centos7)

Centos公开的mirrors地址

https://www.centos.org/download/mirrors/

本文使用了“中国科学大学”的rsync源,这个源没在上面地址公开,提供的带宽是250M以上,我在家里200M的光纤可以满速进行同步。

https://mirrors.ustc.edu.cn/status/  服务器状态页

https://mirrors.ustc.edu.cn/              mirrors index

系统我使用了最小安装

1、安装rsync、httpd

# yum install -y rsync httpd bash-completion  psmisc

精简安装没有按tab可以自动补全命令和killall命令

bash-completion的作用是按tab可以自动补全命令

psmisc  killall命令安装包

2、编定同步脚本

我个人喜欢直接放在root用户目录下

#vi /root/bin/mirrors.sh

#!/bin/bash
###结束现有rsync进程
killall `ps aux|grep rsync|awk -F" " '{print $11}'`
echo 结束时间 `date +%F_%H%M%S`                                  >> /tmp/rsync_process.log
echo '###################结  束   时  间 ######################' >> /tmp/rsync_process.log
#http://mirrors.ustc.edu.cn/help/rsync-guide.html
#URL="rsync://mirrors.tuna.tsinghua.edu.cn"
URL="rsync://rsync.mirrors.ustc.edu.cn/repo"
rsync -avzPH --delete                  $URL/centos/ /data/centos/ >> /tmp/rsync_centos.log
rsync -avzPH --delete                  $URL/epel/   /data/epel    >> /tmp/rsync_epel.log
rsync -avzPH --delete                  $URL/ceph/ /data/ceph >> /tmp/rsync_ceph.log
echo 完成时间 `date +%F_%H%M%S`                                  >> /tmp/rsync_process.log
echo '###################完  成   时  间 ######################' >> /tmp/rsync_process.log

执行同步脚本

sh /root/bin/mirrors.sh

我用了两天才完成同步。

3.配置脚本自动执行

 

#crontab -euroot

添加任务

查看己添加任务

[root@mirrors html]# crontab -luroot
#*  *  *  *  *  command
#分 时 日 月 周 命令
#第1列表示分钟1~59 每分钟用*或者 */1表示
#第2列表示小时1~23(0表示0点)
#第3列表示日期1~31
#第4列表示月份1~12
#第5列标识号星期0~6(0表示星期天)
#第6列要运行的命令
#每30分钟执行一次同步
*/30 * * * *  sh /root/bin/mirrors.sh

4、配置apache服务

​
yum install -y httpd \
&& systemctl enable httpd \
&& ln -sf /data/* /var/www/html/ \
&& cd /etc/httpd/conf.d/ \
&& mv welcome.conf welcome.conf.bak \
&& systemctl restart httpd

​

5、关闭防火墙和selinux

#OSVERSION
OSVERSION=`cat /etc/redhat-release |awk -F "release " '{print $2}'|awk -F "." '{print $1}'`
echo $OSVERSION
#selinux

echo -n "正在关闭SELinux……"
setenforce 0 > /dev/null 2>&1
sed -i '/^SELINUX=/s/=.*/=disabled/' /etc/selinux/config
if [ $? -eq 0 ];then
        echo -n "SELinux初始化完毕!"
fi

#iptables

if [ $OSVERSION -eq 6 ];then
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
service iptables save
fi

if [ $OSVERSION -eq 7 ];then
firewall-cmd --permanent --add-port=80/tcp 
firewall-cmd --reload
fi

ie上打开

Centos自建本地Cetnos及epel更新源_第1张图片

 

客户端设置脚本:

[root@mirrors html]# cat /var/www/html/m.sh
cat /etc/hosts|grep 192.168.239.241
if [ $? == 1 ]; then
echo 192.168.239.241 mirror.centos.org    >> /etc/hosts
echo 192.168.239.241 mirrors.fedoraproject.org >> /etc/hosts
fi

yum clean all && yum makecache
#安装epel
yum install -y epel-release

sed -e "s/^metalink=/#metalink=/g" \
        -e "s/^mirrorlist=http/#mirrorlist=http/g" \
        -e "s@^#baseurl=@baseurl=@g" \
        -i /etc/yum.repos.d/*.repo
yum clean all && rm -rf /var/cache/yum/* && yum makecache

客户端配置:

curl 192.168.239.241/m.sh|sh -

 

 

 

 

4、配置网卡

 

我配置了三个IP,172开头的两个用来当路由转发的,其它电脑可以配成这个网段来上网

[root@yum ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
UUID=ed041532-69e7-4676-8882-eb6af659ce42
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.20.237
PREFIX=24
GATEWAY=192.168.20.254
DNS1=192.168.227.239
ZONE=external
[root@yum ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32:1
DEVICE=ens32:1
IPADDR=172.25.0.254
PREFIX=24
ZONE=internal
[root@yum ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32:2
DEVICE=ens32:2
IPADDR=172.25.2.254
PREFIX=24
ZONE=internal

6、防火墙配置

Centos7前的版本用iptable 防火墙设置路由转发 ;Centos7 以后的版本不能使用iptable 防火墙来设置路由器转发,而是得用firewall-cmd 来设置

## 网卡默认是在public的zones内,也是默认zones。永久添加源地址转换功能
# firewall-cmd --add-masquerade --permanent
# firewall-cmd --reload

## 添加网卡的ip转发功能,添加如下配置
# vim /etc/sysctl.conf
----------------------------------------------------------------------------------------------------------
net.ipv4.ip_forward=1
----------------------------------------------------------------------------------------------------------




## 重载网络配置生效

# sysctl -p

 

firewall-cmd --list-all --zone=external
firewall-cmd --change-interface=ens32 --zone=external  --permanent
firewall-cmd --change-interface=ens32:1 --zone=internal --permanent
firewall-cmd --change-interface=ens32:2 --zone=internal --permanent
firewall-cmd --set-default-zone=internal 
firewall-cmd --zone=internal --add-service=dns --add-service=http --permanent 
firewall-cmd --add-service=http --zone=external  --per
firewall-cmd --per --add-port=0-65535/udp   #内部使用我干脆开放所有端口
firewall-cmd --per --add-port=0-65535/tcp    #内部使用我干脆开放所有端口
firewall-cmd --reload 

# firewall-cmd --list-all --zone=external 
external (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens32
  sources: 
  services: ssh http
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


[root@yum ~]# firewall-cmd --list-all --zone=internal 
internal (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens32:1 ens32:2
  sources: 
  services: ssh mdns samba-client dhcpv6-client dns http
  ports: 0-65535/tcp 0-65535/udp
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 

  rich rules: 

 

8、在客户机上测试

# cat /etc/sysconfig/network-scripts/ifcfg-ens32 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPADDR=172.25.0.1
PREFIX=24
GATEWAY=172.25.0.254
DNS1=192.168.227.239
DNS2=114.114.114.114
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens32"
UUID="9ff129a4-88a6-480e-a4e4-80fac7d87f6d"
DEVICE="ens32"

ONBOOT="yes"

#systemctl restart network

试下ping

# ping www.pconline.com.cn

ok.

# curl http://192.168.20.237

........

ok

切换本地源,

 

sed -e "s/^metalink=/#metalink=/g" \
        -e "s/^mirrorlist=http/#mirrorlist=http/g" \
        -e "s@^#baseurl=@baseurl=@g" \
        -e "s@http://mirror.centos.org@http://192.168.20.237@g" \
        -i /etc/yum.repos.d/*.repo

运行以下命令生成缓存

yum clean all
yum makecache

试下飞速升级吧

 

yum update -y

如果要关闭某个yum源,如epel

sed -i "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo

开启就是反过来

sed -i "s/enabled=0/enabled=1/g" /etc/yum.repos.d/epel.repo

 

你可能感兴趣的:(LINUX)