nginx打包rpm,nginxrpm
安裝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
%installmake install DESTDIR=%{buildroot}
make -f /root/rpmbuild/BUILD/nginx-1.2.7/objs/Makefile installcd /root/rpmbuild/BUILD/nginx-1.2.7/objs/src/http/modules/perl && make installtest -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執行過程中得出
%postcp /usr/local/nginx/conf/nginx /etc/rc.d/init.d/nginx > /dev/null 2>&1cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak > /dev/null 2>&1cp /usr/local/nginx/conf/nginx.conf.pre /usr/local/nginx/conf/nginx.conf > /dev/null 2>&1cp /usr/local/nginx/conf/nginx_logrotate /etc/logrotate.d/nginx > /dev/null 2>&1chmod a+x /etc/logrotate.d/nginx > /dev/null 2>&1chmod a+x /etc/rc.d/init.d/nginx > /dev/null 2>&1chkconfig --add nginxchkconfig nginx on/etc/init.d/nginx start
%preunif ps aux | grep "nginx" | grep -v grep > /dev/null; then pkill nginx > /dev/nullfichkconfig --del nginx
%postunuserdel wwwrm -rf /etc/rc.d/init.d/nginxrm -rf /etc/logrotate.d/nginx
%cleanrm -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是通過rpm方式安裝的(非編譯安裝),可以添加?
這個應該是很難的,並且rpm包的nginx一般都是紅帽修改過的nginx,並非社區的nginx。因此,一般不建議使用rpm安裝nginx,而是採用手動編譯的方式,這樣方便日後nginx的擴充。如果實在是向增加,有一種方法可以試試:
運行./nginx -V 看下nginx的編譯選項,然後下載nginx源碼,增加擴充後以該編譯選項重新編譯一下nginx,停止老的nginx,然後用新編譯的nginx替換之前的nginx二進位檔案,重啟nginx即可。
教怎製作 LINUX的RPM包
試試RPMBuilder吧,開源C++的,基於Linux。很easy:
>rpmbuilder # 執行第一次是為了產生RPMBuilder.xml設定檔
>vi RPMBuilder.xml # 簡單配置一下
>rpmbuilder # 開始打包
搞定!
去下邊的link去下載rpm包,安裝,直接用~
Links:
sourceforge.net/...1.0.1/