Linux-测试环境构建本地YUM全类型仓库(Base,Extras,epel)

1.同步yum源的脚本

#cat /data/yum_repo/rsync_yum_shell/rsync_yumrepo.sh

#!/bin/bash

#script name:rsync_yumrepo.sh

RsyncBin="/usr/bin/rsync"

RsyncPerm=‘-avrt --delete --no-iconv --bwlimit=100000‘

Centos_7_base=‘/data/yum_repo/Centos-7/Base/‘

Centos_7_epel=‘/data/yum_repo/Centos-7/Epel/‘

Centos_7_extras=‘/data/yum_repo/Centos-7/extras/‘

Centos_6_base=‘/data/yum_repo/Centos-6/Base/‘

Centos_6_epel=‘/data/yum_repo/Centos-6/Epel/‘

Centos_6_extras=‘/data/yum_repo/Centos-6/extras/‘

LogFile=‘/data/yum_repo/rsync_yum_log‘

Date=`date +%Y-%m-%d`

#check

function check {

if [ $? -eq 0 ];then

echo -e "\033[1;32mRsync is success!\033[0m" >>$LogFile/$Date.log

else

echo -e "\033[1;31mRsync is fail!\033[0m" >>$LogFile/$Date.log

fi

}

if [ ! -d "$Centos_7_base" ];then

mkdir -pv $Centos_7_base

fi

if [ ! -d "$Centos_7_epel" ];then

mkdir -pv $Centos_7_epel

fi

if [ ! -d "$Centos_7_extras" ];then

mkdir -pv  $Centos_7_extras

fi

if [ ! -d "$Centos_6_base" ];then

mkdir -pv $Centos_6_base

fi

if [ ! -d "$Centos_6_epel" ];then

mkdir -pv $Centos_6_epel

fi

if [ ! -d "$Centos_6_extras" ];then

mkdir -pv  $Centos_6_extras

fi

if [ ! -d "$LogFile" ];then

mkdir $LogFile

fi

#rsync centos 6 base

echo ‘Now start to rsync centos 6 base!‘ >>$LogFile/$Date.log

$RsyncBin $RsyncPerm --exclude=i386/ rsync://mirrors.yun-idc.com/centos/6/os/ $Centos_6_base >>$LogFile/$Date.log

check

#rsync centos 6 epel

echo ‘Now start to rsync centos 6 epel!‘ >>$LogFile/$Date.log

$RsyncBin  $RsyncPerm --exclude=SRPMS/ --exclude=ppc64/ --exclude=i386/ rsync://mirrors.yun-idc.com/epel/6/ $Centos_6_epel  >>$LogFile/$Date.log

check

#rsync centos 6 extras

echo ‘Now start to rsync centos 6  extras!‘ >>$LogFile/$Date.log

$RsyncBin $RsyncPerm --exclude=i386/ rsync://mirrors.yun-idc.com/centos/6/extras/ $Centos_6_extras >>$LogFile/$Date.log

check

#rsync centos 7 base

echo ‘Now start to rsync centos 7 base!‘ >>$LogFile/$Date.log

$RsyncBin $RsyncPerm rsync://mirrors.yun-idc.com/centos/7/os/ $Centos_7_base >>$LogFile/$Date.log

check

#rsync centos 7 epel

echo ‘Now start to rsync centos 7 epel!‘ >>$LogFile/$Date.log

$RsyncBin $RsyncPerm --exclude=SRPMS/ --exclude=ppc64/ rsync://mirrors.yun-idc.com/epel/7/ $Centos_7_epel >>$LogFile/$Date.log

check

#rsync centos 7 extras

echo ‘Now start to rsync centos 7 extras!‘ >>$LogFile/$Date.log

$RsyncBin $RsyncPerm rsync://mirrors.yun-idc.com/centos/7/extras/ $Centos_7_extras >>$LogFile/$Date.log

check

脚本参考大神的博客:http://dl528888.blog.51cto.com/2382721/1342653

任务计划:

周六的凌晨0点20分开始执行更新

20 00 * * 6 /bin/bash /data/yum_repo/rsync_yum_shell/rsync_yumrepo.sh

趁周末下载的,大概46GB。

2.配置nginx服务器

参考nginx编译安装http://sohudrgon.blog.51cto.com/3088108/1596485

配置虚拟主机参考:http://sohudrgon.blog.51cto.com/3088108/1596655

我的nginx配置文件:

server {

listen       8000;

server_name yum.stu15.cn;

index index.html index.htm;

root  /data/yum_repo/;

location / {

autoindex on;

autoindex_exact_size off;

autoindex_localtime on;

}

error_page 502 = /502.html;

log_format  access  ‘$remote_addr - $remote_user [$time_local] "$request" ‘

‘$status $body_bytes_sent "$http_referer" ‘

‘"$http_user_agent" $http_x_forwarded_for‘;

access_log  /var/log/nginx/access.log  access;

}

3.配置repo文件

CentOS-Base-6.repo

[Base]

name=CentOS-Base6 $basearch

baseurl=http://192.168.1.15:8000/Centos-6/Base/$basearch

enable=1

gpgcheck=1

gpgkey=http://192.168.1.15:8000/Centos-6/Base/$basearch/RPM-GPG-KEY-CentOS-6

[extras]

name=CentOS-Base6 $basearch

baseurl=http://192.168.1.15:8000/Centos-6/extras/$basearch

enable=1

gpgcheck=0

[Epel]

name=CentOS-Base6 $basearch

baseurl=http://192.168.1.15:8000/Centos-6/Epel/$basearch

enable=1

gpgcheck=0

CentOS-Base-7.repo

[Base]

name=CentOS-Base7 $basearch

baseurl=http://192.168.1.15:8000/Centos-7/Base/$basearch

enable=1

gpgcheck=1

gpgkey=http://192.168.1.15:8000/Centos-7/Base/$basearch/RPM-GPG-KEY-CentOS-7

[extras]

name=CentOS-Base6 $basearch

baseurl=http://192.168.1.15:8000/Centos-7/extras/$basearch

enable=1

gpgcheck=0

[Epel]

name=CentOS-Base6 $basearch

baseurl=http://192.168.1.15:8000/Centos-7/Epel/$basearch

enable=1

gpgcheck=0

根据需要选择repo文件。

然后进行下面操作:

按照不同的系统选择不同的repo文件,放到服务器的/etc/yum.repos.d里;

删除之前/etc/yum.repos.d里的repo;

清理缓存yum clean all;

将服务器上的软件包信息先在本地缓存,以提高搜索安装软件的速度 yum makecache.

现在本地yum源就已经完成,可以控制软件源,并且由于走内网所有不浪费机房公网网络流量。

批量重命名系统已经存在的repo文件:

# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo  CentOS-Vault.repo  epel-aliyun.repo
#  for i in `ls`; do mv -f $i `echo $i".bak"`; done
# ls
CentOS-Base.repo.bak  CentOS-Debuginfo.repo.bak  CentOS-Media.repo.bak  CentOS-Vault.repo.bak  epel-aliyun.repo.bak

或者删除目录下面的repo文件:

#ansible all -m shell -a ‘find /etc/yum.repos.d/ -name"*.bak" -exec rm -f {} \; ‘

4.脚本批量更新测试环境的所有服务器的yum源为本地15的:

#cat createrepo.sh
#!/bin/bash
cd /etc/yum.repos.d/
for i in `ls`; do mv -f $i `echo $i".bak"`; done
cat
<<EOF>>CentOS-Base-6.repo
[Base]
name=CentOS-Base6 \$basearch
baseurl=http://192.168.1.15:8000/Centos-6/Base/\$basearch
enable=1
gpgcheck=1
gpgkey=http://192.168.1.15:8000/Centos-6/Base/\$basearch/RPM-GPG-KEY-CentOS-6
[extras]
name=CentOS-Base6 \$basearch
baseurl=http://192.168.1.15:8000/Centos-6/extras/\$basearch
enable=1
gpgcheck=0
[Epel]
name=CentOS-Base6 \$basearch
baseurl=http://192.168.1.15:8000/Centos-6/Epel/\$basearch
enable=1
gpgcheck=0
EOF
yum clean all
yum makecache
find /etc/yum.repos.d/ -name "*.bak" -exec rm -f {} \;

5.在15上使用ansible批量推送脚本到服务器,然后执行脚本:

# ansible all -m copy -a ‘src="./createrepo.sh" dest="/root/createrepo.sh"‘

# ansible all -m shell -a ‘bash /root/createrepo.sh‘

测试使用本地yum源安装zsh,然后卸载:

# ansible all -m yum -a "name=zsh state=present"

# ansible all -m yum -a "name=zsh state=removed"

时间: 2024-10-10 14:29:16

Linux-测试环境构建本地YUM全类型仓库(Base,Extras,epel)的相关文章

redhat linux 5上创建本地yum源

1.挂载光驱 [[email protected] ~]#mkdir -p /mnt/cdrom [[email protected] ~]#mount /dev/cdrom /mnt/cdrom 2.将redhat光盘内容复制至本地硬盘 因为创建yum源的目录,必须是可以写入的的目录,所以需要将光盘中的文件全部复制到本地目录,如果在/mnt/cdrom光驱挂载目录执行创建yum源,会报"Directory /mnt/cdrom must be writable."错误 [[email

测试环境LAMP用YUM快速部署。

#!/bin/bash # #测试环境LAMP用YUM快速部署. ##注释## #LAMP配置文件路径: #1./etc/httpd/conf/httpd.conf #2./etc/my.cnf #3./etc/php.ini #php网站目录:/var/www/html/ #1.安装LAMP依赖环境 yum -y install gcc gcc-c++ make authconf automake libtool libevent libevent-devel ncurse nucrse-de

Linux测试环境搭建的学习建议

随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起.这里介绍学习Linux测试环境搭建的一些建议. 一.Linux测试环境搭建从基础开始 常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基础的.例如:为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用者的权限等问题,这些问题其实都不是很难的,只要了解了 Linux 的基础之后,应该就可以很轻易的解决掉这方面的问题.而有些朋友们常常一接触Li

Linux虚拟机配至本地yum源

刚开始使用Linux,自己构建了一个Linux虚拟机之后,在使用yum install的时候,经常是出错,提示连接不上. 一直以为是自己构建的虚拟机的问题,后来在网上查找了一些资料,才发现:需要配置本地yum源. 下面是网上的重复不断的博客,我这里也为了备忘将内容引用一下. ----------------- 虚拟机中的linux有时不能连接上外网,为了能够方便的安装各种packages,于是调查配置本地yum安装的方法. 首先,将作为源的iso的挂载到系统上. 代码如下: mount -o l

Linux中如何搭建本地yum源

1.配置本地yum源的作用 Linux下安装软件有两种方式: 一种是rpm命令的方式,另外一种就是yum在线安装. 由于rpm命令安装和卸载软件时有可能会出现很多的依赖问题,为了解决这些依赖,我们往往会花费大量的时间和精力.那么,为了更方便我们的操作,yum在线安装和卸载的方式就成为了我们安装和卸载软件时的首选,这也是目前Linux下软件的安装卸载最常用的一种方式. 2.本地yum源配置 对于没有联网的Linux操作系统的客户机来说,为了能够使用yum命令安装软件的方式,我们需要先在本地搭建yu

构建本地yum源之rpmbuild

组内准备搭建内部yum源,在这之前需要规范软件的安装目录,并把现有的应用打包. 目前接触两种rpm打包工具,rpmbuild和fpm. - rpmbuild rpmbuild关键是spec文件编写. 环境搭建 yum -y install rpm-build rpmdevtools useradd rpm; su rpm 注: rpm打包需要特定目录下,在近期版本下rpmbuild可以在非root账号家目录下创建打包目录: rpmdev-setuptree [[email protected]

Linux测试环境部署相关命令和步骤

一.手动部署测试环境: 1.登录172.XX.XX.XX 服务器(拉取最新代码) 2.然后输入 cd  /XXX/XXX/XXXX    敲回车键,进入对应模块 3.然后输入 svn up 或 svn upadte 敲回车键 4.然后输入ll或ls 敲回车键 5.然后进入对应XXX模块和XXX模块路径下面有对应的子目录(cd xxx模块) 6.然后输入ll或ls 敲回车键 7.例如 我们要部署 A, 进入 littlec-xxx/littlec-A cd littlec-xxx/littlec-

LINUX测试环境部署nginx(五)

安装配置nginx 安装编译环境:yum -y install pcre-devel openssl openssl-devel 拷贝nginx压缩文件到目标目录后,解压tar -zxvf nginx1.4.4.tar.gz 设置编译参数:./configure --prefix=/usr/local/nginx --with-http_stub_status_module      (/usr/local/nginx目录下运行) 编译:make 安装:make install 启动cd /us

Python2.7.12开发环境构建(自动补全)

一.安装readline-devel包 Python的编译安装依赖于这个包 yum -y install readline-devel 二.安装Python2.7.12 Python官方网站(到此处下载):https://www.python.org/ # tar xf Python-2.7.12.tgz # cd Python-2.7.12 # ./configure --prefix=/usr/local/python27 # make && make install # ln -sv