CentOS7搭建本地YUM倉庫,並定期同步阿里雲源
cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
uname -r
3.10.0-957.el7.x86_64
ip a |awk 'NR==9{print $2}'|awk -F '/' '{print $1}'
10.0.0.100
備份系統自帶的yum源
tar -zcvf CentOS-bk.tar.gz /etc/yum.repos.d/CentOS-*
修改yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
檢驗阿里雲源是否正常
yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
-
base: mirrors.aliyun.com
-
extras: mirrors.aliyun.com
-
updates: mirrors.aliyun.com
倉庫標識倉庫名稱狀態
repo id reponame status
!base/7/x86_64 CentOS-Base-mirrors.aliyun.com 10,019
!epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 12,902
!extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 371
!updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 1,103
repolist: 24,395
yum install -y wget make cmake gcc gcc-c++ pcre-devel zlib-devel openssl openssl-devel createrepo yum-utils
yum-utils:reposync同步工具
createrepo:編輯yum庫工具
plugin-priorities:控制yum源更新優先順序工具,這個工具可以用來控制進行yum源檢索的先後順序,建議可以用在client端。
注:由於很多人喜歡最小化安裝,上邊軟體是一些常用環境。
建立本地目錄
mkdir /mirror
同步到本地目錄
reposync -p / mirror
注:不用擔心沒有建立相關目錄,系統自動建立相關目錄,並下載,時間較長請耐心等待。
可以用 repo -r --repoid=repoid指定要查詢的repo id,可以指定多個(# reposync -r base -p /mirror #這裡同步base目錄到本地)
更新新的rpm包
reposync -np /mirror
注:時間同樣較長,請耐心等待。
建立索引
createrepo -po /mirror/base/ /mirror/base/
createrepo -po /mirror/extras/ /mirror/extras/
createrepo -po /mirror/updates/ /mirror/updates/
createrepo -po /mirror/epel/ /mirror/epel/
createrepo --update /mirror/base
createrepo --update /mirror/extras
createrepo --update /mirror/updates
createrepo --update /mirror/epel
建立定時任務指令碼
vim /mirror/script/centos_yum_update.sh
!/bin/bash
echo 'Updating Aliyum Source'
DATETIME=date +%F_%T
exec > /var/log/aliyumrepo_$DATETIME.log
reposync -np /mirror
if [ $? -eq 0 ];then
createrepo --update /mirror/base
createrepo --update /mirror/extras
createrepo --update /mirror/updates
createrepo --update /mirror/epel
echo "SUCESS: $DATETIME aliyum_yum update successful"
else
echo "ERROR: $DATETIME aliyum_yum update failed"
fi
將指令碼加入到定時任務中
crontab -e
Updating Aliyum Source
00 13 * * 6 [ $(date +%d) -eq $(cal | awk 'NR==3{print $NF}') ] && /bin/bash /mirror/script/centos_yum_update.sh
每月第一個週六的13點更新阿里雲yum源
安裝nginx開啟目錄許可權保證本地機器可以直接本地yum源
建立執行賬戶
groupadd nginx
useradd -r -g nginx -s /bin/false -M nginx
yum install nginx -y
找到nginx配置檔案,並修改nginx配置檔案:
vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
root /mirror ; #這裡是yum源存放目錄
location / {
autoindex on; #開啟目錄瀏覽功能
autoindex_exact_size off; # off:以可讀的方式顯示檔案大小
autoindex_localtime on; # on、off:是否以伺服器的檔案時間作為顯示的時間
charset utf-8,gbk; #展示中文檔名
index index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
在客戶端修改yum源,並指向本地搭建的yum源主機
注:搭建好後yum安裝速度並沒有想象中的那麼快,安裝時解決依賴速度也很慢。
vim CentOS7.x-Base.repo
[base]
name=CentOS-$releasever - Base - mirror.template.com
baseurl=http://10.0.0.100/base/
path=/
enabled=1
gpgcheck=0
[updates]
name=CentOS-$releasever - Updates - mirror.template.com
baseurl=http://10.0.0.100/updates/
path=/
enabled=1
gpgcheck=0
[extras]
name=CentOS-$releasever - Extras - mirrors.template.com
baseurl=http://10.0.0.100/extras/
path=/
enabled=1
gpgcheck=0
[epel]
name=CentOS-$releasever - epel - mirrors.template.com
baseurl=http://10.0.0.100/epel/
failovermethod=priority
enabled=1
gpgcheck=0