pagespeed 是谷歌开发的前端优化神器,可以化腐朽为神奇,加快网页反应速度。支持apache和nginx。
由于ngx_pagespeed 源码太大(约90M),即使打包成src.rpm,也无法在博客中发表。
本文提供一个spec文件,希望有能力的同学自己动手。
# %define nginx_home %{_localstatedir}/cache/nginx %define nginx_user nginx %define nginx_group nginx Summary: High performance web server Name: nginx Version: 1.4.7 %define _pagespeedversion 1.7.30.4 Release: 2.pagespeed_%{_pagespeedversion}%{?dist} Vendor: nginx inc. URL: http://nginx.org/ Source0: http://nginx.org/download/%{name}-%{version}.tar.gz Source1: logrotate Source2: nginx.init Source3: nginx.sysconf Source4: nginx.conf Source5: nginx.vh.default.conf Source6: fastcgi_params Source7: proxy_params Source60: https://github.com/pagespeed/ngx_pagespeed/archive/v%{_pagespeedversion}-beta.zip Source61: https://dl.google.com/dl/page-speed/psol/%{_pagespeedversion}.tar.gz Source62: pagespeed.conf License: 2-clause BSD-like license %if 0%{?suse_version} Group: Productivity/Networking/Web/Servers %else Group: System Environment/Daemons %endif BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRequires: zlib-devel BuildRequires: pcre-devel BuildRequires: gperftools-devel BuildRequires: unzip Requires: initscripts >= 8.36 Requires(pre): shadow-utils Requires(post): chkconfig Provides: webserver %description nginx [engine x] is an HTTP and reverse proxy server, as well as a mail proxy server. %package debug Summary: debug version of nginx Group: System Environment/Daemons Requires: nginx %description debug Not stripped version of nginx built with the debugging log support. %prep %setup -q %{__unzip} %{SOURCE60} %{__tar} zxvf %{SOURCE61} -C ngx_pagespeed-%{_pagespeedversion}-beta %build ./configure \ --prefix=%{_sysconfdir}/nginx \ --sbin-path=%{_sbindir}/nginx \ --conf-path=%{_sysconfdir}/nginx/nginx.conf \ --error-log-path=%{_localstatedir}/log/nginx/error.log \ --http-log-path=%{_localstatedir}/log/nginx/access.log \ --pid-path=%{_localstatedir}/run/nginx.pid \ --lock-path=%{_localstatedir}/run/nginx.lock \ --http-client-body-temp-path=%{_localstatedir}/cache/nginx/client_temp \ --http-proxy-temp-path=%{_localstatedir}/cache/nginx/proxy_temp \ --http-fastcgi-temp-path=%{_localstatedir}/cache/nginx/fastcgi_temp \ --user=%{nginx_user} \ --group=%{nginx_group} \ --without-http_browser_module \ --without-http_geo_module \ --without-http_memcached_module \ --without-http_scgi_module \ --without-http_uwsgi_module \ --with-http_realip_module \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --with-google_perftools_module \ --add-module=ngx_pagespeed-%{_pagespeedversion}-beta \ --with-debug \ --with-cc-opt="%{optflags} $(pcre-config --cflags)" \ $* make %{?_smp_mflags} %{__mv} %{_builddir}/%{name}-%{version}/objs/nginx \ %{_builddir}/%{name}-%{version}/objs/nginx.debug ./configure \ --prefix=%{_sysconfdir}/nginx \ --sbin-path=%{_sbindir}/nginx \ --conf-path=%{_sysconfdir}/nginx/nginx.conf \ --error-log-path=%{_localstatedir}/log/nginx/error.log \ --http-log-path=%{_localstatedir}/log/nginx/access.log \ --pid-path=%{_localstatedir}/run/nginx.pid \ --lock-path=%{_localstatedir}/run/nginx.lock \ --http-client-body-temp-path=%{_localstatedir}/cache/nginx/client_temp \ --http-proxy-temp-path=%{_localstatedir}/cache/nginx/proxy_temp \ --http-fastcgi-temp-path=%{_localstatedir}/cache/nginx/fastcgi_temp \ --user=%{nginx_user} \ --group=%{nginx_group} \ --without-http_browser_module \ --without-http_geo_module \ --without-http_memcached_module \ --without-http_scgi_module \ --without-http_uwsgi_module \ --with-http_realip_module \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --with-google_perftools_module \ --add-module=ngx_pagespeed-%{_pagespeedversion}-beta \ --with-cc-opt="%{optflags} $(pcre-config --cflags)" \ $* make %{?_smp_mflags} %install %{__rm} -rf $RPM_BUILD_ROOT %{__make} DESTDIR=$RPM_BUILD_ROOT 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%{_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 %{__mkdir} -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig %{__install} -m 644 -p %{SOURCE3} \ $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/nginx # install SYSV init stuff %{__mkdir} -p $RPM_BUILD_ROOT%{_initrddir} %{__install} -m755 %{SOURCE2} \ $RPM_BUILD_ROOT%{_initrddir}/nginx %{__install} -m 644 -p %{SOURCE6} \ $RPM_BUILD_ROOT%{_sysconfdir}/nginx/fastcgi_params %{__install} -m 644 -p %{SOURCE7} \ $RPM_BUILD_ROOT%{_sysconfdir}/nginx/proxy_params %{__install} -m 644 -p %{SOURCE62} \ $RPM_BUILD_ROOT%{_sysconfdir}/nginx/pagespeed.conf # install log rotation stuff %{__mkdir} -p $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d %{__install} -m 644 -p %{SOURCE1} \ $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/nginx %{__install} -m644 %{_builddir}/%{name}-%{version}/objs/nginx.debug \ $RPM_BUILD_ROOT%{_sbindir}/nginx.debug %clean %{__rm} -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) %{_sbindir}/nginx %dir %{_sysconfdir}/nginx %dir %{_sysconfdir}/nginx/conf.d %config(noreplace) %{_sysconfdir}/nginx/nginx.conf %config(noreplace) %{_sysconfdir}/nginx/conf.d/default.conf #%config(noreplace) %{_sysconfdir}/nginx/conf.d/example_ssl.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/proxy_params %config(noreplace) %{_sysconfdir}/nginx/pagespeed.conf %config(noreplace) %{_sysconfdir}/nginx/koi-utf %config(noreplace) %{_sysconfdir}/nginx/koi-win %config(noreplace) %{_sysconfdir}/nginx/win-utf %config(noreplace) %{_sysconfdir}/logrotate.d/nginx %config(noreplace) %{_sysconfdir}/sysconfig/nginx %{_initrddir}/nginx %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 %files debug %attr(0755,root,root) %{_sbindir}/nginx.debug %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 /sbin/chkconfig --add nginx # print site info cat <<BANNER ---------------------------------------------------------------------- Thanks for using nginx which rebuild by purple grape ! Please find the official documentation for nginx here: * http://nginx.org/en/docs/ Commercial subscriptions for nginx are available on: * http://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:adm %{_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:adm %{_localstatedir}/log/nginx/error.log fi fi fi %preun if [ $1 -eq 0 ]; then /sbin/service nginx stop > /dev/null 2>&1 /sbin/chkconfig --del nginx fi %postun if [ $1 -ge 1 ]; then /sbin/service nginx upgrade &>/dev/null || : fi %changelog * Fri Apr 17 2014 Purple Grape <[email protected]> - 1.4.7 via ngx_pagespeed
附件打包的是一个小包,不包含ngx_pagespeed源码,
而是在rpmbuild 过程中下载ngx_pagespeed,并且每次编译都会下载,比较烦人。仅供参考。