Rootop 服务器运维与web架构

2013-03-05
发表者 Venus
暂无评论

安装mod-pagespeed模块,加速web服务器。

关于介绍往下看

下载地址:https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_x86_64.rpm

这里先使用rpm包方式安装,直接rpm -ivh mod-pagespeed-stable_current_x86_64.rpm 即可。

在/etc/httpd/conf.d下释放 pagespeed.conf 配置文件,在/usr/lib64/httpd/modules下释放两个模块 mod_pagespeed_ap24.so和mod_pagespeed.so

[root@localhost modules]# chmod 755 /usr/lib64/httpd/modules/mod_pagespeed*   //更改模块文件的权限

现在可以重启apache。

[root@localhost ~]# ll /var/cache/mod_pagespeed/

total 8

drwxr-xr-x 5 apache apache 4096 Mar  5 16:56 http,3A

drwxr-xr-x 9 apache apache 4096 Mar  5 16:42 rname

这是mod-pagespeed的缓存路径,看到内容生成也表示安装成功。

用浏览器访问网站,打开http watch监控。

可以看到客户端检测到已经插入pagespeed,配置生效。

参考资料来源:http://www.ibm.com/developerworks/cn/linux/l-apache-pagespeed/

简介

先决条件要使用 mod_pagespeed,您需要安装可在 Linux 上运行的 Apache 2.2 版本,32 位或 64 位均可,同时安装 mod_deflate 模块。

目前,mod_pagespeed 不支持 Windows 或旧版本的 Apache(根据他们的文档和常见问题解答来看,我认为近期他们不会为这些版本提供支持)。

来自 Google 的 mod_pagespeed Apache 模块被设计为一种 “插入式” 模块,可供 Apache Web 托管商插入其服务器安装,并立即实现页面加载速度的显著提高。 如果您还不确定如何加速您的网站,或者尚未优化您的配置性能,那么此模块就应该是您寻找已久的解决方案。举例来说,对于使用开箱即用配置与安装的 WordPress 博主,此模块能带来很大的改变。

mod_pagespeed 模块在一个模块中结合了优化页面加载速度的最佳实践,并且可自动执行所有必要的步骤。

速度的定义

无论您的 Internet 连接速度如何,您总是希望能够更快地加载您的网页。将页面内容发送给您的 Web 服务器也希望它的速度更快,原因有二:如果企业的服务器速度缓慢,就会导致客户丢失。此外,如果企业为您提供了更快的个别页面加载速度,那么就能将其自己的服务器用于为其他人提供更多页面。您可能每天访问他们的页面一次,但他们每天要为其他客户提供 100,000 次相同的页面。对于这些企业来说,即便是细微的速度提升也有着重大的意义。

就本文的目的而言,我们将从用户的视角定义 “速度”:页面加载时间。能够迅速加载的网页将被视为快速,如 www.google.com,其页面加载时间非常短。相反,如果某个假象站点仅有一台服务器,运行在陈旧的 Pentium II 600 MHz 之上,而且包含 40 个庞大的镜像文件,那么这个站点无疑会非常慢,其页面加载时间非常长。此外,如果一个网页在每天仅有少数人访问时速度较快,在数千名用户都在 10 分钟的时间内访问该网站时,该网站仍然有可能变得极为缓慢。因此,“速度” 定义为使您从 A 点到 B 点所用的时间,其中 A 点 = 您在地址栏中键入某些内容之后按下 “回车键” 的时候,而 B 点 = 页面完全载入浏览器的时间。

从 Web 服务器的角度来看,提高速度(而无需更改硬件)的最佳方法就是更快地发送更少量的数据。更具体地来说,您希望降低机器的延迟(延迟 = 响应时间),并减小传输的数据大小(所传输的数据的物理 Kb 数)。因此,为了 “加速” 一个网站,无论是从 Web 服务的视角,还是从用户的视角来说,您都需要减少服务器的延迟,同时减小所传输的数据大小。

如何提高速度

提高网站速度的全部可行战术可分为五大类:最大化缓存、最小化查找、最小化每条请求的开销、最小化数据大小,以及优化浏览器的呈现。请注意,各分类描述极限行为的方式,例如 “最大化” 或 “最小化”,举例来说,不存在 “打开” 或者 “关闭” 一种特性或者设置的简单解决方案。下面我们来详解各分类,并说明其工作方式。

最大化缓存

浏览器能够在本地缓存文件,因此不必在每次载入页面时从服务器载入这些文件,而是可以使用本地副本。尽管这对于动态 Web 页面本身意义不大(例如博客页面),但对于已经载入页面的全部图像、CSS 文件和 JavaScript 文件来说又会如何呢?这些文件基本不会更改,即便更改,也是非常少的。不必每一次都去服务器中获取相同的 CSS 文件,特别是在为整个站点使用一个 CSS 文件时。用户载入的所有页面均使用相同的 CSS 文件,因此您完全可以使用本地缓存的副本,而不必使用服务器副本,因为它们是完全相同的。

浏览器实际上会接受服务器提供的缓存命令。服务器可以告知浏览器项目是否有效、在多长时间内保持有效。服务器可以将这些命令附加到每一个文件。因此,服务器调用告知浏览器缓存一个 JS 文件、一个 CSS 文件、一个 JPG 文件,但不缓存 HTML 文件或者 TXT 文件。此外,也可以告知浏览器 “CSS 和 JPG 文件在一年内不会过期”。浏览器将解释这些命令,因为服务器告诉它 “这里有一个 JPG 文件,它在一年之内不会发生更改,在此期间,如果我的服务器上的任何页面引用了这个文件,那么您就应该使用本地副本”。

最小化查找

在任意类型的文件从服务器发送至浏览器时,都存在在各文件上建立 HTTP 连接的相关开销。换句话说,需要为各文件在服务器与浏览器之间建立一个通信信道。在大多数常见网站中,有数十个文件需要传输,每次存在这样的开销时,服务器都要花费一定的时间来建立连接。因此,减少查找数量可以减少服务器用于建立连接的时间。

实现此目标的主要方法应该显而易见:减少一个网页上需要传输的文件数量。例如,如果您的一个页面中包含 10 幅图像,那么您就可能需要建立 10 个 HTTP 连接。但您可以将资源整合到数量更少的文件之中,从而减少连接数量,例如将所有 jQuery 插件置于一个文件之中,或者将一个页面中的所有小图像并为一个大的图像文件,随后使用 CSS,仅显示大图像中您需要显示的部分。

最小化每条请求的开销

载入各网页时,浏览器会将某些信息中继至服务器,包括 cookie 以及调用 POST 和 GET 的时间等内容。当然,这需要花费时间,因为每次载入页面时,都必须从客户端向服务器上传 cookie 信息。某些网站会在 cookie 中存储大量信息,需要上传的信息越多,所花费的时间就越长。

更为可取的设计是在 cookie 中存储尽可能少的信息(例如,仅存储用户 ID),并使用这样的信息作为关键字,查找您在数据库中存储的所有必要信息。这能显著缩短此类信息的上传时间。

最小化数据大小

传送 20Kb 的图像文件要比传送 200Kb 的图像文件更快。这个分类包含所有这些相关实践:例如,尽可能使用 GIF 而非 JPG、最大限度地缩小 JavaScript 文件的大小、尽可能发送缩略图图像而非整个图像。

优化浏览器呈现

这个分类是极有挑战性的。其中包含诸如使用优化的 CSS 选取器等实践,但您的站点往往已经完成了设计,而处理 CSS 文件的人员往往不是负责优化服务器性能的人员。此外,这个分类中的要素提供的收益往往并不明显。

理论介绍到此为止,下面让我们来下载并运行产品!无论如何,这种插件的目的在于插入您自己的 Apache 安装,使您不必 再担心提升速度的所有细节。

测试您的 mod_pagespeed 安装

通过几项检查来确保您的 mod_pagespeed 安装工作正常。显然,首先要确保您的 Apache 能正常启动(如果无法正常启动,那么就表示您的 mod_pagespeed 安装/配置存在问题)。随后,检查 “cache” 文件夹,确认 mod_pagespeed 正确写入此处。

现在,访问您正在处理的站点的一个网页(这个网页中应该包含类似于 JS 和 CSS 文件等内容)。访问页面后,检查 “cache” 文件夹。您应在这里看到一些文件,它们应该是可收缩的文件(JS 和 CSS 文件)的 GZipped/压缩版本。这是表明您已正确安装和配置 mod_pagespeed 的第一项证明。

最后一项检查是您从服务器获得的响应标头 (response header)。您可以使用 Firebug 或 Google 自己的 Page Speed 等工具来进行这项检查,甚至可以编写 PHP 代码来查找此标头。在检查响应标头时,请查找对 “Modpagespeed” 的引用,因为 Google 的工具会标记此响应。

祝贺您!成功检查 “cache” 文件夹和响应标头之后,即可确信您已经正确安装和配置了 mod_pagespeed。

2013-02-26
发表者 Venus
暂无评论

Device eth0 does not seem to be present, delaying initialization.

在vmware中安装完redhat6.3启动网络报错:
[root@localhost ~]# service network start
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:  Device eth0 does not seem to be present, delaying initialization.
[FAILED]
网上查到的原因是70-persistent-net.rules中的mac地址配置与实际错误。这里打开看一下:
[root@localhost ~]# vi /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:0c:29:39:b0:b6″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:0c:29:c3:9e:23″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth1″
出现了eth0和eth1,实际上我并没有eth1,将下面的eth1改为eth0(也可以直接将70-persistent-net.rules文件删除),重启系统,网络启动了。
[root@localhost ~]# ifconfig | grep eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:C3:9E:23
在/etc/udev/rules.d/70-persistent-net.rules的文件中提示了此文件由/lib/udev/write_net_rules脚本生成,查看下。
[root@localhost ~]# vi /lib/udev/write_net_rules
# This script is run to create persistent network device naming rules
# based on properties of the device. 意思说脚本基于设备信息生成固定的网络设备名称规则。


这里又打开vmware确认了网卡地址确实为00:0c:29:c3:9e:23,再次修改70-persistent-net.rules文件,删除行:
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:0c:29:39:b0:b6″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″
把错误的mac地址这两行删除。

2013-02-21
发表者 Venus
暂无评论

Warning: Unknown: open_basedir restriction in effect.

php环境完成后测试页报错:

Warning: Unknown: open_basedir restriction in effect. File(/data/web/tp/phpinfo.php) is not within the allowed path(s): (/tmp) in Unknown on line 0

Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0
Fatal error: Unknown: Failed opening required ‘/data/web/tp/phpinfo.php’ (include_path=’.:/var/www/php5/lib/php’) in Unknown on line 0

解决方法,修改php.ini ,open_basedir参数改为你的网站根目录 (或者直接注释掉此行)

open_basedir = /data/web/tp

这个参数限定了php允许执行的目录,如果超出此目录就会报错。

重启apache。

2013-02-19
发表者 Venus
暂无评论

使用vlock锁定你的终端

       当我们操作服务器需要暂时离开主机位置的时候,为了安全需要锁定屏幕,在windows下可以用ctrl alt del 然后选择锁定,在linux下就需要vlock这个命令了。vlock用于锁定一个或更多的终端,允许一个用户锁定其终端且不会影响到其它tty登陆的终端。

       首先安装vlock,系统镜像里面自带。
[root@rhel6www ~]# yum install -y vlock

       然后我们man一下此命令用法:

NAME
       vlock – Virtual Console lock program

SYNOPSIS
       vlock

       vlock [ -a,–all ] [ -c,–current ] [ -h,–help ] [ -v,–version ]

-a 锁定全部终端    -c 锁定当前终端   不加参数默认为锁定当前终端。

锁定当前虚拟终端,可以用alt+f2切换。

用putty远程登陆系统后锁定提示说不是vc,但是可以锁定。
[root@rhel6www ~]# vlock
 *** This tty is not a VC (virtual console). ***
 *** It may not be securely locked. ***

This TTY is now locked.
Please enter the password to unlock.
root’s Password:
-a参数使用后,会锁定所有tty虚拟终端,使用alt+f1/2/3等也无法切换。对远程登陆的pts会话无效,只用于本地tty终端锁定。

附:tty 和pts

tty(终端设备的统称):
tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。

pty(虚拟终端):
但是如果我们远程telnet到主机或使用xterm时也需要一个终端交互,这就是虚拟终端pty(pseudo-tty)
pts (pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。

2013-02-18
发表者 Venus
暂无评论

数据计量单位

bit          比特   0/1     二进制位   二进制信息单位

Byte      字节    1 Byte = 8 bit = 1 字符

                           1 B = 8b

宽带计量:

bps/bs  每秒传输的信息位  bit per second

1 B = 8 b   1 B/s = 8b/s

1 KB = 1024 B   1 MB = 1024 KB