参考文章:
[httpd + createrepo]
准备两台linux虚拟机
第一台需要可以上互联网:
切换到local目录
[root@tcf ~]# cd /usr/local/
创建httpd目录并进入httpd目录
[root@tcf local]# mkdir repo
[root@tcf local]# cd repo
[root@tcf repo]# mkdir httpd
[root@tcf repo]# cd httpd
下载httpd的关联包
[root@tcf httpd]# yum -y install --downloadonly httpd --downloaddir=./ 这个命令可以做到只下载包不安装
可以使用[root@tcf httpd]# ll命令检查一下
然后安装httpd工具
[root@tcf httpd]# yum -y install httpd
安装好之后会自动创建/var/www/html/目录
在安装createrepo软件仓库工具
[root@tcf httpd]# yum -y install createrepo
安装好后,当前目录在/usr/local/repo/httpd/目录下,返回到repo目录,然后直接输入命令
[root@tcf httpd]# cd ../
[root@tcf repo]# createrepo ./
repo目录下对自动创建repodata目录,拷贝httpd下所有的内容到/var/www/html/的repo目录下
[root@tcf repo]# cd /var/www/html
[root@tcf html]# cp -r /usr/local/repo/ /var/www/html/
执行后/var/www/html/目录下就拷贝了/usr/local/目录下的repo目录
Centos密钥一般都存在/etc/pki/rpm-gpg/目录下,我这里文件名为RPM-GPG-KEY-CentOS-7,不同版本文件名并不相同,讲明要一并复制到repo中去
[root@tcf html]# cp /etc/pki/rpm-gpg/RPM-GPG-KEY-GentOS-7 /var/www/html/repo/repodata/RPM-GPG-KEY-GentOS-7
然后启动httpd服务,[root@tcf html]# systemctl start httpd,不过一般安装好后httpd服务都会自动运行,如果不确定可以使用[root@tcf html]# systemctl status httpd命令查看服务状态
如果已经启动,在浏览器输入http://{虚拟机ip}/repo验证一下,通常情况下是连接不上的,因为linux防火墙不会默认开放httpd的80端口,这里使用命令解决
[root@tcf html]# firewall-cmd --add-service=http
永久配置
[root@tcf html]# firewall-cmd --permanent --add-service=http
简单点也可以直接关闭firewalld服务[root@tcf html]# systemclt stop firewalld
成功访问后截图
此时同一局域网的服务都可以访问该离线源
验证:
启动另一台linux服务器,不配置网络,如此一来yum -y install httpd命令就失效了,可以执行以下查看结果,这边就不整了
[root@tcf2 ~]# cd /etc/yum.repo.d/
找到CentOS-Base.repo并复制一份作为备份
[root@tcf2 yum.repo.d]# cp CentOS-Base.repo CentOS-Base.repo.bak
复制好后重命名CentOS-Base.repo为CentOS-TCF.repo,这一步可以不做,只是我自己想区分一下
[root@tcf2 yum.repo.d]# mv CentOS-Base.repo CentOS-TCF.repo
执行好后修改CentOS-TCF.repo的原配置
[root@tcf2 yum.repo.d]# vi CentOS-TCF.repo
删除所有其他源地址配置只留下一下配置
[base]
name=CentOS-TCF - Base
baseurl=http://ip/repo/ #ip为第一台服务器ip
enabled=1
gpgcheck=1
gpgkey=http://ip/repo/repodata/RPM-GPG-KEY-CentOS-7
执行完后保存Esc : wq
之后执行
[root@tcf2 yum.repo.d]# yum makecache fast
[root@tcf2 yum.repo.d]# yum repolist
查看结果
我自己创建的名字可能有点不一样Local是我自己创建的,其他三个是网上下的,不用在意
这样这台服务使用yum - y install命令的时候都会去访问第一台服务器的离线源,目前之后httpd在仓库内,所以只能下载安装httpd
再次执行[root@tcf2 yum.repo.d]# yum -y install httpd查看结果
同理也可以通过yum -y install xxx --downloadonly --downloaddir=./的方式下载其他需要的依赖包来,在无法连接外网的生成环境下安装需要的软件工具。
httpd和createrepo在没有依赖包的情况下也可以直接手动安装,所以就算是生成环境只要有依赖包就能实现。
还有就是上诉操作实际上在一台服务器上也可以完成,修改一下.repo文件的配置即可
[base]
name=CentOS-TCF - Base
baseurl=file:///var/www/html/repo/ #这里配置改为本地地址就可以
enabled=1
gpgcheck=1
gpgkey=file:///var/www/html/repo/repodata/RPM-GPG-KEY-CentOS-7
通过这种方式安装离线包主要还是比起手动一步一步安装每一个依赖,这种方式在成功搭建起离线源之后更加方便快捷。离线源的搭建也不单单这样一种方式,在学习过程中也有使用ios挂载的方式搭建离线源,这边暂时没去学那一部分。
最后上面写的如果有哪里不对,非常欢迎一起讨论。