nginx的rpm包制作

nginx prm包 详细制作流程

1.准备工作

1.1:我这里准备了一台centos7的虚拟主机

1.2:官网下载最新的稳定版nginx源码包,地址:http://nginx.org/nginx-1.10.2.tar.gz

1.3:官网下载nginx的控制脚本,地址:https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/

1.4:手动安装一遍,看看都需要哪些依赖,所需依赖:gcc-c++,pcre-devel,zlib-devel,openssl-devel

1.5:了解RPM包的制作过程或结构

1.5.1:准备rpmbuild车间,(BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS),了解这几个文件夹的作用,        使用普通用户进行,因为root用户权限太大,使用比较危险

1.5.2:把源材料放入车间的SOURCES文件夹里,这是规定的固定的目录

1.5.3:进入SPECS创建spec文件,需要spec文件来指挥如何使用源材料来制作成rpm包

1.5.4:开始编译源代码生成rpm包

2.正式操作

2.1:准备制作车间

2.1.1:yum install rpmbuild   #安装rpmbuild制作软件

2.1.2:useradd nginx  #新建一个nginx用户

2.1.2:su - nginx        #切换到nginx用户登录

2.1.3:rpmbuild -- showrc | grep _ropdir 查看工作车间的位置

2.1.4:vim .rpmmacros 在里面填写nginx的家目录  %_topdir/home/nginx/rpmbuild  保存退出  #重新定义工作车间的          路径

2.1.5:mkdir -pv rpmbuild/{BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS}  #进入自己的家目录创建车间        目录,再用rpmbuild -- showrc | grep _ropdir 查看是否为当前自定义的路径

2.2:把源码包放入到SOURCES文件夹里面,然后新建个文件把控制脚本复制到里面进行保存,我这里用的test.nginx当控制脚本文件,如图:

2.3:进入SPECS目录创建spec文件,vim nginx.spec,创建后里面会有语法定义,把里面的内容补全即可,因为我这里用到了控制脚本,还需要加脚本阶段,整体文件如下:

[[email protected] SPECS]$ cat nginx.spec

Name:nginx                      #软件名字

Version:1.10.2                 #版本号,需要与源码包一样,而且不可以使用-只能使用.

Release:        2%{?dist}   #制作版本号,这里宏是固定的,不用改

Summary:nginx test           #简介

Group:Applications/Internet   #组,可以使用cat /usr/share/doc/rpm-4.11.3/GROUPS 来查看组所使用的必须为这个里面的组

License:GPLv2                 #版权说明

URL:nginx.org                  #源码包的出处

Source0:nginx-1.10.2.tar.gz   #明确说明制作RPM包所使用的源文件,这里是我的nginx源码包

Source1:test.nginx                  #明确说明制作RPM包所使用的源文件,这里是我的控制脚本

BuildRequires:gcc-c++,pcre-devel,zlib-devel,openssl-devel   #制作RPM包的过程所依赖的软件包

Requires:gcc-c++,pcre-devel,zlib-devel,openssl-devel           #安装RPM包的过程所是依赖的软件包

%description    #描述

nginx web server test

%prep            #固定格式,不用管,这个是准备阶段

%setup -q

%build            #制作阶段,主要有configure和make

export DESTDIR=%{buildroot}

./configure \

--sbin-path=/usr/sbin/nginx \

--conf-path=/etc/nginx/nginx.conf \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--pid-path=/var/run/nginx/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--user=nginx \

--group=nginx \

--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/ \

--with-pcre

make %{?_smp_mflags}

%install     #安装阶段buildroot路径基本上都是固定的,可以自定义,buildroot:在tmpath下建3个子目录里面有                                                                                                                                                                             name,version,release

rm -rf %{buildroot}     #因为制作过程可能进行多次重复操作,所以我么定义每次都删一遍Buildrooot

make install DESTDIR=%{buildroot}  #表示安装到DESTDIR以buildoot为起点

%{__install} -p -d -m 0755 %{buildroot}/var/run/nginx        #在buildroot路径下创建目录并给权限,-d是创建目录的

%{__install} -p -d -m 0755 %{buildroot}/var/log/nginx

%{__install} -p -D -m 0755 %{SOURCE1} %{buildroot}/etc/rc.d/init.d/nginx     #在{buildroot}/etc/rc.d/init.d/nginx 下安装source1源文件并指定权限

%clean      #清理段,当RPM包制作完成之后都会自动清理一遍buildroot

rm -rf %{buildroot}

%pre       #脚本段,安装前,在安装前添加一个nginx用户

if [ $1 == 1 ]; then     #$1=1表示安装,2表示卸载,0表示升级

/usr/sbin/useradd -s /bin/false -r nginx 2>/dev/null || :

fi

%post     #安装后,添加到服务列表

if [ $1 == 1 ]; then

/sbin/chkconfig --add %{name}

fi

%preun   #卸载前停止服务并从服务列表删除

if [ $1 == 0 ]; then

/sbin/service %{name} stop >/dev/null 2>&1

/sbin/chkconfig --del %{name}

fi

%files      #文件阶段,定义宏和权限

%defattr(-,root,root,-)   #定义默认权限

%doc LICENSE CHANGES README  #定义文档,下面这些文件当执行到rpmbulid -b

/usr/sbin/nginx

%dir /var/run/nginx

%dir /var/log/nginx

%dir /etc/nginx    #下面的配置文件 在执行到rpmbuild -bi  nginx.spec的时候会有错误提示,把里面的拷贝过来就成下面                                                                                                                                                                    的配置文件格式了

/etc/nginx/fastcgi.conf

/etc/nginx/fastcgi.conf.default

/etc/nginx/fastcgi_params

/etc/nginx/fastcgi_params.default

/etc/nginx/koi-utf

/etc/nginx/koi-win

/etc/nginx/mime.types

/etc/nginx/mime.types.default

/etc/nginx/nginx.conf

/etc/nginx/nginx.conf.default

/etc/nginx/scgi_params

/etc/nginx/scgi_params.default

/etc/nginx/uwsgi_params

/etc/nginx/uwsgi_params.default

/etc/nginx/win-utf

/usr/local/nginx/html/50x.html

/usr/local/nginx/html/index.html

%attr(0755, root, root) /etc/rc.d/init.d/nginx    #明确定义这个脚本的单个属性,不走默认属性

%changelog      #以*号表示 周几 月份 日期 年份 编辑人员 邮箱 版本信息

* Tue Oct 25 2016 hui.shi -1.10.2-2

-add nginx.sys

* Mon Oct 24 2016 hui.shi -1.10.2-1

-test version

3.在写完spec文件之后,进行制作RPM包

3.1:rpmbuild -bp nginx.spec   #执行到%prep阶段,查看是否正常,出现错误就解决报错

3.2:rpmbuild -bc nginx.spec   #执行到%build阶段,查看是否正常,出现错误就解决报错

3.3:rpmbuild -bi  nginx.spec   #执行到%install阶段,查看是否报错,出现错误就解决报错

以上的报错都解决完之后可以直接进行制作rpm包了

3.4: rpmbuild -ba nginx.spec  #制作二进制和源码格式的rpm包

制作完成的rpm包在 /home/nginx/rpmbuild/RPMS里

4.然后找到制作好的RPM包进行测试安装

rpm -ivh nginx包

然后systemctl start nginx.service来启动服务

netstat -tunlp 来查看是否启动正常

如果我们需要给这个nginx添加新功能,那就需要加原材料和重新修改spec文件来重新进行制作,然后用

rpm -Uvh nginx来升级软件

注意:第3阶段特别容易出现报错,主要的错误有 字母、标点、—和_的写错,sepc文件里面特别容易写错字,就慢慢排错吧

时间: 2024-10-13 09:51:00

nginx的rpm包制作的相关文章

通过定制nginx的rpm包学习如何制作rpm安装包

RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中.它生成具有.RPM扩展名的文件.使用rpm安装软件和管理软件非常的方便. 1.安装rpm-build [[email protected] ~]# yum -y install rpm-build redhat-rpm-config 2.建立目录结构 [[email protected] ~]# mkdir -p ~/rpmbuild/

通过nginx源码包制作rpm包

目录 目录... 1 版权声明:... 2 文档信息:... 2 一.通过nginx源码包制作rpm包... 2 1.制作前环境准备:... 3 2.创建普通用户... 3 二.编写spec规则... 3 1.在模板里添加规则... 3 2.关于保存*.spec报错的解决... 4 2.1解决办法:... 5 2.2使用rpmbuild命令生成 rpm包... 5 三.在其他主机测试rpm包... 5 1. 需要按照依赖包... 5 2. 上传并安装nginxRPM包... 5 3. 查看端口开

使用rpm-build制作nginx的rpm包

一.RPM包的分类 RPM有五种基本的操作功能:安装.卸载.升级.查询和验证. linux软件包分为两大类: (1)二进制类包,包括rpm安装包(一般分为i386和x86等几种) (2)源码类包,源码包和开发包应该归位此类(.src.rpm). 有时候为了方便源码包的安装,和我们自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包,当有了源码包就可以直接编译得到二进制安装包和其他任意包.spec file是制作rpm包最核心的部分,rpm包的制作就是根据spec file来实现的

制作nginx的RPM包

RPM为Redhat Package Manager缩写,是一个为Redhat系列Linux生产软件包的小工厂.其产品是RPM包,包含一些归档文件和meta信息;这些meta信息用来 记录如何安装和删除这些文件,一些帮助脚本,文件属性和描述行信息(如包依赖哪些包和被哪些包依赖).整个RPM包的制作过程严格按照SPEC文件规范的 执行,然后通过rpmbuild命令来解析SPEC文件生成对应的RPM包. 至于为什么要制作rpm包,大家都明白,方便部署,比起源码来,这个部署速度更快 下面让以nginx

Fpm 之 Nginx rpm 包制作

Fpm 之 Nginx rpm 包制作 一.下载nginx编译安包机器上 wget http://nginx.org/download/nginx-1.12.2.tar.gz 二.安装nginx的编译所需的依赖包 yum -y install pure lib gcc-c++ openssl openssl-devel 三.编译安装nginx tar -zxvf nginx-1.12.2.tar.gz cd nginx-1.12.2 ./configure --prefix=/app/nginx

RPM包制作方法

一.RPM介绍 RPM 前是Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:现在应为RPM Package Manager的缩写.在Fedora.Redhat.Mandriva.SuSE.YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用: RPM包中除了包括程序运行时所需要的文件,也有其它的文件:一个RPM包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定

Ngins rpm包制作,spec配置文件

Name:           nginx Version:        1.4.2 Release:        1%{?dist} Summary:        nginx from source Group:          System Environment/Daemons License:        GPLv2 URL:            http://nginx.org Source0:        %{name}-%{version}.tar.gz Source

linux之rpm包制作

难点:spec文件的编写 1,首先安装rpm-build命令 yum install rpm-build 2,介绍spec编写规则: #ll #drwxr-xr-x  2 root root 4096 Jul 29 13:50 BUILD #drwxr-xr-x  2 root root 4096 Jul 29 13:51 RPMS #drwxr-xr-x  2 root root 4096 Jul 29 13:51 SOURCES #drwxr-xr-x  2 root root 4096 J

linux rpm包制作

Linux Rpm 包制作 一.简介 RPM(Red Hat Package Manager)的最常见的软件包管理器. 软件包管理器 rpm,deb(dpkg) RPM包命名:name-version-release.architecture.rpm. xorg-x11-xsm-1.0.2 -4.fc6.i386.rpm 包名       版本号 编译次数 厂商 平台 RPM功能:安装.卸载.升级.查询和验证. rpm     -ivh              安装 rpm     -Uvh