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

[经验分享] 制作nginx的spec分享

[复制链接]

尚未签到

发表于 2018-11-8 07:04:28 | 显示全部楼层 |阅读模式
  再跟大家分享一个我在奇虎这边做的一个nginx的rpm包的spec文件。后面我再分享一下php和mysql等大家用的比较普遍的软件的spec。大家在做rpm包的时候可以参考我的这个文档,后面还包含了一些针对内核的优化的一些参数特别是tcp的快速释放和重利用等,遇到问题我们可以一起讨论。可以加这个qq群325525293。下面我针对里面比较重要的内容做了解释。
  %define _topdir  /qihoo/Centos/
  %define _specdir %{_topdir}/SPEC
  %define _rpmdir  %{_topdir}/
  %define _srcrpmdir %{_topdir}/SRPMS
  %define _sourcedir %{_topdir}/SOURCES
  %define _tmppath   %{_topdir}/tmp
  %define _builddir   %{_topdir}/BUILD
  %define _prefix /usr/local/nginx
  %define _docroot_dir /usr/local/nginx/html
  Summary: qihoo custom nginx package
  Name: qihoo-ops-nginx  #生成rpm的名称叫什么
  Version: 1.6.1
  Release: 1_qihoo.el6
  Vendor: gehailong
  Source: nginx-%{version}.tar.gz   #source主要是引用一下自己定义好的脚本,配置文件之类的内容。
  Source1: nginx.conf            #nginx在主配置文件里面做了很多优化,包括cpu抢占,各种缓存策略,tcp,进程数等。
  Source2: sysctl.conf
  Source3: root.tar.gz
  #Source4: nginx-module.tar.gz
  Source5: nginx.logrotate       #为了防止nginx日志文件逐渐增大,影响读写效率,对nginx日志定期进行切割。
  Source6: nginx.init
  Source7: fastcgi.conf
  URL: http://w2.addops.bjt.qihoo.net:8360
  License: GPL
  Group: Applications/Internet
  Buildroot:%{_tmppath}/%{name}-%{version}-root/
  Requires: bash openssl-devel curl-develpcre pcre-devel openssl   #主要定义了nginx依赖的一些rpm包。就是在yum装的时候依赖的包。
  Autoreq: no
  %description
  qihoo custom nginx RPM
  %prep
  %setup -q -n nginx-%{version}
  %build   #这个阶段就是configure阶段。
  ./configure \
  --prefix=%{_prefix} \
  --with-http_stub_status_module \
  --with-http_ssl_module \
  make %{?_smp_mflags}   #make阶段
  %install    #make install阶段
  [ $RPM_BUILD_ROOT != "/" ]&& rm -rf $RPM_BUILD_ROOT
  make DESTDIR=$RPM_BUILD_ROOT install  #下面是来指定我要生成什么样的目录和文件等。
  mkdir -p$RPM_BUILD_ROOT/usr%{_prefix}/conf/vhosts
  mkdir -p${RPM_BUILD_ROOT}%{_prefix}/modules
  mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/pid
  mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/conf/include
  mkdir -p ${RPM_BUILD_ROOT}%{_docroot_dir}
  %{__tar} -zxvf %{SOURCE3} -C$RPM_BUILD_ROOT%{_docroot_dir}
  mkdir -p ${RPM_BUILD_ROOT}/home/q/php
  mkdir -p ${RPM_BUILD_ROOT}/home/q/system
  #%{__tar} -zxvf %{SOURCE4} -C${RPM_BUILD_ROOT}%{_prefix}/modules/
  [ -f${RPM_BUILD_ROOT}%{_prefix}/conf/nginx.conf ] && \
  rm -fr${RPM_BUILD_ROOT}%{_prefix}/conf/nginx.conf
  cp -rf %{SOURCE1}${RPM_BUILD_ROOT}%{_prefix}/conf/
  mkdir -p ${RPM_BUILD_ROOT}/etc/logrotate.d/
  cp -rf %{SOURCE5}${RPM_BUILD_ROOT}/etc/logrotate.d/nginx
  mkdir -p ${RPM_BUILD_ROOT}/etc/init.d/
  cp -fr %SOURCE6${RPM_BUILD_ROOT}/etc/init.d/nginx
  rm -fr${RPM_BUILD_ROOT}%{_prefix}/conf/fastcgi.conf
  cp -rf %{SOURCE7}${RPM_BUILD_ROOT}%{_prefix}/conf/
  mkdir$RPM_BUILD_ROOT%{_prefix}/conf/vhosts/
  touch$RPM_BUILD_ROOT%{_prefix}/conf/vhosts/blank.conf
  rm -fr $RPM_BUILD_ROOT%{_prefix}/*temp
  %files #注意这个阶段是把前面已经编译好的内容要打包了,其中exclude是指要排除什么不打包进来。
  %defattr(-,root,root,755)
  %{_prefix}
  %{_docroot_dir}
  %attr(0655,root,root)   %config %{_sysconfdir}/init.d/nginx
  %attr(0655,root,root)   %config %{_sysconfdir}/logrotate.d/nginx
  /home
  %exclude %dir /home
  %pre #pre是指在安装前要做什么操作,也就是先把nginx用户建立好。
  if [ "$1" -eq "1" ];then
  /usr/sbin/useradd -c "nginx"  \
  -s /sbin/nologin -r -d %{_docroot_dir} nginx 2> /dev/null || :
  fi
  %post  #是指安装完成后的操作包括哪些操作。
  if [ "$1" -eq "1"];then
  /sbin/chkconfig --add nginx
  /sbin/chkconfig --level 35 nginx on
  chown -R nginx:nginx %{_docroot_dir} %{_prefix}
  echo '# Add    #下面主要是内核参数的优化,包括tcp的快速释放和重利用等。
  net.ipv4.tcp_max_syn_backlog = 65536
  net.core.netdev_max_backlog =  32768
  net.core.somaxconn = 32768
  net.core.wmem_default = 8388608
  net.core.rmem_default = 8388608
  net.core.rmem_max = 16777216
  net.core.wmem_max = 16777216
  net.ipv4.tcp_timestamps = 0
  net.ipv4.tcp_synack_retries = 2
  net.ipv4.tcp_syn_retries = 2
  net.ipv4.tcp_tw_recycle = 1
  net.ipv4.tcp_tw_reuse = 1
  net.ipv4.tcp_mem = 94500000 915000000927000000
  net.ipv4.tcp_max_orphans = 3276800
  #net.ipv4.tcp_fin_timeout = 30
  #net.ipv4.tcp_keepalive_time = 120
  net.ipv4.ip_local_port_range = 1024  65535' >> /etc/sysctl.conf
  sysctl -p 2>&1 /dev/null
  fi
  if [ "$1" -eq "2"];then
  if [ -f /var/lock/subsys/nginx ]; then
  %{_sysconfdir}/init.d/nginx restart
  fi
  fi
  rm -fr %{_prefix}/*temp
  %preun  #这是卸载前的准备工作。
  if [ "$1" -eq "0"];then
  %{_sysconfdir}/init.d/nginx stop > /dev/null 2>&1
  /sbin/chkconfig --del nginx
  fi
  %postun #这是卸载的过程,注意卸载前把需要备份的内容手工备份一遍,防止造成后悔一辈子的事情,有时候运维真的伤不起!!!
  /usr/sbin/userdel  nginx
  rm -fr %{_prefix}
  %clean


运维网声明 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.iyunv.com/thread-632084-1-1.html 上篇帖子: nginx rewrite uri地址重写 下篇帖子: rsyslog收集nginx日志配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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