一、环境
Centos7.9 服务器2台、Centos7.9 iso镜像文件(CentOS-7-x86_64-DVD-2009.iso)
二、搭建过程
启动其中一台服务器用作共享源服务器,将(CentOS-7-x86_64-DVD-2009.iso)镜像文件上传到任意大空间文件路径内。
下面是镜像挂载及验证的过程:
备份原yum源,并清空/etc/yum.repos.d路径内的所有文件
[root@docker01 ~]# cd /etc/yum.repos.d/
[root@docker01 yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo docker-ce.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-x86_64-kernel.repo
[root@docker01 yum.repos.d]# mkdir -p /etc/yum.repo-backup
[root@docker01 yum.repos.d]# cp * ../yum.repo-backup/
[root@docker01 yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo docker-ce.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-x86_64-kernel.repo
[root@docker01 yum.repos.d]# rm -rf *
[root@docker01 yum.repos.d]# ls
关闭防火墙及selinux
systemctl disable firewalld
systemctl stop firewalld
setenforce 0
创建共享源挂载点。
mkdir -p /opt/centos
以只读的方式挂载到/mnt下,并将光盘内所有文件复制到共享源挂载点上。
[root@docker01 ~]# mount -o loop CentOS-7-x86_64-DVD-2009.iso /mnt
mount: /dev/loop0 写保护,将以只读方式挂载
[root@docker01 ~]# cp -ar /mnt/* /opt/centos/
[root@docker01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 908M 0 908M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.7M 911M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 11G 6.1G 65% /
/dev/sda1 1014M 194M 821M 20% /boot
tmpfs 184M 0 184M 0% /run/user/0
/dev/loop0 4.4G 4.4G 0 100% /mnt
卸载光盘
u
开始创建本地yum源,并清空缓存。file:// 是协议 /opt/centos是路径。
[root@docker01 etc]# cd yum.repos.d/
vi local.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[root@docker01 ~]# yum clean all
已加载插件:fastestmirror
正在清理软件源: centos
Cleaning up list of fastest mirrors
Other repos take up 222 M of disk space (use --verbose for details)
验证yum源,并下载软件包。
[root@docker01 ~]# yum repolist
已加载插件:fastestmirror
Determining fastest mirrors
centos | 3.6 kB 00:00:00
(1/2): centos/group_gz | 153 kB 00:00:00
(2/2): centos/primary_db | 3.3 MB 00:00:00
源标识 源名称 状态
centos centos 4,070
repolist: 4,070
[root@docker01 ~]# yum install -y vim vsftpd
开始搭建ftp共享源,允许匿名用户访问,至此共享源服务器搭建完毕。
[root@docker01 ~]# echo anon_root=/opt/ >> /etc/vsftpd/vsftpd.conf
[root@docker01 ~]# systemctl restart vsftpd
[root@docker01 ~]# systemctl enable vsftpd
开启另一台服务器,使用刚刚那台服务器的共享源。
和上一台服务器步骤相似,需要先备份/etc/yum.repos.d内的文件,清空文件,最后创建本地源文件local.repo
vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=ftp://192.168.56.102/centos
gpgcheck=0
enabled=1
这里的192.168.56.102是共享源服务器的IP(开启vsftpd服务的那台机器)。
centos7有默认的本地源repo模板。可以通过这个模板直接改。
[root@docker01 ~]# cat /etc/yum.repos.d/CentOS-Media.repo
# CentOS-Media.repo
#
# This repo can be used with mounted DVD media, verify the mount point for
# CentOS-7. You can use this repo and yum to install items directly off the
# DVD ISO that we release.
#
# To use this repo, put in your DVD and use it with the other repos too:
# yum --enablerepo=c7-media [command]
#
# or for ONLY the media repo, do this:
#
# yum --disablerepo=\* --enablerepo=c7-media [command]
[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
file:///media/cdrom/
file:///media/cdrecorder/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
验证共享源的有效性:
[root@docker02 yum.repos.d]# yum clean all
已加载插件:fastestmirror
正在清理软件源: centos
Other repos take up 222 M of disk space (use --verbose for details)
[root@docker02 yum.repos.d]# yum repolist
已加载插件:fastestmirror
Determining fastest mirrors
centos | 3.6 kB 00:00:00
(1/2): centos/group_gz | 153 kB 00:00:00
(2/2): centos/primary_db | 3.3 MB 00:00:00
源标识 源名称 状态
centos centos 4,070
repolist: 4,070
下载一个软件试试,没问题。
[root@docker02 yum.repos.d]# yum install net-tools -y
实际生产环境中还可以把装有linux系统的u盘插入服务器,再将U盘挂载到服务器,充当本地源安装软件。
三、使用web创建软件仓库
1.准备仓库目录: 选择一个目录作为YUM仓库的基础目录。例如,/var/www/html/yumrepo。
2.创建仓库结构: 在基础目录下创建必要的子目录结构,例如:
mkdir -p /var/www/html/yumrepo/base
3.同步RPM包: 使用createrepo工具同步RPM包到你的仓库目录。例如:
createrepo /var/www/html/yumrepo/base
4.配置HTTP服务器: 确保你的系统上安装了HTTP服务器(如Apache或Nginx),并配置好,使得仓库目录可以通过HTTP访问。
yum install httpd -y
systemctl enable --now httpd
systemctl start httpd
5.配置YUM仓库: 在每个需要使用该仓库的系统的/etc/yum.repos.d/目录下创建一个新的.repo文件,例如myrepo.repo,内容如下:
[myrepo]
name=My Repository
baseurl=http://yourserver/yumrepo/base
enabled=1
gpgcheck=0 # 如果没有使用GPG签名,可以设置为0
# gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-MyRepo # 如果使用GPG签名,可以添加这行
6.生成仓库元数据: 定期运行createrepo来更新仓库的元数据,确保YUM可以正确地列出和安装包。
7.使用仓库: 在配置好YUM仓库后,你可以使用yum命令来安装、更新和查询包。
8.(可选)使用GPG签名: 为了增加安全性,你可以为你的仓库生成GPG密钥,并在.repo文件中指定gpgkey。
9.(可选)设置SELinux上下文: 如果启用了SELinux,确保为仓库目录设置了正确的SELinux上下文,以便HTTP服务器可以访问。
10.(可选)自动化同步: 你可以编写脚本或使用cron作业来定期从源仓库同步RPM包到你的自定义仓库。
四、使用ftp创建软件仓库
1. 准备FTP服务器
首先,确保你的Linux系统上安装了FTP服务器软件,如vsftpd。如果没有安装,可以使用以下命令安装:
sudo yum -y install vsftpd
然后,启动并启用FTP服务:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
2. 配置FTP服务器
编辑FTP服务器的配置文件(通常是/etc/vsftpd/vsftpd.conf),进行必要的配置。根据自己需要进行配置。
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
3. 创建FTP目录
在FTP服务器上创建一个目录,用于存放YUM仓库的文件。例如:
sudo mkdir -p /var/ftp/yumrepo
sudo chown -R ftp:ftp /var/ftp/yumrepo
4. 准备RPM包
将你需要的RPM包复制到FTP目录中。你可以从其他系统或互联网上下载这些包,然后上传到FTP服务器。
/var/ftp/yumrepo
5. 创建YUM仓库元数据
使用createrepo工具创建YUM仓库的元数据。首先,确保安装了createreo:
sudo yum install createrepo
然后,运行createreo命令:
sudo createreo /var/ftp/yumrepo
6. 配置客户端YUM仓库
在客户端系统上,创建或编辑/etc/yum.repos.d/local-yum.repo文件,添加以下内容:
[local-yum]
name=Local YUM Repository
baseurl=ftp://your_ftp_server_ip/yumrepo
enabled=1
gpgcheck=0
将your_ftp_server_ip替换为你的FTP服务器的IP地址。
7. 测试YUM仓库
在客户端系统上,运行以下命令来测试YUM仓库:
sudo yum clean all
sudo yum makecache
sudo yum repolist
这将清除YUM缓存并重新生成缓存,然后列出所有可用的仓库。
8. 安装软件包
现在,你可以使用YUM命令从本地FTP仓库安装软件包:
sudo yum install package_name
9. 定期更新仓库
定期将新的RPM包上传到FTP服务器的/var/ftp/yumrepo目录,并运行createreo命令来更新仓库的元数据。
五、国内镜像源站
linux:
bash <(curl -sSL https://linuxmirrors.cn/main.sh)
docker:
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
评论区