本文共 9155 字,大约阅读时间需要 30 分钟。
pagespeed 是谷歌开发的前端优化神器,可以化腐朽为神奇,加快网页反应速度。支持apache和nginx。
由于ngx_pagespeed 源码太大(约90M),即使打包成src.rpm,也无法在博客中发表。
本文提供一个spec文件,希望有能力的同学自己动手。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 | # %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 <purplegrape4@gmail.com> - 1.4.7 via ngx_pagespeed |
附件打包的是一个小包,不包含ngx_pagespeed源码,
而是在rpmbuild 过程中下载ngx_pagespeed,并且每次编译都会下载,比较烦人。仅供参考。