设为首页 收藏本站
查看: 1235|回复: 0

[经验分享] 定制RPM包及yum仓库搭建(以安装nginx为例)

[复制链接]

尚未签到

发表于 2018-11-16 12:58:04 | 显示全部楼层 |阅读模式
  一、前提条件
  
  #下面通过虚拟机准备了一台服务端,一台客户端,基于外网IP测试,以安装nginx为例。
  #两台机器公共配置
  [root@m01 ~]# cat /etc/redhat-release

  CentOS>  [root@m01 ~]# uname -m
  x86_64
  [root@m01 ~]# uname -r
  2.6.32-573.el6.x86_64
  #服务端配置
  [root@m01 ~]# ifconfig eth0|awk -F "[ :]+"'NR==2{print $4}'
  10.0.0.61
  [root@m01 ~]# hostname
  m01
  #客户端配置
  [root@web01 ~]# ifconfig eth0|awk -F '[ :]+' 'NR==2{print$4}'
  10.0.0.8
  [root@web01 ~]# hostname
  web01
  #RPM介绍
  http://www.ibm.com/developerworks/cn/linux/l-rpm/
二、定制化RPM包
  下面是服务端的配置,只要没有标明都是服务端操作
2、1FPM安装
  #fpm是ruby写的,因此系统环境需要ruby,且ruby版本号大于1.8.5
  [root@m01 ~]# rpm -qa ruby rubygems ruby-devel
  #安装ruby模块
  [root@m01 ~]# yum -y install ruby rubygems ruby-devel
  [root@m01 ~]# rpm -qa ruby rubygems ruby-devel
  rubygems-1.3.7-5.el6.noarch
  ruby-1.8.7.374-4.el6_6.x86_64
  ruby-devel-1.8.7.374-4.el6_6.x86_64
  #添加阿里云的rubygems仓库,外国的源太慢
  [root@m01 ~]# gem sources -ahttp://mirrors.aliyun.com/rubygems/
  http://mirrors.aliyun.com/rubygems/ added to sources
  #移除原生的Ruby仓库
  [root@m01 ~]# gem sources --remove http://rubygems.org/
  http://rubygems.org/ removed from sources
  #安装fpm
  #指定安装fpm1.3.3版本的软件,fpm这个工具升级很频繁,而且在每次升级后会出现各种各样的问题。但是老版本的fpm工具能够满足我们的需求,因此就用这个版本了。
  #这里一定要指定fpm的版本,不然会报错,报错原因可追溯到版本频繁升级的问题导致。
  [root@m01 ~]# gem install fpm -v 1.3.3
  Building native extensions.  This could take a while...
  Building native extensions.  This could take a while...
  Successfully installed json-1.8.3
  Successfully installed cabin-0.8.1
  Successfully installed backports-3.6.8
  Successfully installed arr-pm-0.0.10
  Successfully installed clamp-0.6.5
  Successfully installed ffi-1.9.10
  Successfully installed childprocess-0.5.9
  Successfully installed fpm-1.3.3
  8 gems installed
  Installing ri documentation for json-1.8.3...
  Installing ri documentation for cabin-0.8.1...
  Installing ri documentation for backports-3.6.8...
  Installing ri documentation for arr-pm-0.0.10...
  Installing ri documentation for clamp-0.6.5...
  Installing ri documentation for ffi-1.9.10...
  Installing ri documentation for childprocess-0.5.9...
  Installing ri documentation for fpm-1.3.3...
  Installing RDoc documentation for json-1.8.3...
  Installing RDoc documentation for cabin-0.8.1...
  Installing RDoc documentation for backports-3.6.8...
  Installing RDoc documentation for arr-pm-0.0.10...
  Installing RDoc documentation for clamp-0.6.5...
  Installing RDoc documentation for ffi-1.9.10...
  Installing RDoc documentation for childprocess-0.5.9...
  Installing RDoc documentation for fpm-1.3.3...
  # rdoc和ri为ruby程序生成文档
  [root@m01 ~]# fpm --help|wc -l
  175
  #最好做下快照,方便还原和测试
2、2定制nginx的RPM包
2、2、1准备操作
  #准备好nginx安装包,统一放在/application/tools/目录下。
  [root@m01 /]# mkdir -p /application/tools/
  [root@m01 /]# cd /application/tools/
  [root@m01 tools]# pwd
  /application/tools
  #上传或下载nginx安装包
  #上传使用rz -y命令即可。
  #下面使用下载方式获取nginx安装包
  [root@m01 tools]# wget -q http://nginx.org/download/nginx-1.6.3.tar.gz
  [root@m01 tools]# ls -l nginx-1.6.3.tar.gz
  -rw-r--r-- 1 root root 805253 Apr  8  2015nginx-1.6.3.tar.gz
  #开启yum缓存, /etc/yum.conf的解释在4、2
  [root@m01 tools]# cp /etc/yum.conf/etc/yum.conf.ori.20160630
  [root@m01 tools]# sed 's#keepcache=0#keepcache=1#g'/etc/yum.conf
  [main]
  cachedir=/var/cache/yum/$basearch/$releasever
  keepcache=1
  #主要的是上面两条
  [root@m01 tools]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
  [root@m01 tools]# grep "keepcache=1"/etc/yum.conf
  keepcache=1
  #清空本机已有yum缓存
  [root@m01 tools]# find /var/cache/ -type f -name"*rpm"
  [root@m01 tools]# find /var/cache/ -type f -name"*rpm"|xargs rm -f
  #最好做下快照,方便还原和测试
  -----------------------------------------------------------
  #设置yum源为阿里的配置
  [root@m01 tools]# ls -l /etc/yum.repos.d/CentOS-Base.repo
  -rw-r--r--. 1 root root 1991 Aug  4  2015/etc/yum.repos.d/CentOS-Base.repo
  [root@m01 tools]# cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.ori.20160630
  [root@m01 tools]# ls -l/etc/yum.repos.d/CentOS-Base.repo.ori.20160630
  -rw-r--r-- 1 root root 1991 Jun 29 22:23/etc/yum.repos.d/CentOS-Base.repo.ori.20160630
  [root@m01 tools]# wget -O /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-6.repo
  [root@m01 tools]# ls -l /etc/yum.repos.d/CentOS-Base.repo
  -rw-r--r--. 1 root root 2572 May 15  2015 /etc/yum.repos.d/CentOS-Base.repo
  #可以通过baseurl过滤一下查看是否配置成功
  [root@m01 tools]# grep "baseurl"/etc/yum.repos.d/CentOS-Base.repo
  # remarked out baseurl= line instead.
  baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
  baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
  baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
  baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
  baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
  -----------------------------------------------------------
2、2、2安装nginx
  [root@m01 tools]# rpm -qa pcre-devel openssl-devel
  [root@m01 tools]# yum -y install pcre-devel openssl-devel
  [root@m01 nginx-1.6.3]# rpm -qa pcre-developenssl-devel
  openssl-devel-1.0.1e-48.el6_8.1.x86_64
  pcre-devel-7.8-7.el6.x86_64
  -----------------------------------------------------------
  #查看yum缓存文件,/var/cache/下的rpm文件千万不要删除,切记!
  [root@m01 tools]# find /var/cache/ -type f -name"*rpm"
  /var/cache/yum/x86_64/6/updates/packages/openssl-1.0.1e-48.el6_8.1.x86_64.rpm
  /var/cache/yum/x86_64/6/updates/packages/openssl-devel-1.0.1e-48.el6_8.1.x86_64.rpm
  /var/cache/yum/x86_64/6/base/packages/zlib-devel-1.2.3-29.el6.x86_64.rpm
  /var/cache/yum/x86_64/6/base/packages/libselinux-2.0.94-7.el6.x86_64.rpm
  /var/cache/yum/x86_64/6/base/packages/pcre-devel-7.8-7.el6.x86_64.rpm
  /var/cache/yum/x86_64/6/base/packages/libsepol-devel-2.0.41-4.el6.x86_64.rpm
  /var/cache/yum/x86_64/6/base/packages/libselinux-utils-2.0.94-7.el6.x86_64.rpm
  /var/cache/yum/x86_64/6/base/packages/libcom_err-devel-1.41.12-22.el6.x86_64.rpm
  /var/cache/yum/x86_64/6/base/packages/libselinux-devel-2.0.94-7.el6.x86_64.rpm
  /var/cache/yum/x86_64/6/base/packages/krb5-libs-1.10.3-57.el6.x86_64.rpm
  /var/cache/yum/x86_64/6/base/packages/krb5-devel-1.10.3-57.el6.x86_64.rpm
  /var/cache/yum/x86_64/6/base/packages/keyutils-libs-devel-1.4-5.el6.x86_64.rpm
  [root@m01 ~]# ls /tmp/
  [root@m01 ~]# find /var/cache/ -type f -name"*rpm"|xargs cp -t /tmp/
  [root@m01 ~]# ls /tmp/
  keyutils-libs-devel-1.4-5.el6.x86_64.rpm    libselinux-2.0.94-7.el6.x86_64.rpm        openssl-1.0.1e-48.el6_8.1.x86_64.rpm
  krb5-devel-1.10.3-57.el6.x86_64.rpm        libselinux-devel-2.0.94-7.el6.x86_64.rpm openssl-devel-1.0.1e-48.el6_8.1.x86_64.rpm
  krb5-libs-1.10.3-57.el6.x86_64.rpm          libselinux-utils-2.0.94-7.el6.x86_64.rpm  pcre-devel-7.8-7.el6.x86_64.rpm
  libcom_err-devel-1.41.12-22.el6.x86_64.rpm  libsepol-devel-2.0.41-4.el6.x86_64.rpm    zlib-devel-1.2.3-29.el6.x86_64.rpm
  #下述在安装rpm包的时候会用到
  [root@m01 ~]# cd /tmp/ && tar zcfnginx_yum.tar.gz *.rpm
  [root@m01 tmp]# ls -l nginx_yum.tar.gz
  -rw-r--r-- 1 root root 4442080 Jun 29 22:31nginx_yum.tar.gz
  [root@m01 tmp]# sz nginx_yum.tar.gz
  #D:\Program\SecureCRT\download\ nginx_yum.tar.gz
  -----------------------------------------------------------
  [root@m01 nginx-1.6.3]# useradd nginx -M -s /sbin/nologin
  [root@m01 nginx-1.6.3]# tail -1 /etc/passwd
  nginx:x:502:502::/home/nginx:/sbin/nologin
  [root@m01 tools]# pwd
  /application/tools
  [root@m01 tools]# ls -l nginx-1.6.3.tar.gz
  -rw-r--r-- 1 root root 805253 Apr  8  2015nginx-1.6.3.tar.gz
  [root@m01 tools]# tar zxf nginx-1.6.3.tar.gz
  [root@m01 tools]# cd nginx-1.6.3
  [root@m01 nginx-1.6.3]# ll
  total 624
  drwxr-xr-x 6 1001 1001  4096 Jun 29 22:26 auto
  -rw-r--r-- 1 1001 1001 236608 Apr  7  2015CHANGES
  -rw-r--r-- 1 1001 1001 360501 Apr  7  2015CHANGES.ru
  drwxr-xr-x 2 1001 1001  4096 Jun 29 22:26 conf
  -rwxr-xr-x 1 1001 1001  2369 Apr  7  2015 configure
  drwxr-xr-x 4 1001 1001  4096 Jun 29 22:26 contrib
  drwxr-xr-x 2 1001 1001  4096 Jun 29 22:26 html
  -rw-r--r-- 1 1001 1001  1397 Apr  7  2015 LICENSE
  drwxr-xr-x 2 1001 1001  4096 Jun 29 22:26 man
  -rw-r--r-- 1 1001 1001    49 Apr  7  2015 README
  drwxr-xr-x 8 1001 1001  4096 Jun 29 22:26 src
  #安装nginx
  [root@m01 nginx-1.6.3]# ./configure --user=nginx --group=nginx --prefix=/application/nginx-1.6.3/ --with-http_stub_status_module
  [root@m01 nginx-1.6.3]# make && make install
  [root@m01 nginx-1.6.3]# cd ..
  [root@m01 tools]# ll
  total 792
  drwxr-xr-x 9 1001 1001  4096 Jun 29 22:33 nginx-1.6.3
  -rw-r--r-- 1 root root 805253 Apr  8  2015nginx-1.6.3.tar.gz
  [root@m01 tools]# pwd
  /application/tools
  [root@m01 tools]# ln -s /application/nginx-1.6.3//application/nginx
  -----------------------------------------------------------
  #创建rpm包要执行的脚本
  [root@m01 tmp]# mkdir -p /server/scripts/
  [root@m01 tmp]# cd /server/scripts/
  [root@m01 scripts]# cat nginx_rpm.sh
  #!/bin/bash
  useradd nginx -M -s /sbin/nologin
  ln -s /application/nginx-1.6.3/ /application/nginx
  #做一次快照
  #通过fpm命令打包rpm
  [root@m01 tools]# 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/
  no value for epoch is set, defaulting to nil{:level=>:warn}
  no value for epoch is set, defaulting to nil{:level=>:warn}
  Created package {:path=>"nginx-1.6.3-1.x86_64.rpm"}
  [root@m01 tools]# ls -l nginx-1.6.3-1.x86_64.rpm
  -rw-r--r-- 1 root root 1046824 Jun 29 22:39nginx-1.6.3-1.x86_64.rpm
  [root@m01 tools]# sz nginx-1.6.3-1.x86_64.rpm
  # D:\Program\SecureCRT\download\nginx-1.6.3-1.x86_64.rpm
  -----------------------------------------------------------
  #查看rpm包信息
  [root@m01 tools]# rpm -qpi nginx-1.6.3-1.x86_64.rpm

  Name        :nginx                       >  Version     :1.6.3                             Vendor:root@m01
  Release     :1                             Build Date: Wed 29 Jun2016 10:39:39 PM CST
  Install Date: (not installed)               Build Host: m01
  Group       :default                       Source RPM:nginx-1.6.3-1.src.rpm
  Size        :3179846                          License:unknown
  Signature   :(none)
  Packager    :
  URL         :http://example.com/no-uri-given
  Summary     : nodescription given
  Description :
  no description given
  #查看rpm包内容
  [root@m01 tools]# rpm -qpl nginx-1.6.3-1.x86_64.rpm
  /application/nginx-1.6.3/conf/fastcgi.conf
  /application/nginx-1.6.3/conf/fastcgi.conf.default
  /application/nginx-1.6.3/conf/fastcgi_params
  /application/nginx-1.6.3/conf/fastcgi_params.default
  /application/nginx-1.6.3/conf/koi-utf
  /application/nginx-1.6.3/conf/koi-win
  /application/nginx-1.6.3/conf/mime.types
  /application/nginx-1.6.3/conf/mime.types.default
  /application/nginx-1.6.3/conf/nginx.conf
  /application/nginx-1.6.3/conf/nginx.conf.default
  /application/nginx-1.6.3/conf/scgi_params
  /application/nginx-1.6.3/conf/scgi_params.default
  /application/nginx-1.6.3/conf/uwsgi_params
  /application/nginx-1.6.3/conf/uwsgi_params.default
  /application/nginx-1.6.3/conf/win-utf
  /application/nginx-1.6.3/html/50x.html
  /application/nginx-1.6.3/html/index.html
  /application/nginx-1.6.3/logs
  /application/nginx-1.6.3/sbin/nginx
  #查看rpm的包依赖
  [root@m01 tools]# rpm -qpR nginx-1.6.3-1.x86_64.rpm
  pcre-devel
  openssl-devel
  /bin/sh
  rpmlib(PayloadFilesHavePrefix)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-635826-1-1.html 上篇帖子: nginx&php配置文件联调 下篇帖子: 动态扩展Nginx支持Lua功能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表