WEB应用

libmemcached编译安装报错解决记录

我负责的几个公司内部网站,仅集成了php原生memcache组件,不支持memcached分片存储的自动容灾方案,近期出现过几例因memcache服务器故障引起WEB爆卡的尴尬事,所以接到了一个给现网php集成memcached模块的需求。 内部的个别系统有多老、多难用我就不吐槽了,slackware、suse用过的人都知道。。。不说了,总之老老实实的编译安装吧。 memcached这个php模块依赖于libmemcached,所以集成前先要编译安装libmemcached。 按照常规编译方法,对libmemcached进行编译安装,结果如下报错: error: cinttypes: No such file or directory 查了下资料,发现是因为gcc版本过低,看了下系统当前的gcc版本,是4.1.2,决定升级之。 简单记录下gcc编译过程: 1、安装gmp 2、安装mpfr 4、安装mpc 5、安装gcc 对于这种老掉牙的服务器、程序,编译安装gcc的时候也不敢直接全局覆盖安装(编译不指定路径),于是将gcc-4.5.1安装到/usr/local/gcc-4.5.1 Ps:更多可选参数请参考官方文档。gcc编译安装必须注意依赖包的顺序,可谓环环相扣。 编译安装后,由于是指定的安装路径,所以系统用的依然是原来的gcc,所以为了本次编译libmemcached,需要将新版本软链过去,暂时使用(简单方案) 进入libmemcached源码目录继续编译,结果如下报错: error: bits/c++0x_warning.h: No such file or directory error: cstdint: No such file or directory error: tr1_impl/cinttypes: No such file or directory 真是醉人,明明都升级了还报错!没办法,继续耐着性子看信息,发现libmemcached在configure之后有如下统计信息: 赫然发现了图中还有个c++显示是4.1.2的老版本!!!于是,原来把c++给漏了,顺手补之: 再去编译安装,就行云流水,再无报错!后面编译memcached就不多说了,不会的可以参考前文教程。最后,记得取消gcc和c++的软链接,还原到4.1.2版本即可(当然,若无异常也可以继续保留)。
阅读全文
借助PageSpeed,为Nginx网站服务器提速 WEB应用

借助PageSpeed,为Nginx网站服务器提速

网站加载速度越快,访客互动性、留住率和转换率就越高,这早已不是什么秘密。网站每延迟100毫秒,亚马逊的销售额就会减少1%;延迟增加500毫秒,这意味着谷歌的流量和收入就会减少20%。要是有一个办法可以为你的网站服务器提速,又不必升级到功能更强大的服务器,就没有理由不试一试这个办法。 我在本教程中将介绍如何优化Nginx网站服务器,以提升其性能。虽然Nginx网站服务器本身已俨然成为运行速度最快、可扩展性最佳的网站服务器之一,但是仍有众多方法可以调整优化其常规安装系统的性能。 举例说,有一个由谷歌开发的网站服务器模块,名为PageSpeed模块(https://developers.google.com/speed/pagespeed/module)。PageSpeed旨在缩短网页加载的时间,减少网站服务器的带宽使用量。最近,已发布了Nginx版本的PageSpeed模块(ngx_pagespeed)。作为一种有望为Nginx网站服务器提速的可行方法,我将演示如何在Nginx中启用并配置ngx_pagespeed模块。 PageSpeed的功能特性 PageSpeed模块可以使用数量众多的重写"过滤器",每个过滤器都可以选择性地开启/关闭,从而自动进行各种优化(比如,减小文档大小、减少HTTP请求数据、减少HTTP往返次数以及缩短DNS解析时间)。 下面是ngx_pagespeed支持的其中一些过滤器。想了解支持的全部过滤器,请参阅官方文档。 Collapse Whitespace(压缩空白):通过把HTML网页中的多处连续空白换成一处空白,减少带宽使用量。 Canonicalize JavaScript Libraries(规范化转换JavaScript库):通过自动把流行的JavaScript库换成免费托管的JavaScript库(比如由谷歌托管),减少带宽使用量。 Combine CSS(合并CSS):通过把多个CSS文件合并成一个CSS文件,减少HTTP请求数量。 Combine JavaScript(合并JavaScript):通过把多个JavaScript文件合并成一个JavaScript文件,减少HTTP请求数量。 Elide Attributes(省略属性):通过删除由默认属性指定的标签,缩小文档大小。 Extend Cache(扩展缓存):通过优化网页资源的可缓存性,减少带宽使用量。 Flatten CSS Imports(精简CSS导入):通过删除CSS文件中的@import,减少HTTP请求往返次数。 Lazyload Images(延时加载图片):延时加载在客户端浏览器上看不见的图片。 Minify JavaScript(缩小JavaScript):通过缩小JavaScript,减少带宽使用量。 Optimize Images(优化图片):通过引入更多的内嵌图片、压缩图片,或者将GIF图片转换成PNG图片,优化图片分发。 Pre-Resolve DNS(预解析DNS):通过预解析DNS,缩短DNS解析时间。 Prioritize Critical CSS(优化加载关键CSS规则):重写CSS文件,以便首先加载渲染页面的CSS规则。 与Apache网站服务器不一样,Nginx模块无法在运行时动态加载,而是必须在编译时加载。截至本文截稿时,ngx_pagespeed模块并未内置在随主要Linux发行版(比如Fedora 19)发布的Nginx程序包中。因而,想使用Nginx中的PageSpeed,你需要利用源代码来构建Nginx。 借助ngx_pagespeed,构建和安装Nginx 安装用于构建nginx和ngx_pagespeed的必备要素。 在Debian、Ubuntu或Linux Mint上: 在Fedora、CentOS或RHEL上: 下载并安装ngx_pagespeed源代码,如下所示。 ngx_pagespeed会被解压缩到/usr/local/nginx/modules/ngx_pagespeed-1.7.30.3-beta 下载预构建的PSOL(PageSpeed优化库,https://developers.google.com/speed/pagespeed/psol),并将它安装到ngx_pagespeed目录下: 从http://nginx.org/en/download.html,下载Nginx的最新稳定版。 最后,在ngx_pagespeed模块启用的情况下,编译Nginx,并安装它,如下所示。 你应该确认,ngx_pagespeed模块已添加到安装的Nginx系统上,如下所示。 配置Nginx中的ngx_pagespeed模块 想启用并配置ngx_pagespeed,就要编辑Nginx配置的server部分。nginx.conf的下面这个示例表明了如何指定一个或多个PageSpeed过滤器。 说到指定PageSpeed过滤器,有两种不同的级别可供你选择:CoreFilters和PassThrough。除非有所指定,否则默认情况下使用CoreFilters。 对新手用户而言:使用CoreFilters CoreFilters含有一系列PageSpeed过滤器,谷歌认为这些过滤器对大多数网站来说是安全的。如果启用CoreFilters,你就自动启用了一系列"安全"规则。所以,推荐新手用户采用这种方法。如果你愿意,也可以禁用CoreFilters中的某个或某些过滤器,或者选择性地启用额外的过滤器。下面这个例子表明了使用CoreFilters的ngx_pagespeed配置。 想了解CoreFilters中的全部过滤器,请参阅官方文档。 对高级用户而言:使用PassThrough 如果是高级用户,你可以使用PageThrough级别,你可以手动启用个别过滤器。 另外的配置步骤: 创建将由Nginx写入的一个文件缓存目录。 为了方便起见,为Nginx创建一个初始化脚本。 最后,启动Nginx。 注意:除了ngx_pagespeed外,你可能还需要定义额外的Nginx模块(比如HTTPS/SSL支持等),具体视需求而定。这种情况下,你需要在Nginx编译这个环节来添加这些模块。请参阅这篇教程(http://xmodulo.com/2014/01/compile-install-nginx-web-server.html),了解如何启用额外的Nginx模块。
阅读全文