自动化部署必备技能—部署yum仓库、定制rpm包
部署yum仓库、定制rpm包
目录
第1章 扩展 - yum缓存
1.1 yum缓存使用步骤... 1
1.1.1 导言... 1
1.1.2 修改配置文件... 1
1.1.3 使用缓存... 1
第2章 自动化部署必备技能—搭建YUM仓库... 2
2.1 仓库简介... 2
2.1.1 导言... 2
2.1.2 使用说明:... 2
2.2 搭建YUM仓库过程... 3
2.2.1 创建yum仓库目录... 3
2.2.2 安装createrepo软件... 3
2.2.3 初始化repodata索引文件... 3
2.2.4 提供yum服务(Python)... 4
2.2.5 在仓库中添加新的rpm包... 4
2.3 客户端配置及使用... 5
2.3.1 更改yum源... 5
2.3.2 清空之前的缓存... 5
2.3.3 指定使用yum库... 5
2.3.4 直接yum安装... 5
2.4 镜像yum源... 6
2.4.1 镜像同步公网yum源... 6
2.4.2 学生使用内网yum源方法... 6
2.4.3 结果展示... 6
第3章 自动化部署必备技能—定制化RPM包... 7
3.1 FPM打包工具安装... 7
3.1.1 安装依赖包... 7
3.1.2 2、第二步曲:更改仓库... 8
3.2 FRM参数:... 8
3.3 Nginx打包实例参考:... 9
3.3.1 第一步:创建脚本:... 9
3.3.2 第二步:制作fpm包... 9
3.3.3 第三步:当前路径查看fpm包(ls). 9
3.4 打包好的rpm 安装方法:... 9
3.5 注意事项:... 10
第1章 扩展 - yum缓存
1.1 yum缓存使用步骤
1.1.1 导言
默认情况下,当前版本的 yum 在成功下载和安装软件包后,会把下载的文件删掉。这样可以减少 yum 占用的磁盘空间。你可以打开缓存(设置 /etc/yum.conf 中的 keepcache 选项为 1:keepcache=1)这样 yum 将在缓存目录保留下载到的文件。
1.1.2 修改配置文件
设置 /etc/yum.conf 中的 keepcache 选项为 1:keepcache=1
会将下载的安装包缓存到/var/cache/yum/x86_64/下目录中的packages
1.1.3 使用缓存
l 下载并缓存
[root@CeShi 6]# yum install gd-devel libcurl-devel
2 本地使用缓存下载
[root@CeShi 6]# yum -C install gd-devel libcurl-devel
3 注意:
/var/cache/yum/ 目录下的所有文件包过目录. 复制到另一台机子下的相同目录. 执行.
第2章 自动化部署必备技能—搭建YUM仓库
2.1 仓库简介
2.1.1 导言
YUM主要用于自动安装、升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系。要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个软件仓库我们习惯称为yum源。网络上有大量的yum源,但由于受到网络环境的限制,导致软件安装耗时过长甚至失败。特别是当有大量服务器大量软件包需要安装时,缓慢的进度条令人难以忍受。因此我们在优化系统时,都会更换国内的源。
相比较而言,本地YUM源服务器最大优点是局域网的快速网络连接和稳定性。有了局域网中的YUM源服务器,即便在Internet连接中断的情况下,也不会影响其他YUM客户端的软件安装和升级。
2.1.2 使用说明:
使用内网仓库安装前提
1、客户端:更改yum源
[root@B yum.repos.d]# vi xzy.repo [xzy]
name=Server
baseurl=http://10.0.0.5
enable=1
gpgcheck=0
2、服务端:仓库中需要有对应的rpm包(包括依赖包)
l 内网仓库+定制rpm包
将定制的rpm包推送到到搭建的yum仓库中 ,更新仓库即可
l 使用内网仓库
先在仓库主机使用网上yum源: yum缓存到本机->复制到仓库中->更新仓库
2.2 搭建YUM仓库过程
部署命令礼包
mkdir -p /application/yum/centos6.6/x86_64/
cd /application/yum/centos6.6/x86_64/
yum -y install createrepo
createrepo -pdo /application/yum/centos6.6/x86_64/ /application/yum/centos6.6/x86_64/
python -m SimpleHTTPServer 80 &>/dev/null &
2.2.1 创建yum仓库目录
mkdir -p /application/yum/centos6.6/x86_64/
cd /application/yum/centos6.6/x86_64/
rz # 上传rpm包到此目录,此目录下面还可以包括文件夹
2.2.2 安装createrepo软件
yum -y install createrepo
2.2.3 初始化repodata索引文件
createrepo -pdo /application/yum/centos6.6/x86_64/ /application/yum/centos6.6/x86_64/
此目录下会生成 drwxr-xr-x 2 root root 4096 Nov 4 18:51 repodata文件
-p --pretty 以整洁的格式输出xml文件。
-d --database 该选项指定使用SQLite来存储生成的元数据,默认项。
-o --outputdir <url> 指定元数据的输出位置
2.2.4 提供yum服务(Python)
# 可以用Apache或nginx提供web服务,但用Python的http模块更简单,适用于内网环境
cd /application/yum/centos6./x86_64/ python -m SimpleHTTPServer &>/dev/null &
注意:
必须在仓库目录下(相当于设置站点目录)
端口号可以更改 (Python 默认的是8000)
可以通过浏览器输入本机IP查看。
#
python -m SimpleHTTPServer 80 &>/dev/null &
执行这一条命令,就可以在浏览器中访问此目录
[root@CeShi ~]# python -m SimpleHTTPServer 80 &>/dev/null &
[1] 15294
2.2.5 在仓库中添加新的rpm包
本机使用网上yum源: yum缓存到本机->复制到仓库中->更新仓库
1、修改:vim cat /etc/yum.conf keepcache=1 #缓存到本机
2、复制:[root@CeShi x86_64]# find /var/cache/yum/x86_64/6/ -name "*.rpm"|xargs cp -t /application/yum/centos6.6/x86_64/ #此目录下rpm包可以在目录下。
3、更新:createrepo --update /application/yum/centos6.6/x86_64/ #重要
2.3 客户端配置及使用
2.3.1 更改yum源
cd /etc/yum.repos.d
[root@B yum.repos.d]# vi oldboy.repo
[XZY]
name=xzy
baseurl=http://10.0.0.5:80
enable=1
gpgcheck=0
2.3.2 清空之前的缓存
yum clean all
2.3.3 指定使用yum库
yum --enablerepo=XZY --disablerepo=base,extras,updates,epel list
2.3.4 直接yum安装
[root@backup yum.repos.d]# yum install mhash mcrypt
Loaded plugins: fastestmirror, security
* epel: mirrors.aliyun.com
epel/primary_db | 6.0 MB 00:06
XZY | 2.9 kB 00:00
XZY/primary_db | 35 kB 00:00
Resolving Dependencies
--> Running transaction check
---> Package mcrypt.x86_64 0:2.6.8-10.el6 will be installed
2.4 镜像yum源 (不重要)
上面只是将自己制作的rpm包,放入yum源。但还有一种企业需求,说的更具体一点,平时学生上课yum安装软件都是从公网下载的,占用带宽,因此在学校里搭建一个内网yum服务器,但又考虑到学生回家也要使用yum安装软件,如果yum软件的数据库文件repodata不一样,就会有问题。因此我想到的解决方法就是直接使用公网yum源的repodata。
2.4.1 镜像同步公网yum源
说明
上游yum源必须要支持rsync协议,否则不能使用rsync进行同步。
镜像较大,所有的有300G左右。
# 同步base源,小技巧,我们安装系统的光盘镜像含有部分rpm包,大概3G,这些就不用重新下载。
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /data/yum_data/centos/6/os/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ /data/yum_data/centos/6/extras/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ /data/yum_data/centos/6/updates/x86_64/
# epel源
/usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /data/yum_data/epel/6/x86_64/
2.4.2 学生使用内网yum源方法
# 可以自建一个内网dns,如果没有,可使用hosts解析。
echo '192.168.0.200 mirrors.aliyun.com' >>/etc/hosts
2.4.3 结果展示
[root@KVM data]# du -sh yum_data
21G yum_data
[root@KVM data]# tree -L 3 yum_data/
yum_data/
├── centos
│ ├── 6
│ │ ├── extras
│ │ ├── os
│ │ └── updates
│ └── RPM-GPG-KEY-CentOS-6
├── epel
│ └── 6
│ └── x86_64
第3章 自动化部署必备技能—定制化RPM包
3.1 FPM打包工具安装
3.1.1 安装依赖包
yum -y install ruby rubygems ruby-devel
3.1.2 第二步曲:更改仓库
查看当前仓库源命令
gem sources list
更改ruby仓
gem source -a http://mirrors.aliyun.com/rubygems/ -r http://rubygems.org/
3.1.3 第二步曲:安装fpm 和json
gem install json -v 1.8.3
gem install fpm -v 1.3.3
3.2 FRM参数:
-s 指定源类型
-t 指定目标类型,即想要制作为什么包
-n 指定包的名字
-v 指定包的版本号
-C 指定打包的相对路径 Change directory to here before searching forfiles
-d 指定依赖于哪些包
-f 第二次打包时目录下如果有同名安装包存在,则覆盖它
-p 输出的安装包的目录,不想放在当前目录下就需要指定
--post-install 软件包安装完成之后所要运行的脚本;同--after-install
--pre-install 软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall 软件包卸载完成之后所要运行的脚本;同--after-remove
--pre-uninstall 软件包卸载完成之前所要运行的脚本;同--before-remove
3.3 Nginx打包实例参考:
3.3.1 第一步:创建脚本:
#!/bin/bash
useradd www -M -s /bin/nologin
ln -s /application/nginx-1.10.2/ /application/nginx
3.3.2 第二步:制作fpm包
fpm -s dir -t rpm -n nginx -v 1.10.2 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.10.2/
注意: -f 后可以指定多个目录
3.3.3 第三步:当前路径查看fpm包(ls)
3.4 打包好的rpm 安装方法:
1、推荐使用方法:yum localinstall 包名 ,(包在当前目录下)
yum -y localinstall nginx-1.10.2-1.x86_64.rpm
[root@m01 application]# ll
total 4
lrwxrwxrwx 1 root root 26 Nov 1 23:26 nginx -> /application/nginx-1.10.2/
drwxr-xr-x 11 root root 4096 Nov 1 23:26 nginx-1.10.2
2、将定制好的rpm包传到yum仓库指定目录下,进行yum安装
3.5 注意事项:
1、打包的软件要是绝对路径
2、不能打包软连接路径
3、打包时软件不能是运行状态
推荐博客:http://blog.oldboyedu.com/category/automatic-operation/automatic-deployment/
自动化部署必备技能—部署yum仓库、定制rpm包的更多相关文章
- 自动化部署必备技能—搭建YUM仓库
导言: YUM主要用于自动安装.升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系.要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库) ...
- 配置yum仓库和rpm包
作业一: 1) 开启Linux系统前添加一块大小为15G的SCSI硬盘 2) 开启系统,右击桌面,打开终端 3) 为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分 ...
- 自动化部署必备技能—定制化RPM包[转载]
回顾下安装软件的三种方式: 1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长. 2.yum安装软件,优点是全自动化 ...
- 自动化部署必备技能—定制化RPM包
回顾下安装软件的三种方式: 1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长. 2.yum安装软件,优点是全自动化 ...
- 搭建yum仓库与定制rpm包
笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 当我们自动化部署集群的时候,想要快速的安装所有服务,搭建yum仓库与定制rpm包是我们首先要做的 原创作品,转载请 ...
- FPM定制RPM包实践
1.1 快速部署方案 ✔ 问题:当领导给你 100 台已经安装好系统的服务器,然后让优化,让你提出一个快速部署方案. 解答: 1.tar 打包 先编译安装 打包-->分发-->解包(比如 ...
- linux系统之定制rpm包
FPM打包工具 FPM的作者是jordansissel FPM的github:https://github.com/jordansissel/fpm FPM功能简单说就是将一种类型的包转换成另一种类型 ...
- 如何使用yum来下载RPM包而不进行安装
如何使用yum来下载RPM包而不进行安装 2015-03-23 13:15 theo-l译 linux.cn 字号:T | T yum是基于Red Hat的系统(如CentOS.Fedora.RHEl ...
- 【转】用yum只下载rpm包而不安装
转自:http://liucheng.name/1950/ CentOS用yum安装软件是非常方便的,有时,我们只需要下载其中的rpm包,而不直接安装时咋办呢? 一般情况下,yum是不提供只下载的功能 ...
随机推荐
- DDL DML DCL TCL之不同
http://www.orafaq.com/faq/what_are_the_difference_between_ddl_dml_and_dcl_commands DDL Data Definiti ...
- python random从集合中随机选择元素
1.使用python random模块的choice方法随机选择某个元素 from random import choice foo = ['a', 'b', 'c', 'd', 'e'] print ...
- 如何判断Linux 是32位还是64位
.运行 'uname -m' 命令 上面的命令内涵太多了,可以用这个参数直指人心:'uname -m' . 例如,在我的系统里,它显示了以下信息: $ uname -m i686
- hdu 4057--Rescue the Rabbit(AC自动机+状压DP)
题目链接 Problem Description Dr. X is a biologist, who likes rabbits very much and can do everything for ...
- 关于如何绑定Jquery 的scroll事件(兼容浏览器 Wookmark瀑布流插件)
做一个随屏幕滚动的导航条时,发现一个问题: 火狐.谷歌.ie9正常,ie8.7.6页面滚动时,导航条没有反应. 代码如下: $(document).bind("scroll",fu ...
- zookeeper curator使用caches实现各种监听
1.篇首语 curator是zookeeper的一个高级api开发包.封装了zookeeper众多的recipes,并且实现了一些新的recipes原语,最重要的是基于zookeeper提供的各种机制 ...
- netconf选用秘钥登录
#! /usr/bin/python2.7import ncclientfrom ncclient import managerwith manager.connect(\ host="19 ...
- cocos2dx - 节点管理
接上一节内容:cocos2dx - v2.3.3编辑器骨骼动画 本节主要Cocos2dx中节点的管理及应用 一般用法 用过Cocos2dx应该都有用过addChild,removeChild方法.或者 ...
- 【学习】js学习笔记:对象的遍历和封装特性
1.对象的属性访问: 对象.属性 对象[属性],但中括号中必须是字符串 2.属性的遍历: for in方法举例: var ren={}; ren.name="名字"; ren.ea ...
- (@WhiteTaken)设计模式学习——观察者模式
忙里抽闲,继续学习设计模式,作为自己的读书笔记,这次介绍Java下实现的观察者模式. 观察模式需要了解的三个概念: 被观察者:被观察的对象,发生变化会通知观察者集合(存放观察者的容器) 观察者:有up ...