前言:
其实快速完成集群环境交付的技术方案有很多,有最原始的编译-tar-scp分发-解压;有自动化工具
saltstack、puppet、Ansible的批量部署;也有高大上的openstack虚拟机镜像和docker容器分发技术。环境越复杂,技术要求就越来越高,想学更自动化的工具技术也得弄懂简单环境快速部署原理,硅步千里。
一、为什么要搭建yum仓库
对比Linux安装软件的三种方式
1)编译安装:编译参数复杂、编译计算耗时长
2)yum安装:完全自动化,解决所有软件依赖问题;但是软件安装不能自定义,且安装依赖网络
3)定制RPM+yum:结合了前面两者的优点,搭建在本地集群环境,部署速度快。
二、搭建思路
三、搭建过程
1)FPM安装
yum -y install ruby rubygems ruby-devel gem sources -a http://mirrors.aliyun.com/rubygems/ gem sources --remove http://rubygems.org/ gem install fpm -v 1.3.3 #测试环境1.3.3应该是centos6.7稳定版本,其他环境仅参考 |
#FPM实质上是调用rpmbuild工具实现一条命令打包,有点类似于windows上inno setup打包..
2)定制RPM包(以Nginx为例)
###清空yum安装缓存路径,安装完软件依赖包后拷贝出来所有的rpm依赖包### mkdir /application/tools -p sed -i ‘s#keepcache=0#keepscache=1#g‘/etc/yum.conf find /var/cache -type f -name"*rpm"|xargs rm -f yum install -y pcre-devel openssl-devel find /var/cache -type f -name"*rpm"|xargs cp -t /tmp/ cd /tmp/ tar zcf nginx_rpm.tar.gz *rpm ###创建一个安装完软件后需要执行的相关命令脚本### mkdir -p /server/scripts/ cd /server/scripts/ cat >>nginx_rpm.sh<<EOF #!/bin/bash useradd www -s /sbin/nologin -M ln -s /application/nginx-1.6.3//application/nginx EOF ###编译安装Nginx### cd ~/tools/ tar xf nginx-1.6.3.tar.gz cd nginx-1.6.3 ./configure --user=www --group=www--with-http_ssl_module --with-http_stub_status_module --prefix=/application/nginx-1.6.3/ make && make install ###FPM打包### fpm -s dir -t rpm -n nginx -v 1.6.3 -d‘pcre-devel,openssl-devel‘ --post-install /server/scripts/nginx_rpm.sh -f/application/nginx-1.6.3/ # -s 源文件格式,-t 目标格式,-n 包名,-v 版本,-d 指定依赖包(这个很关键,以后yum安装nginx时会自动安装这里的依赖包),--post-install 编译安装完成后需要执行的脚本(如创建用户、软链接等),-f 源文件地址(必须使用绝对地址,不能使用软链接,不然会打包出错!) sz nginx-1.6.3-1.x86_64.rpm |
#打包完成后
rpm -qpi nginx-1.6.3-1.x86_64.rpm #查看包内容
rpm -qpR nginx-1.6.3-1.x86_64.rpm #查看包依赖
rpm -qp --scripts nginx-1.6.3-1.x86_64.rpm #查看包脚本
rpm -ivh nginx-1.6.3-1.x86_64.rpm #安装rpm包
rpm-ivh --aid *.rpm #解决安装包循环依赖的问题
3)yum仓库
###创建一个目录专用放rpm包,也就是yum仓库文件夹了### mkdir -p /application/yum/centos/x86_64 rz nginx_yum.tar.gz rz nginx-1.6.3-1.x86_64.rpm tar xf nginx_yum.tar.gz ###初始化repodata### yum install -y createrepo createrepo -pdo /application/yum/centos/x86_64//application/yum/centos/x86_64/ ###每次加入新的rpm包都需要更新yum仓库数据库### createrepo --update/application/yum/centos/x86_64/ python -m SimpleHTTPServer 80 &>/dev/null& #用Python模块启动http服务 netstat -antulp|grep 80 |
4)客户端配置
cd /etc/yum.repos.d mkdir -p repo_back && mv *reporepo_back/ cat >>new.repo<<EOF #创建新的repo安装源文件 [new] name=server baseurl=http://10.0.0.101 #yum仓库地址 enable=1 #1代表开启地址 gpgcheck=0 #yum软件校验,0非 EOF yum clean all #清楚yum安装缓存 yum list lrzsz.x86_64 0.12.20-27.1.el6 new #能看到新建的new安装yum仓库名 ··· |
5)总结
至此,yum仓库的搭建流程大概就是以上了,后续可以按照此方法自定义PHP、MySQL安装RPM包,加入LNMP环境,一键搭建速度将大大提高,听说最快的2分钟就搞定了~