| # |
| %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) && (0%{?amzn} == 0) |
| %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} == 7) && (0%{?amzn} == 2) |
| %define epoch 1 |
| Epoch: %{epoch} |
| Requires(pre): shadow-utils |
| Requires: openssl11 >= 1.1.1 |
| BuildRequires: openssl11-devel >= 1.1.1 |
| %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: %%PACKAGE_VENDOR%% |
| URL: https://nginx.org/ |
| Group: %{_group} |
| |
| Source0: https://nginx.org/download/%{name}-%{version}.tar.gz |
| Source1: logrotate |
| Source2: nginx.conf |
| Source3: nginx.default.conf |
| Source4: nginx.service |
| Source5: nginx.upgrade.sh |
| Source6: nginx.suse.logrotate |
| Source7: nginx-debug.service |
| Source8: nginx.copyright |
| Source9: 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 %{SOURCE8} \ |
| $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 %{SOURCE2} \ |
| $RPM_BUILD_ROOT%{_sysconfdir}/nginx/nginx.conf |
| %{__install} -m 644 -p %{SOURCE3} \ |
| $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 %SOURCE4 \ |
| $RPM_BUILD_ROOT%{_unitdir}/nginx.service |
| %{__install} -m644 %SOURCE7 \ |
| $RPM_BUILD_ROOT%{_unitdir}/nginx-debug.service |
| %{__mkdir} -p $RPM_BUILD_ROOT%{_libexecdir}/initscripts/legacy-actions/nginx |
| %{__install} -m755 %SOURCE5 \ |
| $RPM_BUILD_ROOT%{_libexecdir}/initscripts/legacy-actions/nginx/upgrade |
| %{__install} -m755 %SOURCE9 \ |
| $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 %{SOURCE6} \ |
| $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 |
| |
| %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/nginx/koi-utf |
| %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/nginx/koi-win |
| %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/nginx/win-utf |
| |
| %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}/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 |