| # | |
| %define nginx_home %{_localstatedir}/cache/nginx | |
| %define nginx_user nginx | |
| %define nginx_group nginx | |
| %define nginx_loggroup adm | |
| BuildRequires: systemd | |
| Requires(post): systemd | |
| Requires(preun): systemd | |
| Requires(postun): systemd | |
| %if 0%{?rhel} | |
| %define _group System Environment/Daemons | |
| %endif | |
| %if 0%{?rhel} == 7 | |
| %define epoch 1 | |
| Epoch: %{epoch} | |
| Requires(pre): shadow-utils | |
| Requires: openssl >= 1.0.2 | |
| BuildRequires: openssl-devel >= 1.0.2 | |
| %define dist .el7 | |
| %endif | |
| %if 0%{?rhel} == 8 | |
| %define epoch 1 | |
| Epoch: %{epoch} | |
| Requires(pre): shadow-utils | |
| BuildRequires: openssl-devel >= 1.1.1 | |
| %define _debugsource_template %{nil} | |
| %endif | |
| %if 0%{?suse_version} >= 1315 | |
| %define _group Productivity/Networking/Web/Servers | |
| %define nginx_loggroup trusted | |
| Requires(pre): shadow | |
| BuildRequires: libopenssl-devel | |
| %define _debugsource_template %{nil} | |
| %endif | |
| %if 0%{?fedora} | |
| %define _debugsource_template %{nil} | |
| %global _hardened_build 1 | |
| %define _group System Environment/Daemons | |
| BuildRequires: openssl-devel | |
| Requires(pre): shadow-utils | |
| %endif | |
| # end of distribution specific definitions | |
| %define base_version %%BASE_VERSION%% | |
| %define base_release %%BASE_RELEASE%%%{?dist}.ngx | |
| %define bdir %{_builddir}/%{name}-%{base_version} | |
| %define WITH_CC_OPT $(echo %{optflags} $(pcre-config --cflags)) -fPIC | |
| %define WITH_LD_OPT -Wl,-z,relro -Wl,-z,now -pie | |
| %define BASE_CONFIGURE_ARGS $(echo "%%BASE_CONFIGURE_ARGS%%") | |
| Summary: High performance web server | |
| Name: nginx | |
| Version: %{base_version} | |
| Release: %{base_release} | |
| Vendor: Nginx, Inc. | |
| URL: https://nginx.org/ | |
| Group: %{_group} | |
| Source0: https://nginx.org/download/%{name}-%{version}.tar.gz | |
| Source1: logrotate | |
| Source4: nginx.conf | |
| Source5: nginx.default.conf | |
| Source8: nginx.service | |
| Source9: nginx.upgrade.sh | |
| Source10: nginx.suse.logrotate | |
| Source11: nginx-debug.service | |
| Source12: nginx.copyright | |
| Source13: nginx.check-reload.sh | |
| %%BASE_PATCHES%% | |
| License: 2-clause BSD-like license | |
| BuildRoot: %{_tmppath}/%{name}-%{base_version}-%{base_release}-root | |
| BuildRequires: zlib-devel | |
| BuildRequires: pcre-devel | |
| Provides: webserver | |
| Provides: nginx-r%{base_version} | |
| %description | |
| nginx [engine x] is an HTTP and reverse proxy server, as well as | |
| a mail proxy server. | |
| %if 0%{?suse_version} >= 1315 | |
| %debug_package | |
| %endif | |
| %prep | |
| %autosetup -p1 | |
| %build | |
| ./configure %{BASE_CONFIGURE_ARGS} \ | |
| --with-cc-opt="%{WITH_CC_OPT}" \ | |
| --with-ld-opt="%{WITH_LD_OPT}" \ | |
| --with-debug | |
| make %{?_smp_mflags} | |
| %{__mv} %{bdir}/objs/nginx \ | |
| %{bdir}/objs/nginx-debug | |
| ./configure %{BASE_CONFIGURE_ARGS} \ | |
| --with-cc-opt="%{WITH_CC_OPT}" \ | |
| --with-ld-opt="%{WITH_LD_OPT}" | |
| make %{?_smp_mflags} | |
| %install | |
| %{__rm} -rf $RPM_BUILD_ROOT | |
| %{__make} DESTDIR=$RPM_BUILD_ROOT INSTALLDIRS=vendor install | |
| %{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/nginx | |
| %{__mv} $RPM_BUILD_ROOT%{_sysconfdir}/nginx/html $RPM_BUILD_ROOT%{_datadir}/nginx/ | |
| %{__rm} -f $RPM_BUILD_ROOT%{_sysconfdir}/nginx/*.default | |
| %{__rm} -f $RPM_BUILD_ROOT%{_sysconfdir}/nginx/fastcgi.conf | |
| %{__mkdir} -p $RPM_BUILD_ROOT%{_localstatedir}/log/nginx | |
| %{__mkdir} -p $RPM_BUILD_ROOT%{_localstatedir}/run/nginx | |
| %{__mkdir} -p $RPM_BUILD_ROOT%{_localstatedir}/cache/nginx | |
| %{__mkdir} -p $RPM_BUILD_ROOT%{_libdir}/nginx/modules | |
| cd $RPM_BUILD_ROOT%{_sysconfdir}/nginx && \ | |
| %{__ln_s} ../..%{_libdir}/nginx/modules modules && cd - | |
| %{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/doc/%{name}-%{base_version} | |
| %{__install} -m 644 -p %{SOURCE12} \ | |
| $RPM_BUILD_ROOT%{_datadir}/doc/%{name}-%{base_version}/COPYRIGHT | |
| %{__mkdir} -p $RPM_BUILD_ROOT%{_sysconfdir}/nginx/conf.d | |
| %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/nginx/nginx.conf | |
| %{__install} -m 644 -p %{SOURCE4} \ | |
| $RPM_BUILD_ROOT%{_sysconfdir}/nginx/nginx.conf | |
| %{__install} -m 644 -p %{SOURCE5} \ | |
| $RPM_BUILD_ROOT%{_sysconfdir}/nginx/conf.d/default.conf | |
| %{__install} -p -D -m 0644 %{bdir}/objs/nginx.8 \ | |
| $RPM_BUILD_ROOT%{_mandir}/man8/nginx.8 | |
| %{__mkdir} -p $RPM_BUILD_ROOT%{_unitdir} | |
| %{__install} -m644 %SOURCE8 \ | |
| $RPM_BUILD_ROOT%{_unitdir}/nginx.service | |
| %{__install} -m644 %SOURCE11 \ | |
| $RPM_BUILD_ROOT%{_unitdir}/nginx-debug.service | |
| %{__mkdir} -p $RPM_BUILD_ROOT%{_libexecdir}/initscripts/legacy-actions/nginx | |
| %{__install} -m755 %SOURCE9 \ | |
| $RPM_BUILD_ROOT%{_libexecdir}/initscripts/legacy-actions/nginx/upgrade | |
| %{__install} -m755 %SOURCE13 \ | |
| $RPM_BUILD_ROOT%{_libexecdir}/initscripts/legacy-actions/nginx/check-reload | |
| # install log rotation stuff | |
| %{__mkdir} -p $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d | |
| %if 0%{?suse_version} | |
| %{__install} -m 644 -p %{SOURCE10} \ | |
| $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/nginx | |
| %else | |
| %{__install} -m 644 -p %{SOURCE1} \ | |
| $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/nginx | |
| %endif | |
| %{__install} -m755 %{bdir}/objs/nginx-debug \ | |
| $RPM_BUILD_ROOT%{_sbindir}/nginx-debug | |
| %check | |
| %{__rm} -rf $RPM_BUILD_ROOT/usr/src | |
| cd %{bdir} | |
| grep -v 'usr/src' debugfiles.list > debugfiles.list.new && mv debugfiles.list.new debugfiles.list | |
| cat /dev/null > debugsources.list | |
| %if 0%{?suse_version} >= 1500 | |
| cat /dev/null > debugsourcefiles.list | |
| %endif | |
| %clean | |
| %{__rm} -rf $RPM_BUILD_ROOT | |
| %files | |
| %defattr(-,root,root) | |
| %{_sbindir}/nginx | |
| %{_sbindir}/nginx-debug | |
| %dir %{_sysconfdir}/nginx | |
| %dir %{_sysconfdir}/nginx/conf.d | |
| %{_sysconfdir}/nginx/modules | |
| %config(noreplace) %{_sysconfdir}/nginx/nginx.conf | |
| %config(noreplace) %{_sysconfdir}/nginx/conf.d/default.conf | |
| %config(noreplace) %{_sysconfdir}/nginx/mime.types | |
| %config(noreplace) %{_sysconfdir}/nginx/fastcgi_params | |
| %config(noreplace) %{_sysconfdir}/nginx/scgi_params | |
| %config(noreplace) %{_sysconfdir}/nginx/uwsgi_params | |
| %config(noreplace) %{_sysconfdir}/nginx/koi-utf | |
| %config(noreplace) %{_sysconfdir}/nginx/koi-win | |
| %config(noreplace) %{_sysconfdir}/nginx/win-utf | |
| %config(noreplace) %{_sysconfdir}/logrotate.d/nginx | |
| %{_unitdir}/nginx.service | |
| %{_unitdir}/nginx-debug.service | |
| %dir %{_libexecdir}/initscripts/legacy-actions/nginx | |
| %{_libexecdir}/initscripts/legacy-actions/nginx/* | |
| %attr(0755,root,root) %dir %{_libdir}/nginx | |
| %attr(0755,root,root) %dir %{_libdir}/nginx/modules | |
| %dir %{_datadir}/nginx | |
| %dir %{_datadir}/nginx/html | |
| %{_datadir}/nginx/html/* | |
| %attr(0755,root,root) %dir %{_localstatedir}/cache/nginx | |
| %attr(0755,root,root) %dir %{_localstatedir}/log/nginx | |
| %dir %{_datadir}/doc/%{name}-%{base_version} | |
| %doc %{_datadir}/doc/%{name}-%{base_version}/COPYRIGHT | |
| %{_mandir}/man8/nginx.8* | |
| %pre | |
| # Add the "nginx" user | |
| getent group %{nginx_group} >/dev/null || groupadd -r %{nginx_group} | |
| getent passwd %{nginx_user} >/dev/null || \ | |
| useradd -r -g %{nginx_group} -s /sbin/nologin \ | |
| -d %{nginx_home} -c "nginx user" %{nginx_user} | |
| exit 0 | |
| %post | |
| # Register the nginx service | |
| if [ $1 -eq 1 ]; then | |
| /usr/bin/systemctl preset nginx.service >/dev/null 2>&1 ||: | |
| /usr/bin/systemctl preset nginx-debug.service >/dev/null 2>&1 ||: | |
| # print site info | |
| cat <<BANNER | |
| ---------------------------------------------------------------------- | |
| Thanks for using nginx! | |
| Please find the official documentation for nginx here: | |
| * https://nginx.org/en/docs/ | |
| Please subscribe to nginx-announce mailing list to get | |
| the most important news about nginx: | |
| * https://nginx.org/en/support.html | |
| Commercial subscriptions for nginx are available on: | |
| * https://nginx.com/products/ | |
| ---------------------------------------------------------------------- | |
| BANNER | |
| # Touch and set permisions on default log files on installation | |
| if [ -d %{_localstatedir}/log/nginx ]; then | |
| if [ ! -e %{_localstatedir}/log/nginx/access.log ]; then | |
| touch %{_localstatedir}/log/nginx/access.log | |
| %{__chmod} 640 %{_localstatedir}/log/nginx/access.log | |
| %{__chown} nginx:%{nginx_loggroup} %{_localstatedir}/log/nginx/access.log | |
| fi | |
| if [ ! -e %{_localstatedir}/log/nginx/error.log ]; then | |
| touch %{_localstatedir}/log/nginx/error.log | |
| %{__chmod} 640 %{_localstatedir}/log/nginx/error.log | |
| %{__chown} nginx:%{nginx_loggroup} %{_localstatedir}/log/nginx/error.log | |
| fi | |
| fi | |
| fi | |
| %preun | |
| if [ $1 -eq 0 ]; then | |
| /usr/bin/systemctl --no-reload disable nginx.service >/dev/null 2>&1 ||: | |
| /usr/bin/systemctl stop nginx.service >/dev/null 2>&1 ||: | |
| fi | |
| %postun | |
| /usr/bin/systemctl daemon-reload >/dev/null 2>&1 ||: | |
| if [ $1 -ge 1 ]; then | |
| /sbin/service nginx status >/dev/null 2>&1 || exit 0 | |
| /sbin/service nginx upgrade >/dev/null 2>&1 || echo \ | |
| "Binary upgrade failed, please check nginx's error.log" | |
| fi | |
| %changelog |