1. 規范目錄結構環境
- centos7
- 關閉防火牆 selinux
mkdir /mirror/ #nginx頁面站點目錄
mkdir /mirror/centos/x86_64/7/packages -p #rpm包存儲位置
...
2. 安裝搭建Yum倉庫的工具包
[root@mirror ~]# yum install -y createrepo
3. 部署yum倉庫地址訪問環境
配置nginx官方源
cat >/etc/yum.repos.d/nginx.repo<<'EOF'
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
安裝最新nginx
[root@mirror ~]# yum install -y nginx
**
**
配置nginx
cat >/etc/nginx/conf.d/mirror.oldhou.com.conf<<'EOF'
server {
listen 80;
server_name mirror.oldhou.com;
charset utf-8; #設置中文字符集
location / {
root /mirror/;
autoindex on; #打開目錄瀏覽功能
autoindex_exact_size off; #關閉字節顯示(會以MB的方式顯示)
autoindex_localtime on; #打開會顯示文件上傳的本地的時間(默認格林威治時間-8h)
}
}
EOF
啟動Nginx
[root@mirror ~]# nginx -t
[root@mirror ~]# systemctl start nginx
4. 獲取RPM軟件
yum install yum-utils
cd /mirror/repo/centos/x86_64/7/packages && yumdownloader --resolve --destdir=./ nginx
下載rpm到指定目錄示例
[root@mirror ~]# yumdownloader --resolve --destdir=/mirror/centos/x86_64/7/packages/ zabbix-server-mysql zabbix-web-mysql mariadb-server createrepo yum-utils openvpn easy-rsa git python‐pip mysql‐devel gcc automake autoconf python‐devel vim sshpass lrzsz readline‐devel
其他方案:[root@mirror ~]#
5. 創建遞歸索引
每次添加rpm包到倉庫時都要執行一遍
[root@mirror ~]# cd /mirror/centos/x86_64/7/packages/ #進入rpm包所在的目錄
[root@mirror /mirror/centos/x86_64/7/packages~]# createrepo -pdo ./ ./
-p, --pretty
make sure all xml generated is formatted #確認執行命令會生成一個索引文件並定義默認格式
-d, --database
create sqlite database files: now default, see --no-database to disable #創建索引文件相關數據文件信息
-o OUTPUTDIR, --outputdir
OUTPUTDI Roptional directory to output to #將數據保存到指定目錄中,
索引信息:
6.客戶端配置yum源文件信息
6.1 配置yum源,文件
簡易配置yum源
cat >/etc/yum.repos.d/localyum.repo<<'EOF'
[local-centos]
name=Local.os7
baseurl=http://mirror.oldhou.com/centos/x86_64/7/package
enable=1
gpgcheck=0
EOF
查看:
![L\(TR\)BCE7WDB{P46%]YJ_W4.png](https://cdn.nlark.com/yuque/0/2020/png/1581532/1605945579763-795ce4dc-4e68-461f-8952-04c67ff520c9.png)
6.2 內網服務器配置hosts 解析** **
[root@mirror ]# echo "172.16.1.62 mirror.oldhou.com" >>/etc/hosts
查看:
![[[7FAWP}PJ(9{}O61M(~62.png
7. 批量同步倉庫的方法
同步整個源至本地 (比較大,謹慎操作)
[root@mirror ]# rsync -avz rsync://rsync.mirrors.ustc.edu.cn/repo/centos/ /mirror/
8.報錯處理:
#1. 創建rpm包目錄索引時報錯:
[root@mirror /mirror/centos/x86_64/7/packages]# createrepo -opd /mirror/ /mirror/
Error: Only one directory allowed per run.
Usage: genpkgmetadata.py [options]
改變參數順序 -pdo
#2. 安裝前可嘗試刪除yum緩存
yum clean all && yum makecache
#3. 安裝某個文件失敗
下載的軟件需要依賴其他rpm包,如何你關閉了base源和epel源,並且未下載依賴包,將會導致安裝失敗
效果展示
web頁面訪問
服務器安裝
[root@web01 ~]#ll /etc/yum.repos.d/
total 4
-rw-r--r-- 1 root root 105 Oct 30 02:03 localyum.repo
[root@web01 ~]# time yum install mariadb -y
. . .
Installed:
mariadb.x86_64 1:5.5.65-1.el7
Complete!
real 0m2.098s
user 0m1.650s
sys 0m0.349s
#可以看到基本上是秒安裝的