nginx打包rpm

安装rpmbuild,生成目录,编写spec文件
附上自己写的spec文件。
由于公司需要,nginx需要添加lua等依赖包,就自己通过编译过程打包了rpm。红色部分是根据编译的结果添加上去的
Name: nginx 
Version: 1.2.7 
Release: 1%{?dist} 
Summary: A free,open-source,high-performance HTTP server and reverse proxy. 

Group: System Enviroment/Daemons 
License: BSD 
URL:  http://www.nginx.org 
Source0:  http://sysoev.ru/nginx/nginx-%{version}.tar.gz 
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) 

BuildRequires: openssl-devel,lua-devel 
Requires: openssl,lua 

%description 
nginx is a free, open-source, high-performance HTTP server and reverse proxy, 
as well as an IMAP/POP3 proxy server. Nginx is known for its high 
performance, stability, rich feature set, simple configuration, and low 
resource consumption. 

%prep 
%setup -q 


%build 
export DESTDIR=%{buildroot} 
./configure --user=www --group=www --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/run/nginx/nginx.lock --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_perl_module --with-pcre=/root/rpmbuild/SOURCES/pcre-8.32 --with-debug --add-module=/root/rpmbuild/SOURCES/lua-nginx-module-0.9.1/ --add-module=/root/rpmbuild/SOURCES/ngx_devel_kit-0.2.19/ --add-module=/root/rpmbuild/SOURCES/echo-nginx-module-0.49/ 
make %{?_smp_mflags} 

%pre 
id www > /dev/null 2>&1 
var1=`echo $?` 
if [ $var1 != 0 ]; then 
groupadd www > /dev/null 2>&1 
useradd www -g www > /dev/null 2>&1 
fi 
mkdir -p /data/logs/nginx > /dev/null 2>&1 

%install
make install DESTDIR=%{buildroot}

make -f /root/rpmbuild/BUILD/nginx-1.2.7/objs/Makefile install
cd /root/rpmbuild/BUILD/nginx-1.2.7/objs/src/http/modules/perl && make install
test -d "%{buildroot}/usr/local/nginx" || mkdir -p "%{buildroot}/usr/local/nginx"
test -d "%{buildroot}/usr/local/nginx/sbin" || mkdir -p "%{buildroot}/usr/local/nginx/sbin"
test ! -f "%{buildroot}/usr/local/nginx/sbin/nginx" || mv "%{buildroot}/usr/local/nginx/sbin/nginx" "%{buildroot}/usr/local/nginx/sbin/nginx.old"
cp /root/rpmbuild/BUILD/nginx-1.2.7/objs/nginx "%{buildroot}/usr/local/nginx/sbin/nginx"
test -d "%{buildroot}/usr/local/nginx/conf" || mkdir -p "%{buildroot}/usr/local/nginx/conf"
cp /root/rpmbuild/BUILD/nginx-1.2.7/conf/koi-win "%{buildroot}/usr/local/nginx/conf"
cp /root/rpmbuild/BUILD/nginx-1.2.7/conf/koi-utf "%{buildroot}/usr/local/nginx/conf"
cp /root/rpmbuild/BUILD/nginx-1.2.7/conf/win-utf "%{buildroot}/usr/local/nginx/conf"
test -f "%{buildroot}/usr/local/nginx/conf/mime.types" || cp /root/rpmbuild/BUILD/nginx-1.2.7/conf/mime.types "%{buildroot}/usr/local/nginx/conf"
cp /root/rpmbuild/BUILD/nginx-1.2.7/conf/mime.types "%{buildroot}/usr/local/nginx/conf/mime.types.default"
test -f "%{buildroot}/usr/local/nginx/conf/fastcgi_params" || cp /root/rpmbuild/BUILD/nginx-1.2.7/conf/fastcgi_params "%{buildroot}/usr/local/nginx/conf"
cp /root/rpmbuild/BUILD/nginx-1.2.7/conf/fastcgi_params "%{buildroot}/usr/local/nginx/conf/fastcgi_params.default"
test -f "%{buildroot}/usr/local/nginx/conf/fastcgi.conf" || cp /root/rpmbuild/BUILD/nginx-1.2.7/conf/fastcgi.conf "%{buildroot}/usr/local/nginx/conf"
cp /root/rpmbuild/BUILD/nginx-1.2.7/conf/fastcgi.conf "%{buildroot}/usr/local/nginx/conf/fastcgi.conf.default"
test -f "%{buildroot}/usr/local/nginx/conf/uwsgi_params" || cp /root/rpmbuild/BUILD/nginx-1.2.7/conf/uwsgi_params "%{buildroot}/usr/local/nginx/conf"
cp /root/rpmbuild/BUILD/nginx-1.2.7/conf/uwsgi_params "%{buildroot}/usr/local/nginx/conf/uwsgi_params.default"
test -f "%{buildroot}/usr/local/nginx/conf/scgi_params" || cp /root/rpmbuild/BUILD/nginx-1.2.7/conf/scgi_params "%{buildroot}/usr/local/nginx/conf"
cp /root/rpmbuild/BUILD/nginx-1.2.7/conf/scgi_params "%{buildroot}/usr/local/nginx/conf/scgi_params.default"
test -f "%{buildroot}/usr/local/nginx/conf/nginx.conf" || cp /root/rpmbuild/BUILD/nginx-1.2.7/conf/nginx.conf "%{buildroot}/usr/local/nginx/conf/nginx.conf"
cp /root/rpmbuild/BUILD/nginx-1.2.7/conf/nginx.conf "%{buildroot}/usr/local/nginx/conf/nginx.conf.default"
test -d "/var/run/nginx" || mkdir -p "/var/run/nginx"
test -d "%{buildroot}/usr/local/nginx/logs" || mkdir -p "%{buildroot}/usr/local/nginx/logs"
test -d "%{buildroot}/usr/local/nginx/html" || cp -R /root/rpmbuild/BUILD/nginx-1.2.7/html "%{buildroot}/usr/local/nginx"
test -d "%{buildroot}/usr/local/nginx/logs" || mkdir -p "%{buildroot}/usr/local/nginx/logs"
cp /root/rpmbuild/BUILD/nginx "%{buildroot}/usr/local/nginx/conf/nginx"
cp /root/rpmbuild/BUILD/nginx.conf "%{buildroot}/usr/local/nginx/conf/nginx.conf.pre"
cp /root/rpmbuild/BUILD/nginx_logrotate "%{buildroot}/usr/local/nginx/conf/nginx_logrotate"

该段由make install执行过程中得出

%post
cp /usr/local/nginx/conf/nginx /etc/rc.d/init.d/nginx > /dev/null 2>&1
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak > /dev/null 2>&1
cp /usr/local/nginx/conf/nginx.conf.pre /usr/local/nginx/conf/nginx.conf > /dev/null 2>&1
cp /usr/local/nginx/conf/nginx_logrotate /etc/logrotate.d/nginx > /dev/null 2>&1
chmod a+x /etc/logrotate.d/nginx > /dev/null 2>&1
chmod a+x /etc/rc.d/init.d/nginx > /dev/null 2>&1
chkconfig --add nginx
chkconfig nginx on
/etc/init.d/nginx start

%preun
if ps aux | grep "nginx" | grep -v grep > /dev/null; then
        pkill nginx > /dev/null
fi
chkconfig --del nginx

%postun
userdel www
rm -rf /etc/rc.d/init.d/nginx
rm -rf /etc/logrotate.d/nginx

%clean
rm -rf %{buildroot}
%files
/usr/local/nginx/conf/fastcgi.conf
   /usr/local/nginx/conf/fastcgi.conf.default
   /usr/local/nginx/conf/fastcgi_params
   /usr/local/nginx/conf/fastcgi_params.default
   /usr/local/nginx/conf/koi-utf
   /usr/local/nginx/conf/koi-win
   /usr/local/nginx/conf/mime.types
   /usr/local/nginx/conf/mime.types.default
   /usr/local/nginx/conf/nginx.conf
   /usr/local/nginx/conf/nginx.conf.default
   /usr/local/nginx/conf/scgi_params
   /usr/local/nginx/conf/scgi_params.default
   /usr/local/nginx/conf/uwsgi_params
   /usr/local/nginx/conf/uwsgi_params.default
   /usr/local/nginx/conf/win-utf
   /usr/local/nginx/html/50x.html
   /usr/local/nginx/html/index.html
   /usr/local/nginx/sbin/nginx
   /usr/lib64/perl5/perllocal.pod
   /usr/local/lib64/perl5/auto/nginx/.packlist
   /usr/local/lib64/perl5/auto/nginx/nginx.bs
   /usr/local/lib64/perl5/auto/nginx/nginx.so
   /usr/local/lib64/perl5/nginx.pm
   /usr/local/nginx/sbin/nginx.old
   /usr/local/share/man/man3/nginx.3pm
   /usr/local/nginx/conf/nginx.conf.pre
   /usr/local/nginx/conf/nginx_logrotate
   /usr/local/nginx/conf/nginx
  #这些是执行rpmbuild -bb 之后提示缺少的文件添加在此处
%defattr(-,root,root,-)
%doc
%dir /usr/local/nginx/logs
%dir /var/run/nginx

%changelog
### 如何将 Nginx 打包为可分发文件或安装包 为了实现 Nginx打包并使其成为可分发的文件或安装包,可以采用多种方式完成此目标。以下是几种常见的方法及其具体操作: #### 方法一:通过 ZIP 或 TAR 压缩文件形式分发 如果仅需简单地将 Nginx 文件夹作为压缩包提供给其他用户,则可以直接将其压缩成 `.zip` 或 `.tar.gz` 格式的文件。 1. 将已解压好的 Nginx 安装目录复制到指定位置。 2. 使用命令行工具对其进行压缩处理: ```bash tar -czvf nginx-package.tar.gz /path/to/nginx/ ``` 上述命令会生成名为 `nginx-package.tar.gz` 的压缩包[^1]。 #### 方法二:利用 Docker 镜像封装 Nginx Docker 是一种流行的容器化技术,能够轻松创建包含应用程序运行所需全部依赖项的环境。下面是一个简单的例子展示如何构建一个基于 BusyBox 的自定义镜像来部署 Nginx。 编写 Dockerfile 文件内容如下: ```dockerfile FROM busybox:latest MAINTAINER "Your Name <your-email@example.com>" ENV NGINX_FILE=http://example.com/path-to-nginx-file/nginx-version.tar.gz ADD ${NGINX_FILE} /usr/src/ RUN cd /usr/src && \ tar zxf nginx-version.tar.gz && \ rm nginx-version.tar.gz && \ mv nginx-version/* . && \ rmdir nginx-version EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` 在此基础上执行以下指令即可制作出最终版本号固定的镜像供他人下载使用[^2]: ```bash docker build -t my-custom-nginx . docker save -o custom_nginx_image.tar my-custom-nginx ``` #### 方法三:在 Linux 发行版上制作 RPM/DEB 软件包 对于 RedHat/CentOS/Fedora 类型的操作系统来说,通常会选择 RPM 包管理器;而对于 Debian/Ubuntu 则更倾向于 DEB 方式来进行软件安装卸载工作流程自动化脚本开发实践教程系列文章之一——《Linux 下手工打造自己的第一个RPM》就详细介绍了整个过程中的每一个环节需要注意哪些事项以及解决办法等等[^3]. 以上三种方案各有优劣之处,在实际应用过程中可以根据具体情况灵活选用最适合的一种或者组合起来一起运用从而达到最佳效果!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值