nginx rpm打包spec文件

#语法:
#TagName: value
#tag名大小写不敏感。

#自定义宏语法:
#%define ropon 2
#使用%{ropon}或者%ropon调用

#RPM包名称,文件中可使用%{name}调用。
Name: Nginx
#RPM包版本号,文件中可使用%{version}调用
Version: 1.14.1
#打包特定版本号,常指第几次打包,其中dist centos6下是.el6,centos7下是.el7。
Release: 1%{?dist}
#RPM包摘要,简单描述RPM包
Summary: Nginx-1.14.1 RPM
prefix: /usr/local/nginx-%{version}

Group: applications/web
License: GPL
URL: http://nginx.org

#指定构建需要的源代码,多个源码包,使用Source1,2...,n
Source0: nginx-1.14.1.tar.gz

#_tmppath是/var/tmp
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires: gcc-c++ perl pcre-devel openssl openssl-devel
Requires: gcc-c++ perl pcre-devel openssl openssl-devel
Packager: [email protected]

#autoreqprov用来指定自动产生RPM依赖关系
AutoReqProv: no

#RPM包详细描述
%description
Nginx 1.14.1

%define Nginx_User www
%define Nginx_Group www
%define dbrootpwd west.cn
%define wwwdir /home/wwwroot
%define logsdir /home/wwwlogs
%define default_dir /home/wwwroot/default
%define vhost_dir /usr/local/nginx/conf/vhost


#setup 不加任何选项,仅将软件包打开。
#setup -n newdir 将软件包解压在newdir目录。
#setup -c 解压缩之前先产生目录。
#setup -b num 将第num个source文件解压缩。
#setup -T 不使用default的解压缩操作。
#setup -T -b 0 将第0个源代码文件解压缩。
#setup -c -n newdir 指定目录名称newdir,并在此目录产生rpm套件。

#构建前的准备
%prep
%setup -n nginx-%{version}


#构建
%build
./configure --prefix=%{prefix} \
--user=%{Nginx_User} --group=%{Nginx_Group} --with-http_stub_status_module \
--with-http_v2_module --with-http_ssl_module \
--with-http_gzip_static_module --with-http_realip_module \
--with-http_flv_module --with-http_mp4_module \
--with-openssl=./openssl-1.1.0g \
--with-pcre=./pcre-8.41 --with-zlib=./zlib-1.2.11 \
--with-pcre-jit

make -j `cat /proc/cpuinfo | grep processor| wc -l`

#安装
%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}

#rpm安装前执行的脚本
%pre
useradd -M -s /sbin/nologin %{Nginx_User}
mkdir -p %{wwwdir} %{logsdir}
chown -R %{Nginx_User}:%{Nginx_Group} %{wwwdir}

#rpm安装后执行的脚本
%post
ln -sf %{prefix} /usr/local/nginx
wget -O /etc/init.d/nginxd http://luopengtest.gotoip2.com/shell/lnmp/init.d/nginxd.txt
chkconfig --add nginxd
chkconfig nginxd on
chmod +x /etc/init.d/nginxd

wget -O /usr/local/nginx/conf/nginx.conf http://luopengtest.gotoip2.com/shell/lnmp/config/nginx.txt

sed -i "s@/data/wwwroot/default@%{wwwdir}/default@" /usr/local/nginx/conf/nginx.conf
sed -i "s@/data/wwwlogs@%{logsdir}@g" /usr/local/nginx/conf/nginx.conf
sed -i "s@^user www www@user %{Nginx_User} %{Nginx_Group}@" /usr/local/nginx/conf/nginx.conf
[ ! -d "%{default_dir}" ] && mkdir -p %{default_dir}
[ ! -d "%{vhost_dir}" ] && mkdir -p %{vhost_dir}
wget -O %{default_dir}/index.html http://luopengtest.gotoip2.com/shell/lnmp/config/index.txt
sleep 1
wget -O %{default_dir}/phpinfo.php http://luopengtest.gotoip2.com/shell/lnmp/config/phpinfo.txt

[ -z "$(grep ^'export PATH=' /etc/profile)" ] && echo "export PATH=%{prefix}/bin:\$PATH" >> /etc/profile
[ -n "$(grep ^'export PATH=' /etc/profile)" -a -z "$(grep %{prefix} /etc/profile)" ] && sed -i "s@^export PATH=\(.*\)@export PATH=%{prefix}/bin:\1@" /etc/profile
. /etc/profile
service nginxd start

#rpm卸载前执行的脚本
%preun
service nginxd stop
chkconfig --del nginxd
userdel %{Nginx_User}
rm -rf %{prefix} %{wwwdir} %{logsdir} 
rm -rf /usr/local/nginx
rm -rf /etc/init.d/nginxd

%clean
rm -rf %{buildroot}

%files
%defattr(-, %{Nginx_User}, %{Nginx_Group})
%attr(744, %{Nginx_User}, %{Nginx_Group}) %{prefix}/*

%changelog

转载于https://www.ropon.top/283.html

你可能感兴趣的:(经验分享)