在某些企业中,由于出于安全的原因,服务器不能联网。这样我们就无法使用网络上公共的yum源进行软件的下载或者更新。这时就需要在内网中搭建私有的yum源。
部署部署
创建存放软件包的目录
在根目录创建名为yumdata的目录,然后,在yumdata目录下再创建名为centos7.2的目录,存放centos7.2的软件包。
[root@localhost /]# mdir -p /yumdata/centos7.2 #创建目录
挂载光盘,把软件包拷贝到对应的目录下
把安装光盘挂载到任意目录下,把光盘中Packers目录下的所有软件包拷贝到之前创建的centos7.2目录下。
[root@localhost /]# mount /dev/cdrom /mnt/ #挂载光盘
[root@localhost /]#cp mnt/Packages/*.rpm /yumdata/centos7.2/ #拷贝目录
创建repository
系统默认没有createrepo命令,可以采用rpm包方式安装。
[root@localhost yumdata]# createrepo /yumdata/centos7.2/
Spawning worker 0 with 1018 pkgs
Spawning worker 1 with 1018 pkgs
Spawning worker 2 with 1018 pkgs
Spawning worker 3 with 1017 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
如果rpm包有增加,需要执行createrepo --update /yumdata/centos7.2/
docker启动nginx
本案例使用docker来启动nginx,你也可以启动方式启动nginx。确保系统已经安装好docker环境,并且有nginx镜像。
[root@localhost yumdata]# docker version
Client: Docker Engine - Community
Version: 18.09.6
API version: 1.39
Go version: go1.10.8
Git commit: 481bc77
Built: Sat May 4 02:33:34 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.6
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 481bc77
Built: Sat May 4 02:41:08 2019
OS/Arch: linux/amd64
Experimental: false
[root@localhost yumdata]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.18.0 b5390718bd8e 2 months ago 133MB
执行如下命令
[root@localhost repodata]# docker run -d --name=yum_server -p 80:80 -v /yumdata/centos7.2/:/home/centos7.2 nginx:1.18.0
173e8972efc26b5ecb0b10551babc9eac35026c74134297f4b6f5967659db0c0
[root@localhost /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
173e8972efc2 nginx:1.18.0 "/docker-entrypoint.…" 22 minutes ago Up 21 minutes 0.0.0.0:80->80/tcp yum_server
-p 宿主端:容器端口
-v 把宿主机的某个目录挂载到容器中
docker ps -a查看镜像的启动状态
修改nginx的配置文件
[root@localhost /]# docker cp 173:/etc/nginx/conf.d/default.conf .
#把容器的中的nginx配置文件拷贝到宿主机进行修改
修改后default.conf内容如下
server {
listen 80;
listen [::]:80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /home/centos7.2;
autoindex on;
#index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
root 配置的是软件包的目录,本案例的目录是/home/centos7.2
autoindex on ;提供目录浏览
修改完之后,在把配置文件拷贝到容器中,并重启容器,执行如下命令
[root@localhost home]# docker cp default.conf 173:/etc/nginx/conf.d/default.conf
[root@localhost home]# docker restart 173
173为容器的ID,每个容器都不一样的
使用web访问服务器IP
出现以上界面,说明软件包目录能正常访问了。接下来,只需要创建repo文件即可。
客户端上配置repo文件
进入到/etc/yum.repos.d/,把此目录下的文件全部移到到临时目录下。然后重新创建一个新的Centos-Base.repo文件,内容如下
[Centos7.2]
name=didipuls
baseurl=http://10.91.74.200
gpgcheck=0
enabled=1
创建完之后,执行如下命令
[root@localhost yum.repos.d]# yum clean all
已加载插件:fastestmirror, langpacks
正在清理软件源: Centos7.2
Cleaning up everything
[root@localhost yum.repos.d]# yum makecache
已加载插件:fastestmirror, langpacks
Centos7.2 | 2.9 kB 00:00:00
(1/3): Centos7.2/primary_db | 3.2 MB 00:00:00
(2/3): Centos7.2/filelists_db | 3.3 MB 00:00:00
(3/3): Centos7.2/other_db | 1.3 MB 00:00:00
Determining fastest mirrors
元数据缓存已建立
[root@localhost yum.repos.d]#
尝试利用yum安装一个ftp软件,执行如下命令
[root@localhost yum.repos.d]# yum install ftp
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 ftp.x86_64.0.0.17-67.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
=========================================================================================================================================================================================================
Package 架构 版本 源 大小
=========================================================================================================================================================================================================
正在安装:
ftp x86_64 0.17-67.el7 Centos7.2 61 k
事务概要
=========================================================================================================================================================================================================
安装 1 软件包
总下载量:61 k
安装大小:96 k
Is this ok [y/d/N]:
当出现上述这样,证明yum源已经安装好了。