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

[经验分享] 使用rpm-build制作nginx的rpm包

[复制链接]

尚未签到

发表于 2018-11-8 08:48:54 | 显示全部楼层 |阅读模式
$ cd rpmbuild/SPECS/  
$ vim nginx.spec     #此时,里面就是一个模板,直接填就可以了
  

  
### 1.The introduction section
  

  
Name: nginx          # 软件包名称
  
Version: 1.7.7       # 版本号,(不能使用-)
  
Release: 3%{?dist}   # release号,对应下面的changelog,如 nginx-1.7.7-3.el6.x86_64.rpm
  
Summary: nginx-1.7.7.tar.gz to nginx-1.7.7.rpm   # 简要描述信息,最好不要超过50个字符,如要详述,使用下面的%description
  
Group: Applications/Archiving      # 要全用这里面的一个组:less /usr/share/doc/rpm-version/GROUPS
  
License: GPLv2                     # 一定带上(最好是对方源码包的License)BSD,GPL,GPLv2
  
URL: http://nmshuishui.blog.51cto.com/
  
Packager: nmshuishui
  
Vendor: nmshuishui
  
Source0: %{name}-%{version}.tar.gz     # source主要是引用一下自己定义好的脚本,配置文件之类的内容。
  
Source1: init.nginx                    # nginx在主配置文件里面做了很多优化,包括cpu抢占,各种缓存策略,tcp,进程数等。
  
Source2: nginx.conf                    # 每增加一个 Source ,都需要在 %install 段和 %files 段做相应配置,如果是启动脚本的话,最好在脚本段配置一下
  
Source3: fastcgi_params
  
BuildRoot: %_topdir/BUILDROOT
  

  
BuildRequires: gcc
  
Requires: openssl,openssl-devel,pcre-devel,pcre  # 定义nginx依赖的包,需要yum安装
  

  
%description              # 软件包详述
  
Custom a rpm by yourself!Build nginx-1.7.7.tar.gz to nginx-1.7.7.rpm
  

  
###  2.The Prep section 准备阶段,主要就是把源码包解压到build目录下,设置一下环境变量,并cd进去
  

  
%prep
  
%setup -q    # 这个宏的作用静默模式解压并cd
  

  
###  3.The Build Section 编译制作阶段,这一节主要用于编译源码
  

  
%build
  

  
%configure          #在 RMP 创建时候, 由于 nginx 不按照常规定义, 不可以定义 %{_prefix} 之类参数, 也不可以使用 %configure 这个参数进行 rpm 编译
  
                    #一旦定义该参数, 会导致编译自动增加下面参数, 导致报错
  
                    # + ./configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --target=x86_64-redhat-linux-gnu --program-prefix=
  
                    #因此,这里需要 ./configure,且需把%configure删掉
  
                    #而且这里需要安装 pcre-devel包,如果没有的话,会提示关于pcre的错误,直接安装此包就可以了
  
./configure \
  
--prefix=/usr/local/nginx \
  
--user=www \
  
--group=www \
  
--with-http_ssl_module \
  
--with-http_flv_module \
  
--with-http_stub_status_module \
  
--with-http_gzip_static_module \
  
--http-client-body-temp-path=/var/tmp/nginx/client/ \
  
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
  
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
  
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
  
--http-scgi-temp-path=/var/tmp/nginx/scgi \
  
--with-pcre
  
make %{?_smp_mflags}            # make后面的意思是:如果就多处理器的话make时并行编译
  

  
###  4.Install section  这一节主要用于完成实际安装软件必须执行的命令,可包含4种类型脚本
  

  
%install
  
rm -rf %{buildroot}
  
make install DESTDIR=%{buildroot}
  
%{__install} -p -D -m 0755 %{SOURCE1} %{buildroot}/etc/rc.d/init.d/nginx
  
%{__install} -p -D %{SOURCE2} %{buildroot}/usr/local/nginx/conf/nginx.conf
  
%{__install} -p -D %{SOURCE3} %{buildroot}/usr/local/nginx/conf/fastcgi_params
  

  
%pre
  
if [ $1 == 1 ];then                                                         # $1有3个值,代表动作,安装类型,处理类型
  
        /usr/sbin/useradd -r www -s /sbin/nologin 2> /dev/null              # 1:表示安装
  
fi                                                                          # 2:表示升级
  
                                                                            # 0:表示卸载
  
%post
  
if [ $1 == 1 ];then
  
        /sbin/chkconfig --add %{name}
  
        /sbin/chkconfig %{name} on
  
        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
  

  
%preun
  
if [ $1 == 0 ];then
  
        /usr/sbin/userdel -r www 2> /dev/null
  
        /etc/init.d/nginx stop > /dev/null 2>&1
  
fi
  
%postun
  

  
###  5.clean section 清理段,clean的主要作用就是删除BUILD
  

  
%clean
  
rm -rf %{buildroot}
  

  
###  6.file section 文件列表段,这个阶段是把前面已经编译好的内容要打包了,其中exclude是指要排除什么不打包进来。
  

  
%files
  
%defattr(-,root,root,0755)
  
/usr/local/nginx/
  
%attr(0755,root,root) /etc/rc.d/init.d/nginx
  
%config(noreplace) /usr/local/nginx/conf/nginx.conf
  
%config(noreplace) /usr/local/nginx/conf/fastcgi_params
  

  
###  7.chagelog section  日志改变段, 这一段主要描述软件的开发记录
  

  
%changelog
  
*  Thu Wed 26 2014 nmshuishui  - 1.7.7-3
  
- Initial version



运维网声明 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-632188-1-1.html 上篇帖子: Nginx 502 解决方案 下篇帖子: centos 6.3 64bit 用tcmalloc优化nginx-damon
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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