X-Git-Url: https://git.pld-linux.org/?a=blobdiff_plain;f=nginx.spec;h=e878939c058942ec514070b4d728d6f8f467d84d;hb=924400caa957d83ab7d2899775b761d54567c86d;hp=77f211322e1db7532ad81c5ac48f2894e404f04b;hpb=78ac4e4ed1c67ef11e9e05e1b96afd901ff08343;p=packages%2Fnginx.git diff --git a/nginx.spec b/nginx.spec index 77f2113..e878939 100644 --- a/nginx.spec +++ b/nginx.spec @@ -3,141 +3,170 @@ # - missing perl build/install requires # # Conditional build for nginx: -%bcond_without light # don't build light version +# Features +%bcond_with debug # enable debug logging: http://nginx.org/en/docs/debugging_log.html +%bcond_without threads # thread pool support +# Modules +%bcond_without addition # http addition module +%bcond_without auth_request # auth_request module +%bcond_without dav # WebDAV +%bcond_without flv # http FLV module +%bcond_without gd # without http image filter module +%bcond_without geoip # without http geoip module and stream geoip module +%bcond_without http2 # HTTP/2 module %bcond_without mail # don't build imap/mail proxy %bcond_without perl # don't build with perl module -%bcond_without addition # adds module -%bcond_without dav # WebDAV -%bcond_without flv # FLV stream -%bcond_without ipv6 # build without ipv6 support -%bcond_without sub # ngx_http_sub_module -%bcond_without poll # poll +%bcond_without poll # poll module %bcond_without realip # real ip (behind proxy) -%bcond_without rtsig # rtsig -%bcond_without select # select -%bcond_without spdy # spdy module -%bcond_without status # stats module -%bcond_without ssl # ssl support -%bcond_with http_browser # header "User-agent" parser +%bcond_without select # select module +%bcond_without ssl # ssl support and http ssl module +%bcond_without stream # TCP/UDP proxy module +%bcond_without stub_status # http stub status module +%bcond_without sub # ngx_http_sub_module +%bcond_without xslt # without http xslt module +%bcond_with http_browser # http browser module (header "User-agent" parser) +%bcond_with modsecurity # modsecurity module %bcond_with rtmp # rtmp support -%bcond_with threads # thread pool support -%bcond_with debug # build with debug enabled: http://nginx.org/en/docs/debugging_log.html -%bcond_without auth_request # auth_request module +%bcond_without vts # virtual host traffic status module %ifarch x32 %undefine with_rtsig %endif -%define rtmp_version 1.1.7 +%define ssl_version 1.0.2 +%define rtmp_version 1.2.1 +%define vts_version 0.1.18 +%define modsecurity_version 2.9.2 Summary: High perfomance HTTP and reverse proxy server Summary(pl.UTF-8): Serwer HTTP i odwrotne proxy o wysokiej wydajności # nginx lines: # - stable: production quality with stable API # - mainline: production quality but API can change Name: nginx -Version: 1.8.0 -Release: 2 +Version: 1.15.9 +Release: 3 License: BSD-like Group: Networking/Daemons/HTTP Source0: http://nginx.org/download/%{name}-%{version}.tar.gz -# Source0-md5: 3ca4a37931e9fa301964b8ce889da8cb +# Source0-md5: 00dde20d4d2cc65bdaf8950a5bd3e14b Source1: http://nginx.net/favicon.ico # Source1-md5: 2aaf2115c752cbdbfb8a2f0b3c3189ab Source2: proxy.conf Source3: %{name}.logrotate Source4: %{name}.mime -Source5: %{name}-light.conf -Source6: %{name}-light.monitrc +Source6: %{name}.monitrc Source7: %{name}.init -Source8: %{name}-mail.conf -Source9: %{name}-mail.monitrc -Source11: %{name}-perl.conf -Source12: %{name}-perl.monitrc -Source14: %{name}-standard.conf -Source15: %{name}-standard.monitrc +Source14: %{name}.conf Source17: %{name}-mime.types.sh -Source18: %{name}-standard.service -Source19: %{name}-light.service -Source20: %{name}-perl.service -Source21: %{name}-mail.service -Source101: https://github.com/arut/nginx-rtmp-module/archive/v%{rtmp_version}/nginx-rtmp-module-%{rtmp_version}.tar.gz -# Source101-md5: 8006de2560db3e55bb15d110220076ac +Source18: %{name}.service +Source22: http://www.modsecurity.org/tarball/%{modsecurity_version}/modsecurity-%{modsecurity_version}.tar.gz +# Source22-md5: 4d9454efb19269c4288ae408ea438b76 +Source101: https://github.com/arut/nginx-rtmp-module/archive/v%{rtmp_version}/%{name}-rtmp-module-%{rtmp_version}.tar.gz +# Source101-md5: 639ac2b78103adaccbcfe484a92acf44 +Source102: https://github.com/vozlt/nginx-module-vts/archive/v%{vts_version}.tar.gz +# Source102-md5: 409a10dbd85e0b807cc77eecec29a3b5 Patch0: %{name}-no-Werror.patch -URL: http://nginx.net/ +Patch1: %{name}-modsecurity-xheaders.patch +URL: http://nginx.org/ BuildRequires: mailcap -BuildRequires: openssl-devel BuildRequires: pcre-devel -%{?with_perl:BuildRequires: perl-CGI} -%{?with_perl:BuildRequires: perl-devel} -%{?with_perl:BuildRequires: python} -%{?with_perl:BuildRequires: rpm-perlprov} BuildRequires: rpmbuild(macros) >= 1.644 BuildRequires: zlib-devel -BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) - -%define _sysconfdir /etc/%{name} -%define _nginxdir /home/services/%{name} - -%description -nginx ("engine x") is a high-performance HTTP server and reverse -proxy, as well as an IMAP/POP3 proxy server. nginx was written by Igor -Sysoev for Rambler.ru, Russia's second-most visited website, where it -has been running in production for over two and a half years. Igor has -released the source code under a BSD-like license. Although still in -beta, nginx is known for its stability, rich feature set, simple -configuration, and low resource consumption. - -%description -l pl.UTF-8 -nginx ("engine x") jest wysokowydajnym serwerem HTTP, odwrotnym proxy -a także IMAP/POP3 proxy. nginx został napisany przez Igora Sysoeva na -potrzeby serwisu Rambler.ru. Jest to drugi pod względem ilości -odwiedzin serwis w Rosji i działa od ponad dwóch i pół roku. Igor -opublikował źródła na licencji BSD. Mimo, że projekt jest ciągle w -fazie beta, już zasłynął dzięki stabilności, bogactwu dodatków, -prostej konfiguracji oraz małej "zasobożerności". - -%package common -Summary: nginx - common files -Summary(pl.UTF-8): nginx - pliki wspólne -Group: Networking/Daemons/HTTP +%if %{with geoip} +BuildRequires: GeoIP-devel +%endif +%if %{with gd} +BuildRequires: gd-devel +%endif +%if %{with modsecurity} +BuildRequires: lua-devel +%endif +%if %{with perl} +BuildRequires: perl-CGI +BuildRequires: perl-devel +BuildRequires: python +BuildRequires: rpm-perlprov +%endif +%if %{with ssl} +BuildRequires: openssl-devel >= %{ssl_version} +Requires: openssl >= %{ssl_version} +%endif +%if %{with xslt} +BuildRequires: libxslt-devel +%endif +Provides: group(http) +Provides: group(nginx) +Provides: user(nginx) +Provides: webserver +Provides: webserver(access) +Provides: webserver(alias) +Provides: webserver(auth) +Provides: webserver(expires) +Provides: webserver(headers) +Provides: webserver(indexfile) +Provides: webserver(log) +Provides: webserver(mime) +Provides: webserver(reqtimeout) +Provides: webserver(rewrite) +Provides: webserver(setenv) +Conflicts: logrotate < 3.8.0 +Requires(post,preun): /sbin/chkconfig +Requires(post,preun,postun): systemd-units >= 38 Requires(postun): /usr/sbin/groupdel Requires(postun): /usr/sbin/userdel Requires(pre): /bin/id Requires(pre): /usr/bin/getgid Requires(pre): /usr/sbin/groupadd Requires(pre): /usr/sbin/useradd -Requires: openssl -Requires: pcre Requires: rc-scripts >= 0.2.0 Requires: systemd-units >= 38 -Requires: zlib -Provides: group(http) -Provides: group(nginx) -Provides: user(nginx) -Provides: webserver -Obsoletes: nginx < 1.4.1-4.1 -Conflicts: logrotate < 3.8.0 +Suggests: vim-syntax-nginx +Obsoletes: nginx-common < 1.13.3 +Obsoletes: nginx-light < 1.13.3 +Obsoletes: nginx-standard < 1.13.3 +Conflicts: rpm < 4.4.2-0.2 +BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) + +%define _sysconfdir /etc/%{name} +%define _nginxdir /home/services/%{name} -%description common -Common files for the nginx daemon. +# minimizing restarts logics. we restart webserver: +# +# 1. at the end of transaction. (posttrans, feature from rpm 4.4.2) +# 2. first install of module (post: $1 = 1) +# 2. uninstall of module (postun: $1 == 0) +# +# the strict internal deps between modules and +# main package are very important for all this to work. -%description common -l pl.UTF-8 -Niezbędne pliki dla nginx. +# restart webserver at the end of transaction -%package light -Summary: High perfomance HTTP and reverse proxy server -Summary(pl.UTF-8): Serwer HTTP i odwrotne proxy o wysokiej wydajności -Group: Networking/Daemons/HTTP -Requires(post,preun): /sbin/chkconfig -Requires(post,preun,postun): systemd-units >= 38 -Requires: %{name}-common = %{version}-%{release} -Requires: openssl -Requires: pcre -Requires: zlib -Provides: nginx-daemon -Provides: webserver +%define restart_webserver \ + %systemd_post %{name}.service \ + %service %{name} force-reload \ + %{nil} + +# macro called at module post scriptlet +%define module_post \ +if [ "$1" = "1" ]; then \ + %restart_webserver \ +fi -%description light +# macro called at module postun scriptlet +%define module_postun \ +if [ "$1" = "0" ]; then \ + %restart_webserver \ +fi + +# it's sooo annoying to write them +%define module_scripts() \ +%post %1 \ +%module_post \ +\ +%postun %1 \ +%module_postun + +%description nginx ("engine x") is a high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server. nginx was written by Igor Sysoev for Rambler.ru, Russia's second-most visited website, where it @@ -146,10 +175,7 @@ released the source code under a BSD-like license. Although still in beta, nginx is known for its stability, rich feature set, simple configuration, and low resource consumption. -The smallest, but also the fastest nginx edition. No additional -modules, no Perl, no DAV, no FLV, no IMAP, POP3, SMTP proxy. - -%description light -l pl.UTF-8 +%description -l pl.UTF-8 nginx ("engine x") jest wysokowydajnym serwerem HTTP, odwrotnym proxy a także IMAP/POP3 proxy. nginx został napisany przez Igora Sysoeva na potrzeby serwisu Rambler.ru. Jest to drugi pod względem ilości @@ -158,125 +184,70 @@ opublikował źródła na licencji BSD. Mimo, że projekt jest ciągle w fazie beta, już zasłynął dzięki stabilności, bogactwu dodatków, prostej konfiguracji oraz małej "zasobożerności". -Najmniejsza i najszybsza wersja nginx. Bez wsparcia dla Perla, DAV, -FLV oraz IMAP, POP3, SMTP proxy. +%package mod_http_geoip +Summary: Nginx HTTP geoip module +Group: Daemons +Requires: %{name} = %{version}-%{release} +Requires: GeoIP -%package perl -Summary: High perfomance HTTP and reverse proxy server -Summary(pl.UTF-8): Serwer HTTP i odwrotne proxy o wysokiej wydajności -Group: Networking/Daemons/HTTP -Requires(post,preun): /sbin/chkconfig -Requires(post,preun,postun): systemd-units >= 38 -Requires: %{name}-common = %{version}-%{release} -Requires: openssl -Provides: nginx-daemon -Provides: webserver +%description mod_http_geoip +Nginx HTTP geoip module. -%description perl -nginx ("engine x") is a high-performance HTTP server and reverse -proxy, as well as an IMAP/POP3 proxy server. nginx was written by Igor -Sysoev for Rambler.ru, Russia's second-most visited website, where it -has been running in production for over two and a half years. Igor has -released the source code under a BSD-like license. Although still in -beta, nginx is known for its stability, rich feature set, simple -configuration, and low resource consumption. +%package mod_stream_geoip +Summary: Nginx stream geoip module +Group: Daemons +Requires: %{name} = %{version}-%{release} +Requires: %{name}-mod_stream = %{version}-%{release} +Requires: GeoIP -nginx with Perl support. Mail modules not included. +%description mod_stream_geoip +Nginx stream geoip module. -%description perl -l pl.UTF-8 -nginx ("engine x") jest wysokowydajnym serwerem HTTP, odwrotnym proxy -a także IMAP/POP3 proxy. nginx został napisany przez Igora Sysoeva na -potrzeby serwisu Rambler.ru. Jest to drugi pod względem ilości -odwiedzin serwis w Rosji i działa od ponad dwóch i pół roku. Igor -opublikował źródła na licencji BSD. Mimo, że projekt jest ciągle w -fazie beta, już zasłynął dzięki stabilności, bogactwu dodatków, -prostej konfiguracji oraz małej "zasobożerności". +%package mod_http_image_filter +Summary: Nginx HTTP image filter module +Group: Daemons +Requires: %{name} = %{version}-%{release} -nginx z obsługą Perla. Bez wsparcia dla modułów poczty. +%description mod_http_image_filter +Nginx HTTP image filter module. -%package mail -Summary: High perfomance IMAP, POP3, SMTP proxy server -Summary(pl.UTF-8): IMAP, POP3, SMTP proxy o wysokiej wydajności +%package mod_http_perl +Summary: Nginx HTTP Perl module Group: Networking/Daemons/HTTP -Requires(post,preun): /sbin/chkconfig -Requires(post,preun,postun): systemd-units >= 38 -Requires: %{name}-common = %{version}-%{release} -Requires: openssl -Requires: pcre -Requires: zlib -Provides: nginx-daemon +Requires: %{name} = %{version}-%{release} -%description mail -nginx ("engine x") is a high-performance HTTP server and reverse -proxy, as well as an IMAP/POP3 proxy server. nginx was written by Igor -Sysoev for Rambler.ru, Russia's second-most visited website, where it -has been running in production for over two and a half years. Igor has -released the source code under a BSD-like license. Although still in -beta, nginx is known for its stability, rich feature set, simple -configuration, and low resource consumption. +%description mod_http_perl +Nginx HTTP Perl module. -nginx with mail support. Only mail modules included. +%package mod_http_xslt_filter +Summary: Nginx XSLT module +Group: Daemons +Requires: %{name} = %{version}-%{release} -%description mail -l pl.UTF-8 -nginx ("engine x") jest wysokowydajnym serwerem HTTP, odwrotnym proxy -a także IMAP/POP3 proxy. nginx został napisany przez Igora Sysoeva na -potrzeby serwisu Rambler.ru. Jest to drugi pod względem ilości -odwiedzin serwis w Rosji i działa od ponad dwóch i pół roku. Igor -opublikował źródła na licencji BSD. Mimo, że projekt jest ciągle w -fazie beta, już zasłynął dzięki stabilności, bogactwu dodatków, -prostej konfiguracji oraz małej "zasobożerności". - -nginx ze wsparciem tylko dla modułów poczty. +%description mod_http_xslt_filter +Nginx XSLT module. -%package standard -Summary: High perfomance HTTP and reverse proxy server -Summary(pl.UTF-8): Serwer HTTP i odwrotne proxy o wysokiej wydajności +%package mod_mail +Summary: Nginx mail module Group: Networking/Daemons/HTTP -Requires(post,preun): /sbin/chkconfig -Requires(post,preun,postun): systemd-units >= 38 -Requires: %{name}-common = %{version}-%{release} -Requires: openssl -Provides: nginx -Provides: nginx-daemon -Conflicts: logrotate < 3.7-4 +Requires: %{name} = %{version}-%{release} -%description standard -nginx ("engine x") is a high-performance HTTP server and reverse -proxy, as well as an IMAP/POP3 proxy server. nginx was written by Igor -Sysoev for Rambler.ru, Russia's second-most visited website, where it -has been running in production for over two and a half years. Igor has -released the source code under a BSD-like license. Although still in -beta, nginx is known for its stability, rich feature set, simple -configuration, and low resource consumption. +%description mod_mail +Nginx mail module. -This is standard nginx version, without Perl support and IMAP, POP3, -SMTP proxy. +%package mod_stream +Summary: Nginx stream modules +Group: Daemons +Requires: %{name} = %{version}-%{release} -%description standard -l pl.UTF-8 -nginx ("engine x") jest wysokowydajnym serwerem HTTP, odwrotnym proxy -a także IMAP/POP3 proxy. nginx został napisany przez Igora Sysoeva na -potrzeby serwisu Rambler.ru. Jest to drugi pod względem ilości -odwiedzin serwis w Rosji i działa od ponad dwóch i pół roku. Igor -opublikował źródła na licencji BSD. Mimo, że projekt jest ciągle w -fazie beta, już zasłynął dzięki stabilności, bogactwu dodatków, -prostej konfiguracji oraz małej "zasobożerności". ginx ("engine x") -jest wysokowydajnym serwerem HTTP, odwrotnym proxy a także IMAP/POP3 -proxy. nginx został napisany przez Igora Sysoeva na potrzeby serwisu -Rambler.ru. Jest to drugi pod względem ilości odwiedzin serwis w Rosji -i działa od ponad dwóch i pół roku. Igor opublikował źródła na -licencji BSD. Mimo, że projekt jest ciągle w fazie beta, już zasłynął -dzięki stabilności, bogactwu dodatków, prostej konfiguracji oraz małej -"zasobożerności". - -To jest standardowa wersja nginx, bez obsługi Perla oraz proxy dla -IMAP, POP3, SMTP. +%description mod_stream +Nginx stream modules. %package -n monit-rc-nginx Summary: nginx support for monit Summary(pl.UTF-8): Wsparcie nginx dla monit Group: Applications/System -URL: http://nginx.eu/ -Requires: %{name}-common = %{version}-%{release} +Requires: %{name} = %{version}-%{release} Requires: monit %description -n monit-rc-nginx @@ -286,13 +257,18 @@ monitrc file for monitoring nginx webserver. Plik monitrc do monitorowania serwera WWW nginx. %prep -%setup -q %{?with_rtmp:-a101} +%setup -q %{?with_rtmp:-a101} %{?with_modsecurity:-a22} %{?with_vts:-a102} %patch0 -p0 +%{?with_modsecurity:%patch1 -p0} %if %{with rtmp} mv nginx-rtmp-module-%{rtmp_version} nginx-rtmp-module %endif +%if %{with vts} +mv nginx-module-vts-%{vts_version} nginx-vts-module +%endif + # build mime.types.conf #sh %{SOURCE17} /etc/mime.types @@ -300,401 +276,267 @@ mv nginx-rtmp-module-%{rtmp_version} nginx-rtmp-module # NB: not autoconf generated configure cp -f configure auto/ -install -d bin - -# build with common options -build() { - local type=$1; shift ./configure \ --prefix=%{_prefix} \ - --sbin-path=%{_sbindir}/%{name}-$type \ - --conf-path=%{_sysconfdir}/%{name}-$type.conf \ - --error-log-path=%{_localstatedir}/log/%{name}/%{name}-${type}_error.log \ - --http-log-path=%{_localstatedir}/log/%{name}/%{name}-${type}_access.log \ - --pid-path=%{_localstatedir}/run/%{name}-$type.pid \ - --lock-path=%{_localstatedir}/lock/subsys/%{name}-$type \ - --http-client-body-temp-path=%{_localstatedir}/cache/%{name}-$type/client_body_temp \ - --http-fastcgi-temp-path=%{_localstatedir}/cache/%{name}-$type/fastcgi_temp \ - --http-proxy-temp-path=%{_localstatedir}/cache/%{name}-$type/proxy_temp \ + --modules-path=%{_libdir}/%{name}/modules \ + --sbin-path=%{_sbindir}/%{name} \ + --conf-path=%{_sysconfdir}/%{name}.conf \ + --error-log-path=%{_localstatedir}/log/%{name}/error.log \ + --http-log-path=%{_localstatedir}/log/%{name}/access.log \ + --pid-path=%{_localstatedir}/run/%{name}.pid \ + --lock-path=%{_localstatedir}/lock/subsys/%{name} \ + --http-client-body-temp-path=%{_localstatedir}/cache/%{name}/client_body_temp \ + --http-fastcgi-temp-path=%{_localstatedir}/cache/%{name}/fastcgi_temp \ + --http-proxy-temp-path=%{_localstatedir}/cache/%{name}/proxy_temp \ + --http-uwsgi-temp-path=%{_localstatedir}/cache/%{name}/uwsgi_temp \ + --http-scgi-temp-path=%{_localstatedir}/cache/%{name}/scgi_temp \ --user=nginx \ --group=nginx \ - --with-cc="%{__cc}" \ - --with-cc-opt="%{rpmcflags}" \ - --with-ld-opt="%{rpmldflags}" \ - %{?with_debug:--with-debug} \ - "$@" -%{__make} -} - -%if %{with perl} -build perl \ - --with-http_perl_module \ - --without-mail_pop3_module \ - --without-mail_imap_module \ - --without-mail_smtp_module \ - %{?with_addition:--with-http_addition_module} \ - %{?with_dav:--with-http_dav_module} \ - %{?with_flv:--with-http_flv_module} \ - %{?with_ipv6:--with-ipv6} \ - %{?with_sub:--with-http_sub_module} \ + %{?with_select:--with-select_module} \ %{?with_poll:--with-poll_module} \ - %{?with_realip:--with-http_realip_module} \ %{?with_rtsig:--with-rtsig_module} \ - %{?with_select:--with-select_module} \ - %{?with_status:--with-http_stub_status_module} \ - %{?with_ssl:--with-http_ssl_module} \ - %{!?with_http_browser:--without-http_browser_module} \ - %{?with_rtmp:--add-module=./nginx-rtmp-module} \ - %{?with_auth_request:--with-http_auth_request_module} \ - %{?with_threads:--with-threads} \ - %{?with_spdy:--with-http_spdy_module} \ - --with-http_secure_link_module \ - %{nil} - -mv -f objs/nginx bin/nginx-perl -mv -f objs/src/http/modules/perl/blib/arch/auto/nginx/nginx.so bin/nginx.so -mv -f objs/src/http/modules/perl/nginx.pm bin/nginx.pm -%endif - + %{?with_perl:--with-http_perl_module=dynamic} \ + %{?with_gd:--with-http_image_filter_module=dynamic} \ + %{?with_xslt:--with-http_xslt_module=dynamic} \ + %{?with_geoip:--with-http_geoip_module=dynamic} \ + %{?with_geoip:--with-stream_geoip_module=dynamic} \ %if %{with mail} -build mail \ - --with-imap \ - --with-mail \ + --with-mail=dynamic \ --with-mail_ssl_module \ - --without-http \ - %{?with_ipv6:--with-ipv6} \ - %{?with_poll:--with-poll_module} \ - %{?with_rtsig:--with-rtsig_module} \ - %{?with_select:--with-select_module} \ - %{nil} - -mv -f objs/nginx bin/nginx-mail %endif - -%if %{with light} -build light \ - %{?with_ipv6:--with-ipv6} \ - %{?with_poll:--with-poll_module} \ - %{?with_realip:--with-http_realip_module} \ - %{?with_rtsig:--with-rtsig_module} \ - %{?with_select:--with-select_module} \ - %{?with_status:--with-http_stub_status_module} \ - %{?with_ssl:--with-http_ssl_module} \ - %{?with_rtmp:--add-module=./nginx-rtmp-module} \ - %{?with_auth_request:--with-http_auth_request_module} \ - %{?with_threads:--with-threads} \ - %{?with_spdy:--with-http_spdy_module} \ - --without-http_browser_module \ - --without-mail_pop3_module \ - --without-mail_imap_module \ - --without-mail_smtp_module \ - --with-http_secure_link_module \ - %{nil} - -mv -f objs/nginx bin/nginx-light +%if %{with stream} + --with-stream=dynamic \ + --with-stream_ssl_module \ %endif - -build standard \ + --with-cc="%{__cc}" \ + --with-cc-opt="%{rpmcflags}" \ + --with-ld-opt="%{rpmldflags}" \ + %{?with_debug:--with-debug} \ %{?with_addition:--with-http_addition_module} \ %{?with_dav:--with-http_dav_module} \ %{?with_flv:--with-http_flv_module} \ - %{?with_ipv6:--with-ipv6} \ %{?with_sub:--with-http_sub_module} \ - %{?with_poll:--with-poll_module} \ %{?with_realip:--with-http_realip_module} \ - %{?with_rtsig:--with-rtsig_module} \ - %{?with_select:--with-select_module} \ - %{?with_status:--with-http_stub_status_module} \ + %{?with_stub_status:--with-http_stub_status_module} \ %{?with_ssl:--with-http_ssl_module} \ %{!?with_http_browser:--without-http_browser_module} \ %{?with_rtmp:--add-module=./nginx-rtmp-module} \ + %{?with_vts:--add-module=./nginx-vts-module} \ %{?with_auth_request:--with-http_auth_request_module} \ %{?with_threads:--with-threads} \ + %{?with_http2:--with-http_v2_module} \ + %{?with_modsecurity:--add-module=modsecurity-%{modsecurity_version}/nginx/modsecurity} \ --with-http_secure_link_module \ %{nil} -mv -f objs/%{name} bin/%{name}-standard +%{__make} + +%if %{with modsecurity} +cd modsecurity-%{modsecurity_version} +./autogen.sh +%configure \ + --enable-standalone-module \ + --disable-mlogc \ + --enable-alp2 \ + --with-lua=/usr +%{__make} +cd .. +%endif %install rm -rf $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT/etc/rc.d/init.d \ $RPM_BUILD_ROOT%{_nginxdir}/{cgi-bin,html,errors} \ $RPM_BUILD_ROOT%{_localstatedir}/log/{%{name},archive/%{name}} \ - $RPM_BUILD_ROOT%{_localstatedir}/cache/{%{name}-standard,%{name}-perl,%{name}-mail,%{name}-light} \ - $RPM_BUILD_ROOT%{_localstatedir}/lock/subsys/{%{name}-standard,%{name}-perl,%{name}-mail,%{name}-light} \ - $RPM_BUILD_ROOT{%{_sbindir},%{_sysconfdir}/{vhosts,webapps}.d} \ + $RPM_BUILD_ROOT%{_localstatedir}/cache/%{name} \ + $RPM_BUILD_ROOT%{_localstatedir}/lock/subsys/%{name} \ + $RPM_BUILD_ROOT{%{_sbindir},%{_sysconfdir}/{conf,modules,vhosts,webapps}.d} \ + $RPM_BUILD_ROOT%{_sysconfdir}/snippets \ $RPM_BUILD_ROOT/etc/{logrotate.d,monit} \ $RPM_BUILD_ROOT{%{systemdunitdir},/etc/systemd/system} -cp -p conf/*_params $RPM_BUILD_ROOT%{_sysconfdir} -cp -p conf/koi-utf $RPM_BUILD_ROOT%{_sysconfdir}/koi-utf -cp -p conf/koi-win $RPM_BUILD_ROOT%{_sysconfdir}/koi-win -cp -p conf/win-utf $RPM_BUILD_ROOT%{_sysconfdir}/win-utf +%{__make} install \ + INSTALLDIRS=vendor \ + DESTDIR=$RPM_BUILD_ROOT + +%{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/*.default + +cp -p %{_sourcedir}/%{name}.conf $RPM_BUILD_ROOT%{_sysconfdir} +cp -p %{_sourcedir}/%{name}.service $RPM_BUILD_ROOT%{systemdunitdir} +cp -p %{_sourcedir}/%{name}.monitrc $RPM_BUILD_ROOT/etc/monit +install -p %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name} + +cp -p %{SOURCE3} $RPM_BUILD_ROOT/etc/logrotate.d/%{name} +cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/proxy.conf +cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/mime.types +rm -r $RPM_BUILD_ROOT%{_prefix}/html cp -p html/index.html $RPM_BUILD_ROOT%{_nginxdir}/html cp -p html/50x.html $RPM_BUILD_ROOT%{_nginxdir}/errors cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_nginxdir}/html/favicon.ico -cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/proxy.conf -cp -p %{SOURCE3} $RPM_BUILD_ROOT/etc/logrotate.d/%{name} -cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/mime.types -cp -p %{SOURCE14} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}-standard.conf -cp -p %{SOURCE15} $RPM_BUILD_ROOT/etc/monit/%{name}-standard.monitrc -install -p %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-standard -%{__sed} -i -e 's/@flavor@/standard/g' $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-standard -cp -p %{SOURCE18} $RPM_BUILD_ROOT%{systemdunitdir}/%{name}-standard.service -install -p bin/nginx-standard $RPM_BUILD_ROOT%{_sbindir} -ln -sf %{systemdunitdir}/%{name}-standard.service $RPM_BUILD_ROOT/etc/systemd/system/nginx.service - -%if %{with light} -cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}-light.conf -cp -p %{SOURCE6} $RPM_BUILD_ROOT/etc/monit/%{name}-light.monitrc -cp -p %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-light -%{__sed} -i -e 's/@flavor@/light/g' $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-light -cp -p %{SOURCE19} $RPM_BUILD_ROOT%{systemdunitdir}/%{name}-light.service -install -p bin/nginx-light $RPM_BUILD_ROOT%{_sbindir} -%endif -%if %{with mail} -cp -p %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}-mail.conf -cp -p %{SOURCE9} $RPM_BUILD_ROOT/etc/monit/%{name}-mail.monitrc -install -p bin/nginx-mail $RPM_BUILD_ROOT%{_sbindir} -install -p %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-mail -%{__sed} -i -e 's/@flavor@/mail/g' $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-mail -cp -p %{SOURCE21} $RPM_BUILD_ROOT%{systemdunitdir}/%{name}-mail.service -%endif +load_module() { + local module=ngx_${1}_module.so conffile=mod_$1.conf + printf 'load_module "%{_libdir}/%{name}/modules/%s";' "$module" \ + > $RPM_BUILD_ROOT%{_sysconfdir}/modules.d/$conffile +} %if %{with perl} -install -d $RPM_BUILD_ROOT{%{perl_vendorarch},%{perl_vendorarch}/auto/%{name}} -cp -p %{SOURCE11} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}-perl.conf -cp -p %{SOURCE12} $RPM_BUILD_ROOT/etc/monit/%{name}-perl.monitrc -install -p %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-perl -%{__sed} -i -e 's/@flavor@/perl/g' $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-perl -cp -p %{SOURCE20} $RPM_BUILD_ROOT%{systemdunitdir}/%{name}-perl.service -cp -p bin/nginx.pm $RPM_BUILD_ROOT%{perl_vendorarch}/%{name}.pm -install -p bin/nginx.so $RPM_BUILD_ROOT%{perl_vendorarch}/auto/%{name}/%{name}.so -install -p bin/nginx-perl $RPM_BUILD_ROOT%{_sbindir} +%{__rm} $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod +%{__rm} $RPM_BUILD_ROOT%{perl_vendorarch}/auto/nginx/.packlist +load_module http_perl %endif -rm -f $RPM_BUILD_ROOT%{_sysconfdir}/*.default -rm -rf $RPM_BUILD_ROOT%{_prefix}/html - -# only touch these for ghost packaging -touch $RPM_BUILD_ROOT%{_sysconfdir}/{fastcgi,scgi,uwsgi}.params +%if %{with geoip} +load_module http_geoip +load_module stream_geoip +%endif +%if %{with gd} +load_module http_image_filter +%endif +%if %{with xslt} +load_module http_xslt_filter +%endif +%if %{with mail} +load_module mail +%endif +%if %{with stream} +load_module stream +%endif %clean rm -rf $RPM_BUILD_ROOT -%pre common +%pre %groupadd -r -g 213 %{name} %groupadd -g 51 http %useradd -r -u 213 -d /usr/share/empty -s /bin/false -c "Nginx HTTP User" -g %{name} %{name} %addusertogroup %{name} http -%post standard +%post for a in access.log error.log; do - if [ ! -f /var/log/%{name}/nginx-standard_$a ]; then + if [ ! -f /var/log/%{name}/$a ]; then umask 022 - touch /var/log/%{name}/nginx-standard_$a - chown nginx:nginx /var/log/%{name}/nginx-standard_$a - chmod 644 /var/log/%{name}/nginx-standard_$a + touch /var/log/%{name}/$a + chown nginx:nginx /var/log/%{name}/$a + chmod 644 /var/log/%{name}/$a fi done -/sbin/chkconfig --add %{name}-standard -%systemd_post %{name}-standard.service -%service %{name}-standard restart -echo 'NOTE: this nginx daemon is using "/etc/nginx/nginx-standard.conf" as config.' -if ! [ -L /etc/systemd/system/nginx.service ] ; then - ln -s %{systemdunitdir}/%{name}-standard.service /etc/systemd/system/nginx.service || : -fi +/sbin/chkconfig --add %{name} -%post light -for a in access.log error.log; do - if [ ! -f /var/log/%{name}/nginx-light_$a ]; then - umask 022 - touch /var/log/%{name}/nginx-light_$a - chown nginx:nginx /var/log/%{name}/nginx-light_$a - chmod 644 /var/log/%{name}/nginx-light_$a - fi -done -/sbin/chkconfig --add %{name}-light -%systemd_post %{name}-light.service -%service %{name}-light restart -echo 'NOTE: this nginx daemon is using "/etc/nginx/nginx-light.conf" as config' +%posttrans +%restart_webserver -%post perl -for a in access.log error.log; do - if [ ! -f /var/log/%{name}/nginx-perl_$a ]; then - umask 022 - touch /var/log/%{name}/nginx-perl_$a - chown nginx:nginx /var/log/%{name}/nginx-perl_$a - chmod 644 /var/log/%{name}/nginx-perl_$a - fi -done -/sbin/chkconfig --add %{name}-perl -%systemd_post %{name}-perl.service -%service %{name}-perl restart -echo 'NOTE: this nginx daemon is using "/etc/nginx/nginx-perl.conf" as config' - -%post mail -for a in access.log error.log; do - if [ ! -f /var/log/%{name}/nginx-mail_$a ]; then - umask 022 - touch /var/log/%{name}/nginx-mail_$a - chown nginx:nginx /var/log/%{name}/nginx-mail_$a - chmod 644 /var/log/%{name}/nginx-mail_$a - fi -done -/sbin/chkconfig --add %{name}-mail -%systemd_post %{name}-mail.service -%service %{name}-mail restart -echo 'NOTE: this nginx daemon is using "/etc/nginx/nginx-mail.conf" as config' - -%preun standard +%preun if [ "$1" = "0" ];then - %service %{name}-standard stop - /sbin/chkconfig --del %{name}-standard -fi -%systemd_preun %{name}-standard.service - -%preun light -if [ "$1" = "0" ]; then - %service %{name}-light stop - /sbin/chkconfig --del %{name}-light -fi -%systemd_preun %{name}-light.service - -%preun perl -if [ "$1" = "0" ]; then - %service %{name}-perl stop - /sbin/chkconfig --del %{name}-perl -fi -%systemd_preun %{name}-perl.service - -%preun mail -if [ "$1" = "0" ]; then - %service %{name}-mail stop - /sbin/chkconfig --del %{name}-mail + %service %{name} stop + /sbin/chkconfig --del %{name} fi -%systemd_preun %{name}-mail.service +%systemd_preun %{name}.service -%postun common +%postun if [ "$1" = "0" ]; then %userremove %{name} %groupremove %{name} fi - -%postun standard -%systemd_reload - -%postun light %systemd_reload -%postun perl -%systemd_reload +%module_scripts mod_http_geoip +%module_scripts mod_http_image_filter +%module_scripts mod_http_perl +%module_scripts mod_http_xslt_filter +%module_scripts mod_mail +%module_scripts mod_stream +%module_scripts mod_stream_geoip -%postun mail -%systemd_reload - -%triggerpostun -- %{name}-standard < 1.4.1-4 -%systemd_trigger %{name}-standard.service - -%triggerpostun -- %{name}-light < 1.4.1-4 -%systemd_trigger %{name}-light.service - -%triggerpostun -- %{name}-perl < 1.4.1-4 -%systemd_trigger %{name}-perl.service - -%triggerpostun -- %{name}-mail < 1.4.1-4 -%systemd_trigger %{name}-mail.service - -%triggerpostun common -- %{name}-common < 1.8.0-2 -# skip *this* trigger on downgrade -[ $1 -le 1 ] && exit 0 -ln -sf fastcgi_params %{_sysconfdir}/fastcgi.params -ln -sf scgi_params %{_sysconfdir}/scgi.params -ln -sf uwsgi_params %{_sysconfdir}/uwsgi.params -exit 0 - -%files common +%files %defattr(644,root,root,755) %doc CHANGES LICENSE README html/index.html conf/nginx.conf %doc %lang(ru) CHANGES.ru -%dir %attr(754,root,root) %{_sysconfdir} -%dir %{_nginxdir} -%dir %{_nginxdir}/cgi-bin -%dir %{_nginxdir}/html -%dir %{_nginxdir}/errors %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/%{name} -# XXX: duplicates, don't use such glob here -#%attr(640,root,root) %{_sysconfdir}/*[_-]* -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/proxy.conf -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fastcgi_params -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/scgi_params -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/uwsgi_params -%ghost %{_sysconfdir}/fastcgi.params -%ghost %{_sysconfdir}/scgi.params -%ghost %{_sysconfdir}/uwsgi.params +%attr(754,root,root) /etc/rc.d/init.d/%{name} +%dir %attr(750,root,nginx) %{_sysconfdir} +%dir %{_sysconfdir}/conf.d +%dir %{_sysconfdir}/modules.d +%dir %{_sysconfdir}/snippets +%dir %{_sysconfdir}/vhosts.d +%dir %{_sysconfdir}/webapps.d %attr(640,root,root) %{_sysconfdir}/mime.types %attr(640,root,root) %{_sysconfdir}/koi-utf %attr(640,root,root) %{_sysconfdir}/koi-win %attr(640,root,root) %{_sysconfdir}/win-utf -%dir %{_sysconfdir}/webapps.d -%dir %{_sysconfdir}/vhosts.d +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fastcgi.conf +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/nginx.conf +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/proxy.conf +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fastcgi_params +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/scgi_params +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/uwsgi_params +%attr(755,root,root) %{_sbindir}/%{name} +%dir %{_libdir}/%{name} +%dir %{_libdir}/%{name}/modules +%{systemdunitdir}/%{name}.service + %attr(750,nginx,logs) %dir /var/log/archive/%{name} %attr(750,nginx,logs) /var/log/%{name} +%attr(770,root,nginx) /var/cache/%{name} + +%dir %{_nginxdir} +%dir %{_nginxdir}/cgi-bin +%dir %{_nginxdir}/html +%dir %{_nginxdir}/errors %config(noreplace,missingok) %verify(not md5 mtime size) %{_nginxdir}/html/* %config(noreplace,missingok) %verify(not md5 mtime size) %{_nginxdir}/errors/* -%ghost /etc/systemd/system/nginx.service -%files standard +%if %{with geoip} +%files mod_http_geoip %defattr(644,root,root,755) -%attr(755,root,root) %{_sbindir}/%{name}-standard -%attr(770,root,%{name}) /var/cache/%{name}-standard -%attr(754,root,root) /etc/rc.d/init.d/%{name}-standard -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}-standard.conf -%{systemdunitdir}/%{name}-standard.service +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/modules.d/mod_http_geoip.conf +%attr(755,root,root) %{_libdir}/%{name}/modules/ngx_http_geoip_module.so -%if %{with mail} -%files mail +%files mod_stream_geoip %defattr(644,root,root,755) -%attr(755,root,root) %{_sbindir}/%{name}-mail -%attr(770,root,%{name}) /var/cache/%{name}-mail -%attr(754,root,root) /etc/rc.d/init.d/%{name}-mail -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}-mail.conf -%{systemdunitdir}/%{name}-mail.service +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/modules.d/mod_stream_geoip.conf +%attr(755,root,root) %{_libdir}/%{name}/modules/ngx_stream_geoip_module.so %endif -%if %{with light} -%files light +%if %{with gd} +%files mod_http_image_filter %defattr(644,root,root,755) -%attr(755,root,root) %{_sbindir}/%{name}-light -%attr(770,root,%{name}) /var/cache/%{name}-light -%attr(754,root,root) /etc/rc.d/init.d/%{name}-light -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}-light.conf -%{systemdunitdir}/%{name}-light.service +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/modules.d/mod_http_image_filter.conf +%attr(755,root,root) %{_libdir}/%{name}/modules/ngx_http_image_filter_module.so %endif %if %{with perl} -%files perl +%files mod_http_perl %defattr(644,root,root,755) -%attr(755,root,root) %{_sbindir}/%{name}-perl -%attr(754,root,root) /etc/rc.d/init.d/%{name}-perl -%attr(770,root,%{name}) /var/cache/%{name}-perl -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}-perl.conf +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/modules.d/mod_http_perl.conf +%attr(755,root,root) %{_libdir}/%{name}/modules/ngx_http_perl_module.so %dir %{perl_vendorarch}/auto/%{name} %attr(755,root,root) %{perl_vendorarch}/auto/%{name}/%{name}.so %{perl_vendorarch}/%{name}.pm -%{systemdunitdir}/%{name}-perl.service +%{_mandir}/man3/nginx.3pm* %endif -%files -n monit-rc-nginx +%if %{with xslt} +%files mod_http_xslt_filter %defattr(644,root,root,755) -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/monit/%{name}-standard.monitrc -%if %{with perl} -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/monit/%{name}-perl.monitrc -%endif -%if %{with light} -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/monit/%{name}-light.monitrc +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/modules.d/mod_http_xslt_filter.conf +%attr(755,root,root) %{_libdir}/%{name}/modules/ngx_http_xslt_filter_module.so %endif + %if %{with mail} -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/monit/%{name}-mail.monitrc +%files mod_mail +%defattr(644,root,root,755) +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/modules.d/mod_mail.conf +%attr(755,root,root) %{_libdir}/%{name}/modules/ngx_mail_module.so +%endif + +%if %{with stream} +%files mod_stream +%defattr(644,root,root,755) +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/modules.d/mod_stream.conf +%attr(755,root,root) %{_libdir}/%{name}/modules/ngx_stream_module.so %endif + +%files -n monit-rc-nginx +%defattr(644,root,root,755) +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/monit/%{name}.monitrc