基于本地光盘的源

server端IP:10.0.0.79

nginx使用默认路径、端口

yum install nginx -y 

#更改以root运行
sed -i '/^user/s/nginx/root/' /etc/nginx/nginx.conf #开启目录列表显示
sed -i '/^http/a autoindex on;\nautoindex_exact_size off;\nautoindex_localtime on;' /etc/nginx/nginx.conf #启动nginx
systemctl enable nginx --now #挂载本地iso文件
mkdir -pv /usr/share/nginx/html/centos/{7,8}
mount -o loop /home/CentOS-7-x86_64-Everything-2009.iso /usr/share/nginx/html/centos/7
mount -o loop /home/CentOS-8.4.2105-x86_64-dvd1.iso /usr/share/nginx/html/centos/8 #防火墙放行80端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT #开机挂载目录
cat >> /etc/fstab <<EOF
/home/CentOS-7-x86_64-Everything-2009.iso /usr/share/nginx/html/centos/7 iso9660 loop,defaults 0 0
/home/CentOS-8.4.2105-x86_64-dvd1.iso /usr/share/nginx/html/centos/8 iso9660 loop,defaults 0 0
EOF

#客户端编辑repo文件
cat > /etc/yum.repos.d/local-iso.repo <<EOF
[local-iso]
name=local iso
baseurl=http://10.0.0.79/centos/\$releasever 
gpgcheck=1
gpgkey=http://10.0.0.79/centos/\$releasever/RPM-GPG-KEY-\$releasever 
enabled=1
EOF

nginx使用非默认目录、端口

#nginx配置10088端口、/data/www-iso目录
cat > /etc/nginx/conf.d/yumrepos.conf <<EOF
server {
listen 10088;
server_name _;
root /data/www-iso/;
}
EOF

systemctl restart nginx

#防火墙添加10088
iptables -I INPUT -p tcp --dport 10088 -j ACCEPT #创建目录并挂载
mkdir -p /data/www-iso/centos/{7,8}
mount -o loop /home/CentOS-7-x86_64-Everything-2009.is /data/www-iso/centos/7 客户端编辑repo文件
cat > /etc/yum.repos.d/local-iso-10088.repo <<EOF
[local-iso-10088]
name=local iso 10088
baseurl=http://10.0.0.79:10088/centos/\$releasever
gpgcheck=1
gpgkey=http://10.0.0.79:10088/centos/\$releasever/RPM-GPG-KEY-\$releasever
enabled=1
EOF

效果验证

浏览器查看(80端口及10088端口)

         

基于互联网的源

  在生产环境中无法连接外网的情况、系统镜像没有相关软件包时,我们可以事先在可以连接外网的主机使用reposync的方式同步互联网上的yum源到本地,使用createrepo命令制作一个本地内网yum仓库。

下载阿里云的EPEL源,制作私有yum源

epel互联网源地址

非默认nginx端口目录配置

(参见第一部分)

#CentOS 7 以前版本,reposync工具来自于yum-utils包
yum -y install yum-utils


#下载数据存放目录
mkdir -p /data/www-iso


服务端编辑epel互联网的源
cat > /etc/yum.repos.d/ali-epel.repo <<EOF
[ali-epel]
name=ali EPEL
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
enabled=1
EOF


#默认只下载rpm包,不下载meta数据,需要指定--download-metadata 才能下载meta
reposync --repoid=ali-epel --download-metadata -p /data/www-iso


#若未下载meta数据,可在下载rpm包后使用createrepo创建
#createrepo -po 源目录 索引元数据的输出位置目录

yum install -y createrepo
createrepo -po /data/www-iso/ali-epel/ /data/www-iso/ali-epel/


#下载相关的key文件
wget -P /data/www-iso/ali-epel/ https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7


#客户端编辑
cat > /etc/yum.repos.d/ali-epel-client.repo <<EOF
[ali-epel]
name=ali EPEL
baseurl=http://10.0.0.79:10088/ali-epel
gpgcheck=1
gpgkey=http://10.0.0.79:10088/ali-epel/RPM-GPG-KEY-EPEL-7
enabled=1
EOF

效果验证

nginx代理yum(互联网源)

场景:10.0.0.79(能上外网)与10.0.0.3(无外网)互连,10.0.0.3需要使用yum安装软件。

代理端10.0.0.79操作

1)配置可使用的yum源,如阿里云

wget -O /etc/yum.repos.d/ali.repo https://mirrors.aliyun.com/repo/Centos-7.repo

2)配置nginx监听端口,如5000

# cat /etc/nginx/conf.d/yum.conf
server {
listen 5000;
server_name _; location / {
proxy_pass http://mirrors.aliyun.com;
}
}

3)重载nginx

systemctl   reload nginx

客户端10.0.0.3操作

1)将阿里云的yum源repo文件复制到/etc/yum.repos.d/目录,并修改repo文件中mirrors.aliyun.com为代理端的地址及端口10.0.0.79:5000

sed -i  's/mirrors.aliyun.com/10.0.0.79:5000/g' /etc/yum.repos.d/ali.repo 

2)修改/etc/yum.conf,增加proxy=http://10.0.0.79:5000

sed -i '/\[main\]/a\proxy=http://11.0.0.3:5000' /etc/yum.conf

nginx代理yum(本地源)

基于本文第一章节配置好本地源后,将服务端的

/etc/yum.repos.d/local-iso-10088.repo

复制到客户端/etc/yum.repos.d/

基于nginx实现私有yum仓库的更多相关文章

  1. 版本控制系统之基于httpd搭建私有git仓库

    在上一篇博客中,我们主要聊到了git的基本工作原理和一些常用的git命令的使用:回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13787701.html:今天我 ...

  2. 创建私有yum仓库

    创建私有yum仓库

  3. 搭建私有yum仓库

    需要工具: centos7 nginx rsync 新建文件夹存放镜像数据 mkdir /data mkdir /data/yum_data 同步数据 国内开源镜像站没有几个支持rsync,科技大学的 ...

  4. yum仓库的部署

    https://segmentfault.com/a/1190000013968371 私有yum仓库在企业中的应用还是比较广泛,有方便.快捷.灵活等优势.如某公司安全部门不允许大批量的主机连接互联网 ...

  5. 搭建基于HTTP协议内网yum仓库

    目录 1. 前言 2. 把rpm包下载到本地 3. 配置nginx对外提供服务 4. 配置本地repo文件 5. 生成repodata信息 6. 检查及使用 7. 对管理机器上的仓库进行更新 参考资料 ...

  6. 基于 registry 搭建 Docker 私有镜像仓库

    今天主要介绍使用 registry 来搭建 Docker私有镜像仓库,方便在公司内部项目中使用,registry 也是 Docker 官方提供的一个镜像,操作也很简单. dockerhub: http ...

  7. 配置yum仓库的三种方法光盘镜像、nginx、sftp

    方法一: 1.安装ftp服务 [root@oldboy ~]# yum -y install vsftpd 2.查看vsftpd相关的配置文件和目录 rpm -ql vsftpd # 查看vsftpd ...

  8. 部署Harbor私有镜像仓库

    Harbor私有镜像仓库无坑搭建 目录 1. harbor介绍 2. docker-ce的安装 3. docker-compose的安装 4. Harbor私有仓库的安装 5. 客户端连接镜像仓库配置 ...

  9. 容器技术之Docker私有镜像仓库docker-distribution

    在前边的博客中我们说到docker的架构由docker客户端.服务端以及仓库组成:docker仓库就是用来存放镜像的地方:其实docker registry我们理解为存放docker镜像仓库的仓库比较 ...

随机推荐

  1. 如何在 Go 中嵌入 Python

    如果你看一下 新的 Datadog Agent,你可能会注意到大部分代码库是用 Go 编写的,尽管我们用来收集指标的检查仍然是用 Python 编写的.这大概是因为 Datadog Agent 是一个 ...

  2. Spring Data JPA实体的生命周期总结

    目录 四种状态 API示例 persist remove merge refresh 参考链接 四种状态 首先以一张图,简单介绍写实体生命周期中四种状态之间的转换关系: 瞬时(New):瞬时对象,刚N ...

  3. 前端下载文档的java工具类

    package com.ry.project.util.commUtil;import freemarker.template.Configuration;import freemarker.temp ...

  4. React事件处理、收集表单数据、高阶函数

    3.React事件处理.收集表单数据.高阶函数 3.1事件处理 class Demo extends React.Component { /* 1. 通过onXxx属性指定事件处理函数(注意大小写) ...

  5. zabbix告警推送至个人微信

    文章原文 自从接触zabbix后,就一直想着怎么才能把告警推送到个人微信上.有这样的想法主要是个人微信的使用频率远远要比钉钉,企业微信,邮箱,飞书等使用频率要高.比如我,就遇到过在周末的时候,因为没有 ...

  6. shell条件语句if

    1.单分支语句 if [ ];then 命令 fi if [ ] then 命令 fi 2.双分支语句 if [ ] then echo cmd1 else echo cmd2 fi 3.多分支语句 ...

  7. noip模拟题7

    目录 T1:匹配 T2:回家 思路 上代码: T3:寿司 基本思路: 上代码: T1:匹配 ##思路:   首先,这道题既可以用KMP,也可以用hash   先说KMP,首先要注意的一点是:KMP的n ...

  8. C#中的“等待窗体”对话框

    这篇文章向您展示了如何在c#.net Windows窗体应用程序中创建一个等待窗体对话框.创建一个新表单,然后输入您的表单名称为frmWaitForm.接下来,将Label,Progress Bar控 ...

  9. linux 档案权限篇之一

    一:预备知识 1.在linux中,任何一个档案都具有.所有者.用户组.其他用户这三种身份的个别权限. 1.所有者:即档案拥有者,由于Linux是多人多任务的系统,因此可能常常会有很多人同时使用这部主机 ...

  10. python win32com 处理excle 写一个公共的类

    利用win32com处理excle,这样可以不管文件是老的xls还是新的xlsx格式,非常方便. 类的源码如下: import win32com.client as win32 class easyE ...