休言女子非英物,夜夜龙泉壁上鸣。这篇文章主要讲述Linux 搭建私有 yum 仓库相关的知识,希望能为你提供帮助。
以不息为体,以日新为道。
本文主要介绍如何在 CentOS8.5 编译 http2.4,并在其搭建私有 yum 仓库,通过 http 服务对外提供 yum 仓库服务,以便让其他机器通过该仓库下载软件。
准备环境准备4台虚拟机,分别如下:
- 一台 YUM 仓库服务器:CentOS8.5(IP:192.168.68.100)
- 部署 HTTP 服务
- 三台客户端:(用于验证 YUM 仓库是否部署成功)
- CentOS6.9
- CentOS7.9
- CentOS8.5
- 部署 HTTP 服务:
- 在 yum 仓库服务器部署 HTTP 服务,用于提供 HTTP 服务,以便客户端可以通过 HTTP 协议访问该 yum 仓库。
- 部署 yum 仓库:
- 在 yum 仓库服务器准备各个 CentOS 发行版的软件包,本文通过挂载各发行版的镜像到服务器进行实现(在实际环境中建议将各版本软件包拷贝到仓库服务器)。
- 客户端配置 yum 源:
- 客户端配置 yum 源,指向私有仓库地址;然后进行验证。
操作步骤部署 HTTP 服务
本文通过编译 apache httpd2.4 版本为例进行演示。 httpd 编译安装需要准备3个源码包(httpd、apr、apr-util),本文以以下几个版本为例进行编译:
- ??httpd2.4.52??
- ??apr-1.7.0??
- ??apr-util-1.6.1??
- 登录到 yum 仓库服务器,下载编译环境所需要的依赖包:
yum -y install gcc make pcre-devel openssl-devel expat-devel wget
- 下载 httpd、apr、apr-util 源码包:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-1.7.0.tar.gz -P /usr/local/src
wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-util-1.6.1.tar.gz -P /usr/local/src
wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.52.tar.gz -P /usr/local/src
- 解压各源码包:
[root@centos8.5-68.100 ~]#cd /usr/local/src
[root@centos8.5-68.100 src]#tar xvf apr-1.7.0.tar.gz
[root@centos8.5-68.100 src]#tar xvf apr-util-1.6.1.tar.gz
[root@centos8.5-68.100 src]#tar xvf httpd-2.4.52.tar.gz
- 将 apr 和 apr-util 源码与 httpd 源码合并:
[root@centos8.5-68.100 src]#mv apr-1.7.0 httpd-2.4.52/srclib/apr
[root@centos8.5-68.100 src]#mv apr-util-1.6.1 httpd-2.4.52/srclib/apr-util
[root@centos8.5-68.100 src]#cd httpd-2.4.51/srclib/
[root@centos8.5-68.100 srclib]#ll
total 12
drwxr-xr-x 27 10011001 4096 Apr22019 apr
drwxr-xr-x 20 10011001 4096 Oct 182017 apr-util
-rw-r--r--1504 games121 Feb 112005 Makefile.in
- 执行编译:
[root@centos8.5-68.100 ~]#cd /usr/local/src/httpd-2.4.52/
[root@centos8.5-68.100 httpd-2.4.52]#./configure \\
--prefix=/apps/httpd24 \\
--enable-so \\
--enable-ssl \\
--enable-cgi \\
--enable-rewrite \\
--with-zlib \\
--with-pcre \\
--with-included-apr \\
--enable-modules=most \\
--enable-mpms-shared=all \\
--with-mpm=event
[root@centos8.5-68.100 httpd-2.4.52]#make -j 2 & & make install
- 创建 httpd 专用用户:
[root@centos8.5-68.100 httpd-2.4.52]#groupadd -r -g 80 apache
[root@centos8.5-68.100 httpd-2.4.52]#useradd -r -u 80 -g apache -s /sbin/nologin apache
- 配置环境变量:
[root@centos8.5-68.100 httpd-2.4.52]#echo PATH=/apps/httpd24/bin:$PATH > /etc/profile.d/httpd.sh
[root@centos8.5-68.100 httpd-2.4.52]#. /etc/profile.d/httpd.sh
[root@centos8.5-68.100 httpd-2.4.52]#httpd -v
Server version: Apache/2.4.51 (Unix)
Server built:Jan 10 2022 23:34:50
- 创建 httpd service 文件:
#[root@centos8.5-68.100 httpd-2.4.52]#vim /lib/systemd/system/httpd24.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:httpd(8)
Documentation=man:apachectl(8)
[Service]
Type=forking
#EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/apps/httpd24/bin/apachectl start
#ExecStart=/apps/httpd24/bin/httpd $OPTIONS -k start
ExecReload=/apps/httpd24/bin/apachectl graceful
#ExecReload=/apps/httpd24/bin/httpd $OPTIONS -k graceful
ExecStop=/apps/httpd24/bin/apachectl stop
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- 设置开机启动 httpd:
[root@centos8.5-68.100 httpd-2.4.52]#systemctl daemon-reload
[root@centos8.5-68.100 httpd-2.4.52]#systemctl enable --now httpd24
[root@centos8.5-68.100 httpd-2.4.52]#systemctl status httpd24.service
● httpd24.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd24.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2022-01-16 17:52:38 CST; 2s ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 37887 ExecStart=/apps/httpd24/bin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 37900 (httpd)
Tasks: 1 (limit: 11229)
Memory: 1.3M
CGroup: /system.slice/httpd24.service
└─37900 /apps/httpd24/bin/httpd -k start
Jan 16 17:52:12 centos8.5-68.100 systemd[1]: Starting The Apache HTTP Server...
Jan 16 17:52:38 centos8.5-68.100 systemd[1]: Started The Apache HTTP Server.
- 在浏览器输入地址进行访问,验证是否可以正常访问:
如上图,说明 httpd 部署成功。
部署 yum 仓库
本文通过挂载 CentOS6、7、8镜像的方式,来为仓库提供软件包。
- 在虚拟机分别挂载 CentOS6、7、8的镜像,如下图:
- 执行以下创建各版本名称的文件夹,以及进行挂载(挂载的时候要将对应的镜像挂载到对应的目录下):
#1.创建挂载目录
[root@centos8.5-68.100 conf]#mkdir /apps/httpd24/htdocs/CentOS6,7,8
#2.查看虚拟光驱
[root@centos8.5-68.100 ~]#lsblk
NAMEMAJ:MIN RMSIZE RO TYPE MOUNTPOINT
sr011:01 10.1G0 rom
sr111:113.7G0 rom
sr211:214.4G0 rom
#3.挂载镜像到对应的目录(注意挂载的时候要将对应的镜像挂载到对应的目录下):
[root@centos8.5-68.100 ~]#mount /dev/sr0 /apps/httpd24/htdocs/CentOS8
mount: /apps/httpd24/htdocs/CentOS8: WARNING: device write-protected, mounted read-only.
[root@centos8.5-68.100 ~]#mount /dev/sr1 /apps/httpd24/htdocs/CentOS6
mount: /apps/httpd24/htdocs/CentOS6: WARNING: device write-protected, mounted read-only.
[root@centos8.5-68.100 ~]#mount /dev/sr2 /apps/httpd24/htdocs/CentOS7
mount: /apps/httpd24/htdocs/CentOS7: WARNING: device write-protected, mounted read-only.
#4.查看是否挂载成功:
[root@centos8.5-68.100 ~]#df -h
FilesystemSizeUsed Avail Use% Mounted on
devtmpfs878M0878M0% /dev
tmpfs896M0896M0% /dev/shm
tmpfs896M8.7M887M1% /run
tmpfs896M0896M0% /sys/fs/cgroup
/dev/nvme0n1p260G2.4G58G4% /
/dev/nvme0n1p575G568M75G1% /data
/dev/nvme0n1p1976M169M741M19% /boot
tmpfs179M0179M0% /run/user/0
/dev/sr011G11G0 100% /apps/httpd24/htdocs/CentOS8
/dev/sr13.7G3.7G0 100% /apps/httpd24/htdocs/CentOS6
/dev/sr24.4G4.4G0 100% /apps/httpd24/htdocs/CentOS7
#5.上述挂载只是临时生效,如需永久生效,需要将挂载项配置到 /etc/fstab 文件中,如下:
[root@centos8.5-68.100 ~]#vim /etc/fstab
......
/dev/sr0 /apps/httpd24/htdocs/CentOS8iso9660 ro0 0
/dev/sr1 /apps/httpd24/htdocs/CentOS6iso9660 ro0 0
/dev/sr2 /apps/httpd24/htdocs/CentOS7iso9660 ro0 0
- 可以在浏览器输入 yum 仓库服务器地址,看是否成功列出各版本软件包。
- 编辑 yum 文件,修改 yum 路径为本地 yum 源,让 yum 仓库服务器自身走本地 yum 源下载软件包:
#1.备份之前的 yum 文件
[root@centos8.5-68.100 ~]#cd /etc/yum.repos.d/
[root@centos8.5-68.100 yum.repos.d]#mkdir bak
[root@centos8.5-68.100 yum.repos.d]#mv * ./bak
#2.创建 yum 文件,注意需要以 repo 后缀名结尾,内容如下:
[root@centos8.5-68.100 yum.repos.d]#vim all.repo
[AppStream]
name=AppStream-centos8
baseurl=file:///apps/httpd24/htdocs/CentOS8/AppStream
enabled=1
gpgcheck=0
[Base]
name=Base-centos8
baseurl=file:///apps/httpd24/htdocs/CentOS8/BaseOS
enabled=1
gpgcheck=0
- 至此 yum 仓库自身的本地 yum 源已配置完成。可以执行以下命令进行验证,如果 repo 的名称是显示的是上面文件定义的并且可以正常下载软件,说明成功:
[root@centos8.5-68.100 yum.repos.d]#yum repolist
repo idrepo name
AppStreamAppStream-centos8
BaseBase-centos8
#或者执行 yum list 查看是否可以列出软件包
[root@centos8.5-68.100 yum.repos.d]#yum list
至此,本地私有 yum 仓库部署完成,接下来可以在各客户端配置 yum 进行测试。
客户端配置 yum 源
- 分别登录到 CentOS6、7、8系统,然后修改 yum 文件(修改过程跟上述部署 yum 仓库章节中的第4步类似,这里就不再赘述),最终修改内容如下:
[root@centos6 yum.repos.d]#cat centos6.repo
[Base]
name=Base-centos6
baseurl=http://192.168.68.100/CentOS6/
enabled=1
gpgcheck=0
CentOS7:
[root@centos7 yum.repos.d]#cat centos7.repo
[Base]
name=Base-centos7
baseurl=http://192.168.68.100/CentOS7/
enabled=1
gpgcheck=0
【Linux 搭建私有 yum 仓库】CentOS8:
[root@centos8 yum.repos.d]#cat centos8.repo
[AppStream]
name=AppStream-centos8
baseurl=http://192.168.68.100/CentOS8/AppStream/
enabled=1
gpgcheck=0
[Base]
name=Base-centos8
baseurl=http://192.168.68.100/CentOS8/BaseOS/
enabled=1
gpgcheck=0
- 尝试下载软件进行验证(以客户端 CentOS7 为例):
#1.查看是否可以列出仓库详细
[root@centos7 yum.repos.d]#yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo idrepo namestatus
BaseBase-centos74,070
repolist: 4,070
#2.尝试下载软件包
[root@centos7 yum.repos.d]#yum install bind -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Base| 3.6 kB00:00:00
Resolving Dependencies
--> Running transaction check
........
Dependency Installed:
GeoIP.x86_64推荐阅读
- Pod的QoS服务质量等级
- 微服务架构 | 3.3 Apache Zookeeper 注册中心 #yyds干货盘点#
- SNAT DANT原理的应用
- WIN11专业版64位21H2正式版 V22000.376 MSDN12月适度精简母盘(2021-12-23)
- 编程进阶之路,虽无捷径但有长短
- VMware vSphere虚拟化常用账户密ma重置-VMware企业虚拟化运维第二季
- #yyds干货盘点#THREE.BoxHelper的使用注意
- 极速开发之Spring Boot五种热部署方式
- css设置文本超过宽度后显示省略号点点点#yyds干货盘点#