CGI的工作原理

CGI(Common Gateway Interface)是外部应用程序与Web服务器交互的一个标准接口。CGI应用程序可以完成客户端与服务器的交互操作,它打破了服务器软件的局限性,允许用户根据需要采用各种语言去实现无法用HTTP、HTML实现的功能,给WWW提供了更为广阔的应用空间。例如,一个能够访问外部数据库的CGI程序可以使客户端用户通过Web服务器进行数据库的查询。同时,CGI也为如何在不同的平台之间进行沟通提供了范例。
CGI工作的主要流程是:1.一个用户请求激活一个CGI应用程序;2.CGI应用程序将交互主页中用户输入的信息提取出来;3.将用户输入的信息传给服务器主机应用程序(如数据库查询);4.将服务器处理结果通过HTML文件返回给用户;5.CGI进程结束。
  CGI程序的工作原理是:客户端的Web浏览器浏览到某个主页后,利用一定的方式提交数据,并通过HTTP协议向Web服务器发出请求,服务器端的HTTP Daemon(守护进程)将描述的主页信息通过标准输入stdin和环境变量(environment variable)传递给主页指定的CGI程序,并启动此应用程序进行处理(包括对数据库的处理),处理结果通过标准输出stdout返回给HTTP Daemon守护进程,再由HTTP Daemon进程通过HTTP协议返回给客户端的浏览器,由浏览器负责解释执行,将最终的结果显示给用户。
  服务器使用环境变量(执行CGI程序时的设置)传输有关的请求信息到CGI程序,这些环境变量包括服务器的名字、CGI和服务器使用协议的版本号、客户端的IP地址和域名地址、客户端的请求方式、请求内容及编码方式、访问信息的合法性以及用户的输入信息等。
  CGI程序一般是可执行程序。编译好的CGI程序一般要集中放在一个目录下。具体存放的位置随操作系统的不同而不同(而且可以由用户自己根据情况进行配置),例如UNIX系统下的WWW服务器中一般放在cgi-bin子目录下,而在Windows操作系统下以Webstar或Website作WWW服务器,CGI程序都放在cgi-win下。不过,CGI程序的执行一般有两种调用方式:一是通过URL直接调用,如:"http://202.205.240.63/cgi-bin/test.cgi",在浏览器的URL栏里直接写入上述地址就可以调用该程序;另一种方式,也是主要的方式,是通过交互式主页中的FORM栏调用,通常都是用户在填完一张输入信息主页后按"确认"按钮启动CGI程序。主页的交互一般都是这样调用CGI来完成的。
  CGI的跨平台性能极佳,几乎可以在任何操作系统上实现,如DOS、Windows、UNIX、OS/2、Macintosh等。实现CGI的编程语言也有很多选择,常用的有Perl、C/C++、VisualBasic等。CGI的应用程序一般都是一个独立的可执行程序,与Web服务器各自占据着不同的进程,而且一般一个CGI程序只能处理一个用户请求。CGI的缺点也是显而易见的:每当有一个用户请求,就会激活一个CGI进程,当用户请求数量非常多时,大量的CGI程序就会大量挤占系统的资源,如内存、CPU时间等,造成CGI运行效率低下。
  正因为如此,Web服务器开发商又开发出了专用的API,它是驻留在Web服务器上的原始代码,可以像CGI那样扩展Web服务器的功能,同时又比CGI占用的资源少。但开发API应用程序比开发CGI应用程序更复杂,需要较多的编程技巧,如多线程、同步运行机制、直接的协议编程和容错处理等。

cfengine的介绍和配置


fengine是一个功能强大的自动化系统管理工具,它可以保证你的系统总是维持你所希望的那个状态。也就是说有黑客进来了修改了某个重要的配置文件的内容或者权限,也会被cfengine自动修复!它是一个很好的配置管理工具,比如现在有这样一个需求,你需要临时修改一下200多台服务器的一个配置参数,或者删掉某个权限,停掉某个服务等等,一般的我们只能不厌其烦的登录到服务器上去完成这个操作,但有了cfengine这个工具后,一个命令就可以搞定了,是不是很牛X?

cfengine大概的功能有:

·检查和配置网络接口
·编辑系统和用户的文本文件
·维护符号链接
·检查和设置文件的权限
·删除垃圾文件
·检查重要文件和文件系统的存在
·控制用户脚本和shell命令的执行
·基于类的判定结构
·进程管理

Cfengine是一个用于设置和维护计算机系统的工具,包含了以下几个组件:

·cfagent 自动配置代理(必须),其配置文件为cfupdate.conf和 cfagent.conf
·cfservd 文件服务和远程激活服务(推荐),其配置文件为cfservd.conf
·cfexecd 计划和报告服务(建议)
·cfenvd 异常检测服务(强烈建议)
·cfrun 远程激活cfagent的方法(需要的时候用这个),其配置文件为cfrun.hosts
·cfshow 检查有帮助的数据库的内容的方法(辅助)
·cfenvgraph  异常检测服务cfenvd的附属工具(辅助)
·cfkey 密匙生成工具(每台主机运行一次)。

cfengine常用的工作方式:(服务器激活方式)
这是一种集中控制的方式,这种工作方式是由服务器运行cfrun连接远程客户端的cfservd,激活远程主机的cfagent程序,例如现在有个配置需要立刻更改,有了cfrun就可以在中央机上对所有的客户发出指令让他们立即运行cfagent。

1)服务器上运行cfrun,cfrun会根据cfrun.hosts中的主机列表来连接到某个客户机的cfservd程序

2)客户机上cfservd调用本机的cfagent程序

3)客户机上cfagent程序执行update.conf,连接到中央机的cfservd复制下载策略文件cfagent.conf

4)客户机下载成功后执行最新版本的策略文件,不成功就执行旧版本的.

注:update.conf的内容一般为一些非常简单的固定操作:下载策略文件,清理日志,重启服务,基本上这个文件创建好了之后就不会更改了.在下载策略文件的时候如果下载成功,会将原策略文件改名,加上.cfsaved后缀

如何使用yum下载一个rpm包

1. 首选要安装 yum-downloadonly
# yum install -y yum-downloadonly.noarch
2. 下载一个rpm包而不安装
# yum install test.rpm -y --downloadonly   //这样虽然下载了,但是并没有保存到我们想要的目录下,那么如何指定目录呢,请看3
3.   下载到指定目录
# yum install test.rpm -y --downloadonly   --downloaddir=/usr/local/src

Linux与Windows文本格式之间的转换

在Linux中,文本文件用"\n"表示回车换行,而Windows用"\r\n"表示回车换行。所以在Linux中使用Windows的文本文件常常会出现错误
因为装了双系统,所以有时一些文件在两个系统之间共享,不过之前一直没有很在意这个问题.在windows系统中用Word或者Notepad++打开文件,在linux系统中一直用的是vim编辑器,不过昨天在命令行界面就只能用vi了..郁闷!! 中文支持都是个头痛的问题,在windows编辑过的文本文件每行末尾都会以^M以结尾...

Linux提供了两种文本格式相互转化的命令:dos2unix和unix2dos,dos2unix把"\r\n"转化成"\n",unix2dos把"\n"转化成"\r\n"。

在CentOS/Redhat  linux下,这两个命令默认都是安装的,如果没有,请使用
yum  install dos2unix  unix2dos
安装即可

unix  转换成 windows:
unix2dos   filename
windows  转换成 unix
dos2unix  filename

在linux下如何增大swap空间

# dd if=/dev/zero of=/.swapf bs=1024 count=102400  #bs默认为512,count默认单位是KB;
# mkswap /.swapf
# swapon /.swapf
# swapon -s  #显示swap挂载情况;
编辑/etc/fstab:
/.swapf swap swap defaults 0 0       如果有剩余空间的话,就更简单了:
比如,已经划分/dev/sda7为512M
# mkswap /dev/sda7
# swapon /dev/sda7
编辑/etc/fstab:
/dev/sda7    swap    swap    defaults 0 0

让wordpress tag 字体大小一致

1.打开wp-includes/category-template.php;

2.找到function wp_tag_cloud ( $args = ” );

3.修改。

参数说明:smallest是最小字号,largest是最大字号,两个数字设置成一样标签字号就大小一致了。unit是单位,number是显示数量,orderby是排序依据,orderby设置为name是按名称排序,设置为count是按使用频率排序。order后面的参数,ASC是指升序排列,若DESC则是指降序排列。

什么是etag工作原理及配置

Etag 是URL的Entity Tag,用于标示URL对象是否改变,区分不同语言和Session等等。具体内部含义是使服务器控制的,就像Cookie那样。
HTTP协议规格说明定义ETag为“被请求变量的实体值” 。另一种说法是,ETag是一个可以与Web资源关联的记号(token)。典型的Web资源可以一个Web页,但也可能是JSON或XML文档。服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端。
Etag在HTTP1.1中有介绍,主要的作用就是在(css file, image, javascript file)文件后面添加一个唯一的参数(相当于查询参数字符串),Etag有服务器端生成,并且随着文件的改变而改变,这样浏览器端就会只重新请求获取 Etag发生变化的文件,减少浏览器端数据的流量,加快浏览器的反应速度,重要的是减轻服务器端的压力,所以服务器端Etag的实现就比较重要了。
现在我们有个问题为什么要使用Etag呢?
Etag主要为了解决Last-Modified无法解决的一些问题.他能比Last_Modified更加精确的知道文件是否被修改过.如果有个 文件修改非常频繁,比如在秒以下的时间内进行修改,比如1秒内修改了10次,If-Modified-Since能检查只能秒级的修改,所以这种修改无法 判断.原因是UNIX记录MTIME只能精确到秒.所以我们选择生成Etag,因为Etag可以综合Inode,MTime和Size,可以避免这个问题.

使用 screen 管理你的远程会话


你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是不是经常为一些长时间运行的任务而头疼,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为他们执行的时间太长了。必须等待它执行完毕,在此期间可不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。有了screen,它会给你一个惊喜!

我最常用的是输入screen后,在2个终端间使用快捷键ctrl+a(连续2次),这样这2个界面就轮回切换
下载地址:http://ftp.gnu.org/pub/gnu/screen/screen-4.0.2.tar.gz

常用浏览器(电脑以及手机)useragent 汇总

Windows操作系统浏览器系列:


IE浏览器系列:
特征表现:均以 "mozilla/" 开头,"msie x.0;" 中的x表示其版本;
判断方法:粗略判断可以只检索 "msie x.0;" 字符串即可,严格判断可检索 "mozilla/x.0 (compatibal; msie x.0; windows nt",不过一般没有这个必要
Windows版Firefox:
特征表现:以"mozilla/x.0"开头,包含"windows nt","gecko/"和"firefox/" ;
判断方法:粗略判断可以只检索 "firefox/"和"windows nt" 字符串,严格判断可以检索"mozilla/" ,"windows nt","gecko/"和"firefox/" 四个字符串;
Windows版Chrome:
特征表现: 以"mozilla/x.0"开头,包含"windows nt","chrome/",同时包含"applewebkit/","safari/";
判断方法:粗略判断可以只检索 "windows nt"和"chrome/"字符串,严格判断可以同时检索 "mozilla/" ,"windows nt","applewebkit/","safari/","chrome/" 五个字符串;
Windows版Opera:
特征表现:以"opera/"开头,含有"windows nt","presto/" 字符串;
判断方法:粗略判断只检索 "windows nt"和"opera/"字符串,严格判断同时检索 "opera/","windows nt" 和 "presto/";
Windows版Safari:
特征表现:以"mozilla/"开头,同时含有"windows nt","applewebkit/","safari/";
判断方法:粗略判断可以检索含有 "windows nt","safari/" 同时不包含 "chrome/",严格判断需要同时含有"mozilla/","windows nt","applewebkit/","safari/"但是不包含"chrome/";   
小结:Windows操作系统上的浏览器userAgent均包含"windows nt"字符串来表征windows操作系统。


iPhone平台浏览器系列:
iPhone自带safari:
特征表现:以"mozilla/"开头,含有"iphone"字符串,同时含有 "mobile/","safari/"字符串;
判断方法:粗略判断只检索 "iphone"和"safari/"字符串,严格判断则要同时包含 "mozilla/","iphone","mobile/","safari/"四个字符串
iPhone版Opera Mobile:
特征表现: 以"opera/"开头,含有"iphone"字符串,同时含有 "opera mini/","presto/"字符串;
判断方法:粗略判断只检索 "iphone"和"opera/"字符串,严格判断则要同时包含 "opera/","iphone","opera mini/","presto/"四个字符串
小结:iPhone手机上的浏览器userAgent均包含"iphone"字符串


Android平台浏览器系列:
Android自带浏览器(有人说其实是就chrome,但google自己未做表示,且还在开发一个Android上运行的Chrome to Phone):
特征表现: 以"mozilla/"开头,含有"android"和"linux" 字符串,同时含有 "applewebkit/","mobile safari/"字符串;
判断方法:因为还不知道Android上未来会不会有独立的safari(估计不会了),所以建议直接严格判断,检索 "mozilla/","android","linux","applewebkit/","mobile safari/"五个字符串
Android版Opera Mobile:
特征表现: 以"opera/"开头,含有"android"和"linux" 字符串,同时含有 "opera mobi/","presto/"字符串;
判断方法:粗略判断只检索 "android"和"opera/",严格判断则要同时包含"opera/","android","linux","opera mobi/","presto/"五个字符串
Android版Firefox:
特征表现:以"mozilla/"开头,含有"android"和"linux" 字符串,同时含有 "firefox/","gecko/","fennec/"字符串;
判断方法:粗略判断只检索 "android"和"firefox/",严格判断则要同时包含"mozilla/","android","linux","firefox/","gecko/","fennec/"六个字符串  
小结:Android平台上的浏览器userAgent均包含"android"和"linux"字符串

目前手机浏览器中比较火的是 UC浏览器,它的useragent 有一个特点。肯定是包含  UCWEB 这个字眼。

apt-get 的使用


1.修改source list文件
配置文件是/etc/apt/sources.list
在文件中添加如下的两行
deb ftp://ftp.iitm.ac.in/debian/ stable main
deb-src ftp://ftp.iitm.ac.in/debian/ stable main
这两个位于印度的服务器,下载的速度很快。
2.apt-get update用于获取最新的软件信息。

3.使用apt-get install package进行指定软件的安装
例如:apt-get install vim
4.apt-get remove package进行软件的移除
5.apt-get source package获取软件的源代码
6.apt-get clean清除下载的deb
来自: www.linuxsir.org

一基本配置

1. /etc/apt/sources.list文件的基本格式:

deb http://site.http.org/debian distribution section1 section2 section3
deb-src http://site.http.org/debian distribution section1 section2 section3

deb 二进制程序包 deb-src 原代码程序包
例如:

deb http://http.us.debian.org/debian stable main contrib non-free
deb-src http://non-us.debian.org/debian-non-US stable non-US

deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb-src http://http.us.debian.org/debian stable main contrib non-free

apt 会忽略以"#"开头的行

注意: 修改/etc/apt/sources.list后,应及时更新数据库列表

2.制作本地apt

# mkdir /root/debs
将自己收集的.deb包考入/root/debs目录
# dpkg-scanpackages debs| gzip > debs/Packages.gz
在/etc/apt/sources.listdeb 加入:
file:/root debs/

3.寻找速度最快的下载镜相:netselect, netselect-apt

安装netselect软件包
# apt-get install netselect
测试我使用的镜像
# netselect security.debian.org ftp.us.debian.org ftp.jp.debian.org non-us.debian.org people.debian.org gluck.debian.org
520 ftp.jp.debian.org
#
看到了我所使用的镜像中 ftp.jp.debian.org速度最快 得分为520 (得分越低越好)
你可以在这里查找debian的镜像列表 http://www.debian.org/mirror/mirrors_full
你也可以用netselect-apt下载列表
# ls sources.list
ls: sources.list: File or directory not found
# netselect-apt stable
(...)
# ls -l sources.list
sources.list
#
前提是你已经安装并运行了'wget'包

4.把CD-ROM加入到你的/etc/apt/sources.list文件

如果使用apt自动从CD-ROM上安装软件或升级系统,可以把它加入/etc/apt/sources.list文件
# apt-cdrom add

注: CD-ROM必须在/etc/fstab文件中已正确配置

二、管理包

1.apt系统使用一个数据库列表来记录系统已经安装了哪些软件,哪些没有安装,哪些软件可以通过apt系统自动安装 apt-get通过分析这个数据库来决定如何安装软件,
应该经常运行#apt-get update来更新此数据库

2.安装软件包
# apt-get install packagename
apt-get的参数
-h This help text.
-d Download only - do NOT install or unpack archives
-f Attempt to continue if the integrity check fails
-s No-act. Perform ordering simulation
-y Assume Yes to all queries and do not prompt
-u Show a list of upgraded packages as well

软件包会被下载到/var/cache/apt/archives 稍后进行安装
如果一个软件包坏了,或者你只是想重新安装一个软件的最新版本 ,可以使用--reinstall参数,如
# apt-get --reinstall install gdm
在安装软件时,可以用apt-get install package/distribution或apt-get install package=version来指定软件的安装版本,如
# apt-get install nautilus/unstable

3.移除软件包
apt-get remove package
# apt-get remove gnome-panel
这样就会移除gnome-panel以及对gnome-panel有依赖性的软件包,无法使用apt系统仅仅移除此软件,而保留对它有依赖性的软件包。
apt-get remove package并不能移除这些软件的配置文件
# apt-get --purge remove gnome-panel
就可以一块把他的配置文件移除

4.升级软件包
apt-get upgrade

5.升级到一个新的版本
# apt-get -u dist-upgrade

6.移除无用的软件包
当安装软件时,软件包会被先下载到/var/cache/apt/archives/目录下,然后安装。这样这个目录所占空间会越来越大,幸运的是apt提供了相应的管理工具
apt-get clean删除/var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/目录下所有包(锁定的除外)。
apt-get autoclean仅删除不再能被下载的包

7.
8.如何维持一个混合的系统
鉴于testing版unstable版本比稳定,又比stable版本要新 ,很多人使用testing,可是有些人想运行某个软件的最新版,却又不愿把这个系统升级为unstable,即想使用一个混合的系统,那么可以这样做:
在 /etc/apt/apt.conf 加入:
APT::Default-Release "testing";
当要安装unstable软件时 加 -t 参数:
# apt-get -t unstable install packagename
注:不要忘记在/etc/apt/sources.list中加入相应的源

9.从一个特定的debian版本升级软
# apt-get install `apt-show-versions -u -b | grep unstable`件

10.如何在软件升级时避免特定软件不会被升级
如果你使用的bebian版本在2.2以上,仅仅需要修改/etc/apt/preferences 文件
格式非常简单:
Package: Pin: Priority:

例如我要保持gaim的0.58版本 只需加上:
Package: gaim
Pin: version 0.58*
统配符 * 指锁定以0.58开头的所有版本 这就是说即使存在0.58-1 或类似 也不会被安装
Priority(优先级)是可选项 默认 989
<0 此软件永不会被安装
0~100 软件不被安装,不是有效的版本
>100 此软件会被安装 即 如果有更新版本,软件会被升级
100~1000 软件不会被降级安装,例如:我安装的gaim 0.59 , 锁定gaim 0.58 ,优先级为999
那么0.58就不会被安装 ,如果要降级安装 则优先级许大于 1000

获取软件信息

1.搜寻软件名
# apt-cache search gaim
软件信息
# apt-cache show gaim
如果已经安装,并且又有了新版本,那么都会显示,安装版本在后
获取更多信息
# apt-cache showpkg gaim
查询软件的依赖性
# apt-cache depends gaim

2.用dpkg查询软件名
根据某一个文件查询软件名
# dpkg -S stdio.h

3.询问式安装
# auto-apt run command

4.查询文件的归属
# apt-file search filename
就象dpkg -S 但可以查询,但可以查未安装软件包
也可以查询一个包所含文件
# apt-file list packagename
它会用到数据库所以要及时更新
# apt-file update

程序源文件

1.下载程序源码
# apt-get source packagename
这样就会下载三个文件 a .orig.tar.gz, a .dsc 和 a .diff.gz
下载后自动打包
# apt-get -b source packagename

2.编译软件
# apt-get build-dep gmc
下载所编译包的依赖程序

sudo apt-get -f install 修复安装"-f = --fix-missing"

如果在运行apt-get install package时,你的系统报告如下信息:


Reading Package Lists... Done

Building Dependency Tree... Done

W: Couldn't stat source package list 'http://people.debian.org unstable/ Packages' (/var/state/apt/lists/people.debian.org_%7ekov_debian_unstable_Packages) - stat (2 No such file or directory)

W: You may want to run apt-get update to correct these missing files

E: Couldn't find package penguineyes

上次你修改/etc/apt/sources.list后,忘了运行apt-get update更新。

如果出现这样的信息:

E: Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied)

E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

如果你没有root权限,运行除source外的其它apt-get命 令,如会出现上面的错误信息。这是因为你是普通用户。

当你同时运行两个apt-get进程,或者当你试图运行apt-get时已有一个的dpkg进程处于激活状态,系统也 会报告与上面相似的错误信息。唯一能与其它命令同时运行的只有source 命令。

如果在安装过程中出现中断,然后你发现该软件包既不能重装又不能删除,试试下 面两个命令:

# apt-get -f install

# dpkg --configure -a

再试着安装那个软件包,如果不行再次运行上述命令后再试。这两个命令对于那些 使用unstable的玩家非常有用。

如果你在运行apt-get update时看到“E: Dynamic MMap ran out of room”, 那么在/etc/apt/apt.conf加入如下内容:

APT::Cache-Limit 10000000;



另附:

常用的APT命令参数(转载) 作者: feng_li_82
关键字:
apt-cache search package 搜索包
apt-cache show package 获取包的相关信息,如说明、大小、版本等
sudo apt-get install package 安装包
sudo apt-get install package - - reinstall 重新安装包
sudo apt-get -f install 修复安装"-f = --fix-missing"
sudo apt-get remove package 删除包
sudo apt-get remove package - - purge 删除包,包括删除配置文件等
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-get dselect-upgrade 使用 dselect 升级
apt-cache depends package 了解使用依赖
apt-cache rdepends package 是查看该包被哪些包依赖
sudo apt-get build-dep package 安装相关的编译环境
apt-get source package 下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean 清理无用的包
sudo apt-get check 检查是否有损坏的依赖

安装net-snmp

net-snmp 的安装和配置
从以下地址可以下载到最新的软件安装包:
http://nchc.dl.sourceforge.net/s ... snmp-5.4.2.1.tar.gz
http://mylinux.5d6d.com/userdirs/c/f/mylinux/attachments/month_1004/net-snmp-5.5.zip
1、解压源码包:
tar –zxvf net-snmp-5.4.2.1.tar.gz
2、进入解压后的文件目录:
cd net-snmp-5.4.2.1
3、执行文件目录下的configure可执行文件,如果想指定程序包的安装路径,那么您首先建立相应的文件夹来存放安装信息,您可以写成./configure –prefix=/您指定的路径名。参数—prefix用来告诉系统安装信息存放的路径,如果您没有指定路径,直接执行./configure,那么程序包都会安装在系统默认的目录下,通常为:/usr/local下。例如:
./configure --prefix=/usr/local/snmp //配置 指定安装目录,安装过程会询问您以下的信息:
注意:以下问题似乎不怎么重要,那好像仅仅是官方想了解使用本软件方的信息,可以直接回车而不用回答,系统会采用默认信息,其中日志文件默认安装在/var/log/snmpd.log.数据存贮目录默认存放在/var/net-snmp下。
default version of-snmp-version(3): 3(在这里版本通常有三种形式:1,2c,3)
Systemcontact information(配置该设备的联系信息): heaven(也可以是邮箱地址)
System location (该系统设备的地理位置):BEIJING P.R China
Location to write logfile (日志文件位置): /var/log/snmpd.log
Location to Write persistent(数据存储目录): /var/net-snmp
4、#make
编译源码包文件,通常只需要执行make命令,系统会根据Makefile层层进行编译,第一次编译这需要大约20分钟的时间哦,您需要有耐心等待(RedHat4系统通常会相继出现两个编译错误,您此时可以参考我在本页后面写的出错处理方式来解决). 如果make 成功的话,那么紧接着安装程序了,这一步一般不会出现怪异的错误,安装也比较费时,大约要花费10分钟呢.

#make install
5、在完成上面的步骤后紧接着制作配置文件  *.conf,在这里有两种方式,一种方式是用命令snmpconf -g basic_setup生成snmpd.conf文件,但需要回答很多没用的问题,比较费时,我这里用了一种较简便的方法生成配置文件,就是把解压后的那个文件目录下的EXAMPLE.conf文件拷在我们的安装路径下并修改,命令格式如下:
cp EXAMPLE.conf /usr/local/snmp/snmpd.conf //cp样例配置到安装目录下
6、vi /usr/local/snmp/snmpd.conf //编辑配置文件
把里面的NETWORK 改成需要查看snmp信息的主机ip 地址
把COMMUNITY改成你设定的值(自己起个字符串形式的名字)。
然后保存退出
7、/usr/local/sbin/snmpd –c /usr/local/snmp/snmpd.conf & //启动snmp
8、netstat -an  //查看snmp是否启动
9、在脚本里配置snmp,使其在开机时自启动snmpd服务。(也可以不写在脚本里,每次系统启动后执行一下第7步就行了)。在脚本里的编写:
vi /etc/rc.local
添加 usr/local/sbin/snmpd –c /usr/local/snmp/snmpd.conf &
10、关闭snmp服务
ps aux |grep snmp |grep -v grep |awk '{print $2}' |xargs kill
11出错处理机制
也许在执行第四不步make后,过了一会儿程序退出,并提示一下错误:
Grep /usr/lib/libbeecrypt.la: No such file or directory
/bin/sed: can't read /usr/lib/libbeecrypt.la: No such file or directory
libtool: link: `/usr/lib/libbeecrypt.la' is not a valid libtool archive
make[1]: *** [libnetsnmpmibs.la] Error 1
make[1]:Leavingdirectory /email/share/ceno_soft/net-snmp-5.4.1/agent'
make: *** [subdirs] Error 1
解决方法
说明缺少libbeecrypt.la ,libbeecrypt.so等共享库
如果确认系统中有libbeecrypt.la,也许他安装在/usr/local下面,可尝试:
ln -s /usr/local/lib/libbeecrypt.la /usr/lib/libbeecrypt.la
如果/usr/local下面没有,那么你必须安装beecrypt
下载路径
http://nchc.dl.sourceforge.net/s ... ecrypt-4.1.2.tar.gz
http://mylinux.5d6d.com/userdirs/c/f/mylinux/attachments/month_1004/beecrypt-4.1.2.tar.gz
解压并安装到/usr目录下:
tar -zxvf beecrypt-4.1.2.tar.gz
./configure -prefix=/usr
#默认是安装在/usr/local,我们需要安装在/usr目录下。如果没有加这个参数需要做连接
ln -s /usr/local/lib/libbeecrypt.la /usr/lib/libbeecrypt.la
编译并安装beecrypt库,先执行make编译源码包文件编译成功后执行安装命令make install,其命令如下:
#make
#make install
好,beecrypt安装完成后,我们继续NET-SNMP的编译,执行一下make 命令。
当我们继续make的时候,第一个错消逝了,但不幸的是出现了一个新的错误,错误提示如下:rpath -Wl,/usr/local/lib
/usr/bin/ld: cannot find –lelf
collect2: ld returned 1 exit status
make[1]: *** [snmpd] Error 1 make[1]: Leaving directory `/local/akazam/cacti/bak/net-snmp-5.4.2/agent'
make: *** [subdirs] Error 1
ke[1]: Leaving directory `/local/akazam/cacti/bak/net-snmp-5.4.2/agent
make: *** [subdirs] Error 1
解决方法
执行命令: ln -s /usr/lib/libelf.so.1  /usr/lib/libelf.so
现在估计该装的软件包都已经装上了,链接库也差不多了吧,我们现在可以大胆的回到net-snmp-5.4.2.1目录下,继续从第4步往下执行,这样就一路畅通了。

【转帖】2010年互联网发展盘点

2010年的互联网行业发生了不小变化,整个行业依然保持高速发展的势态,中国互联网界各巨头都已经在各自的领域占据了强势位置,同时又不断向邻近领域扩张。巨头之间的竞争进入白热化,各大公司在互联网行业的热点领域激烈交火,本期月光博客推出2010年终专稿,为大家盘点2010年IT科技互联网领域最引人注目的几大热点。  微博 - 关键字:社交网络,个人媒体,SNS
  如果说2008年是中国SNS网络兴起的元年,那么2010可以称之为中国微博元年。
  2006年Twitter带来的新兴的微博概念,2007年建立的饭否在中国市场形成一个不错的发展高潮,然而到了2009年7月,饭否等一大批微博网站因为政策问题而相继停止运营,微博在中国陷入一个低谷,直到2009年8月新浪启动微博测试,当时没有人知道新浪微博的未来发展会是什么样子。


  新浪微博采取了新浪博客推广的成功经验,以“名人”为突破点,逐步打造人气,经过长达一年的不懈努力,终于大获成功,在2010年在全国范围掀起了一场微博浪潮,截至2010年10月底,新浪微博用户数已高达5000万。
  新浪微博的成功引起各大门户网站对于微博产品的跟进,2010年搜狐、腾讯、网易、百度、天涯相继推出微博产品,微博成为各大网站的标配产品。微博的概念在2010年得到了空前的普及。
  根据百度指数和谷歌网站趋势显示,在2010年初,SNS的代表开心网面对新浪微博还具有明显的优势,然而随着时间的推移,开心网的用户关注度下降非常快,而新浪微博则呈现飞跃式地大幅上升,到了2010年11月份,新浪微博的用户关注度已经超过了开心网,并且逐渐和开心网拉大距离,开心网的下降颓势依旧没有停止的趋势,总体看来,SNS大势已去,微博方兴未艾。


百度指数对比新浪微博和开心网



谷歌网站趋势对比新浪微博和开心网


  Android -关键字:移动互联网,开放平台
  2010年,Android系统成为最为火热的手机操作系统之一,HTC、三星、摩托罗拉等各大厂商都纷纷投身到Android阵营中来,基于该平台的手机风靡市场。Android之所以能够取得如此惊艳的成绩,除了系统不断向更好的方向发展外,更多的还得益于它的免费且开源,这为Android赢得了大大小小的手机厂商和运营商的支持。


热门Android手机:三星i9000


  Android最早于2008年10月22日随着谷歌G1正式与用户见面,截至2008年底,Android的全球市场份额仅为0.5%,到了2009年,Android也仅仅发展成为第六大智能平台。然而到2010年,在众多手机厂商的支持下,Android的潜力完全被激发。先是于第二季度增长了851%之后,成为了美国第一大智能手机平台;其次在第三季度取代了黑莓平台,继而成为全球第二大智能操作系统;同样是在第三季度,Android还在亚洲击败了一直固守智能手机第一位的老牌Symbian,在欧洲智能手机市场晋升为第三大智能平台,Android在2010年的发展势头已经大大超过了所有人的预期,呈现“井喷”之势,一些研究机构开始预测,明年Android在智能手机平台争霸战中就会成为全球第一。Android的发展后劲十足,充满了潜力。
  iPad - 关键字:开放平台,电子书,应用商店,平板
  2010年,苹果的新产品“iPad”出尽了风头,据Google发布的2010年度全球热门搜索关键字排行榜显示,“iPad”成为第二大最热门的搜索关键字。iPad进入市场仅仅6个月的时间,销量已经超过700万部,而且iPad正在以超过过去十年间任何产品的速度改变着电脑产业。


苹果iPad


  iPad改变了人们对技术的观念,iPad的推出为新一代的电子设备铺平了道路,iPad这种侧重于网络和移动应用的娱乐终端,触摸屏的交互方式,也逐渐被消费者接受并采用。尽管iPad的主要应用还是电子阅读、上网、游戏、视频播放等娱乐应用,但iPad已经改变个人电脑的市场格局,各个大牌电脑厂商纷纷投入到平板电脑的争夺战中,推出基于Android的平板终端,可以预见,明年的平板市场将面临异常激烈的战争。
  iPhone4 -关键字:移动互联网,应用商店
  新一代苹果iPhone在2010年的登场万众瞩目,虽然有“信号门事件”以及谷歌Android的威胁,但iPhone4依然受到了媒体和大众的青睐,成为人们追捧的对象,更在推出前3天就预售170万部。而在中国,支持WiFi功能的iPhone4也得以在销售,更引发了人们疯狂抢购,导致iPhone4“一机难求”,目前苹果在国内的旗舰店以及网店均长期显示iPhone4缺货,其热门程度可见一斑。


苹果iPhone4


  iPhone做为全球最畅销的智能手机之一,其成功的一大关键就是“应用商店(App Store)”,苹果公司依靠iPhone的应用商店,不仅极大增加了手机的功能,而且也为苹果公司轻而易举地带来可观收入,因这些商店中的应用程序多数由第三方开发,苹果公司还可以与它们进行利润分成,成为一种新的商业赢利模式,使得苹果iPhone与各个手机软件供应商相互发展,实现共赢。
  Dropbox - 关键字:云计算,云存储
  云存储是在云计算概念上延伸和发展出来的一个新的概念,当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,那么云计算系统就转变成为一个云存储系统。
  从某种意义上讲,大名鼎鼎的Gmail就是一个邮件云存储的典型案例,有了Gmail之后,用户不必将邮件存储在本地,而是放在海量的Gmail服务器上,随时随刻可以上网查看邮件。
  然而,Gmail仅仅用于邮件存储,做为通用型的文件存储服务,Dropbox无疑是最好用的文件同步工具之一。


Dropbox


  Dropbox提供的初始免费空间是2GB,可以通过邀请增大到10GB,可以实现多台电脑上文件共享和同步文件。
  Dropbox作为存储服务,主要专注于同步和共享,紧紧跟随用户的需求,将用户的使用体验做到近乎完美,文件同步速度稳定且快速,产品几乎无懈可击。
  自2010年5月份之后,Dropbox无法从中国访问,短时间内国内涌现出大量同类的复制产品,包括“金山快盘”、华为的“数据银行”、“新浪微盘”等等,加上国外早就有的SugarSync、Windows Live Mesh等服务,中国云存储服务市场空前活跃。
  未来趋势和发展
  从2010年的这些行业热点产品,大致可以看出未来整个行业的发展动向。
  移动互联网:2010年依然是中国移动互联网的概念年,但随着Android、iPhone等智能手机的普及,移动互联网在未来将出现一个突破点。目前移动互联网的几个主要的发展点是:以Foursquare为例的LBS位置和签到服务,以Instagram为例的手机社会化照片分享服务,以Pandora为例的手机社会化音乐服务,以Kik、WhatsApp为例的社交短信服务,以Viber为例的网络电话服务等等。
  电子商务:未来电子商务的发展将走向社会化、移动化、本地化等方向发展,在社会化电子商务中,使用类似豆瓣的机制来猜测用户的喜好,给用户推荐最适合其口味的商品,使用团购网的方式来提供简单易用而高黏度的本地化服务,使用移动手机来准确定位用户周围的商家和优惠信息等等,最终向社会化电子商务形态发展。
  应用商店和开放平台:通过开放平台让第三方开发者得以将其服务运行在统一的平台,通过开放平台自身服务和第三方应用的互利互惠,提高用户对平台网站的粘性和使用程度,进而提高获利,同时,通过利益分摊,达到平台自身和第三方应用循环刺激而产生的滚雪球式的增长。苹果公司“终端+应用”的模式让App Store大获成功,让各方都争先恐后地建立起自己的应用商店,其中谷歌的Android应用商店也获得不错的成绩,中国各个电信运营商也纷纷沿袭了苹果公司App Store的分成模式,打造属于自己的应用商店。
  结语
  2010年的科技发展令人眼花缭乱,一个个令人炫目的高新产品将人们的梦想变为现实。科技创造着新的生活,并影响着未来的发展,而“创新”正是科技发展的活力之源。展望2011年的互联网科技,相信会有一个更令人遐想和惊喜的新面貌。

session和cookie的区别是什么?

1、session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。   
   
2、session中保存的是对象,cookie中保存的是字符串。   
   
3、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的

Linux服务器性能评估与优化

转载:http://www.517sou.net/Article/104.aspx

一、影响Linux服务器性能的因素

1. 操作系统级

&Oslash;       CPU

&Oslash;       内存

&Oslash;       磁盘I/O带宽

&Oslash;       网络I/O带宽

2.        程序应用级

二、系统性能评估标准

其中:

       %user:表示CPU处在用户模式下的时间百分比。

       %sys:表示CPU处在系统模式下的时间百分比。

       %iowait:表示CPU等待输入输出完成时间的百分比。

       swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM

       swap out:即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK。



三、系统性能分析工具

  

1.常用系统命令

Vmstat、sar、iostat、netstat、free、ps、top等

  

2.常用组合方式

•           用vmstat、sar、iostat检测是否是CPU瓶颈

•           用free、vmstat检测是否是内存瓶颈

•           用iostat检测是否是磁盘I/O瓶颈

•           用netstat检测是否是网络带宽瓶颈

  

四、Linux性能评估与优化



1. 系统整体性能评估(uptime命令)



[root@web1 ~]# uptime

16:38:00 up 118 days,  3:01,  5 users,  load average: 1.22, 1.02, 0.91

这里需要注意的是:load average这个输出值,这三个值的大小一般不能大于系统CPU的个数,例如,本输出中系统有8个CPU,如果load average的三个值长期大于8时,说明CPU很繁忙,负载很高,可能会影响系统性能,但是偶尔大于8时,倒不用担心,一般不会影响系统性能。相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲的时间片,比如本例中的输出,CPU是非常空闲的。



2. CPU性能评估



(1)利用vmstat命令监控系统CPU

   该命令可以显示关于系统各种资源之间相关性能的简要信息,这里我们主要用它来看CPU一个负载情况。

   下面是vmstat命令在某个系统的输出结果:

  

[root@node1 ~]# vmstat 2 3

procs -----------memory----------  ---swap--  -----io---- --system--  -----cpu------

r  b   swpd   free      buff  cache   si   so    bi    bo       in     cs     us sy  id   wa st

0  0    0    162240   8304  67032   0    0    13    21   1007   23     0  1   98   0   0

0  0    0    162240   8304  67032   0    0     1     0     1010   20     0  1   100 0   0

0  0    0    162240   8304  67032   0    0     1     1     1009   18     0  1    99  0   0

l        Procs

     r列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,说明CPU不足,需要增加CPU。

     b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

l        Cpu

    us列显示了用户进程消耗的CPU 时间百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,就需要考虑优化程序或算法。

     sy列显示了内核进程消耗的CPU时间百分比。Sy的值较高时,说明内核消耗的CPU资源很多。

    根据经验,us+sy的参考值为80%,如果us+sy大于 80%说明可能存在CPU资源不足。



(2)利用sar命令监控系统CPU



sar功能很强大,可以对系统的每个方面进行单独的统计,但是使用sar命令会增加系统开销,不过这些开销是可以评估的,对系统的统计结果不会有很大影响。

下面是sar命令对某个系统的CPU统计输出:

[root@webserver ~]# sar -u 3 5

Linux 2.6.9-42.ELsmp (webserver)        11/28/2008      _i686_  (8 CPU)

11:41:24 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle

11:41:27 AM     all      0.88      0.00      0.29      0.00      0.00     98.83

11:41:30 AM     all      0.13      0.00      0.17      0.21      0.00     99.50

11:41:33 AM     all      0.04      0.00      0.04      0.00      0.00     99.92

11:41:36 AM     all      90.08     0.00      0.13      0.16      0.00     9.63

11:41:39 AM     all      0.38      0.00      0.17      0.04      0.00     99.41

Average:        all      0.34      0.00      0.16      0.05      0.00     99.45

                           

对上面每项的输出解释如下:

l        %user列显示了用户进程消耗的CPU 时间百分比。

l        %nice列显示了运行正常进程所消耗的CPU 时间百分比。

l        %system列显示了系统进程消耗的CPU时间百分比。

l        %iowait列显示了IO等待所占用的CPU时间百分比

l        %steal列显示了在内存相对紧张的环境下pagein强制对不同的页面进行的steal操作 。

l        %idle列显示了CPU处在空闲状态的时间百分比。



问题

1.你是否遇到过系统CPU整体利用率不高,而应用缓慢的现象?

       在一个多CPU的系统中,如果程序使用了单线程,会出现这么一个现象,CPU的整体使用率不高,但是系统应用却响应缓慢,这可能是由于程序使用单线程的原因,单线程只使用一个CPU,导致这个CPU占用率为100%,无法处理其它请求,而其它的CPU却闲置,这就导致了整体CPU使用率不高,而应用缓慢现象的发生。



3. 内存性能评估

(1)利用free指令监控内存

free是监控linux内存使用状况最常用的指令,看下面的一个输出:

[root@webserver ~]# free  -m

                total         used       free     shared    buffers     cached

Mem:       8111       7185        926          0        243           6299

-/+ buffers/cache:     643       7468

Swap:       8189          0         8189

     一般有这样一个经验公式:应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能,应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,需要增加系统内存,20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。

3.内存性能评估



(1)利用free指令监控内存

free是监控linux内存使用状况最常用的指令,看下面的一个输出:

[root@webserver ~]# free  -m

                total         used       free     shared    buffers     cached

Mem:       8111       7185        926          0        243           6299

-/+ buffers/cache:     643       7468

Swap:       8189          0         8189

     一般有这样一个经验公式:应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能,应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,需要增加系统内存,20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。

  

(2)利用vmstat命令监控内存

  

[root@node1 ~]# vmstat 2 3

procs -----------memory----------  ---swap--  -----io---- --system--  -----cpu------

r  b   swpd   free      buff  cache   si   so    bi    bo       in     cs     us sy  id  wa st

0  0    0    162240   8304  67032   0    0    13    21   1007   23     0  1  98   0  0

0  0    0    162240   8304  67032   0    0     1     0     1010   20     0  1  100 0  0

0  0    0    162240   8304  67032   0    0     1     1     1009   18     0  1  99   0  0

l        memory

         swpd列表示切换到内存交换区的内存数量(以k为单位)。如果swpd的值不为0,或者比较大,只要si、so的值长期为0,这种情况下一般不用担心,不会影响系统性能。

         free列表示当前空闲的物理内存数量(以k为单位)

         buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲。

         cache列表示page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached,如果cache值较大,说明cached的文件数较多,如果此时IO中bi比较小,说明文件系统效率比较好。

l        swap

si列表示由磁盘调入内存,也就是内存进入内存交换区的数量。

so列表示由内存调入磁盘,也就是内存交换区进入内存的数量。

一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足。需要增加系统内存。



4.磁盘I/O性能评估  

(1)磁盘存储基础

l             熟悉RAID存储方式,可以根据应用的不同,选择不同的RAID方式。

l             尽可能用内存的读写代替直接磁盘I/O,使频繁访问的文件或数据放入内存中进行操作处理,因为内存读写操作比直接磁盘读写的效率要高千倍。

l             将经常进行读写的文件与长期不变的文件独立出来,分别放置到不同的磁盘设备上。

l              对于写操作频繁的数据,可以考虑使用裸设备代替文件系统。

         

       使用裸设备的优点有:

ü           数据可以直接读写,不需要经过操作系统级的缓存,节省了内存资源,避免了内存资源争用。

ü           避免了文件系统级的维护开销,比如文件系统需要维护超级块、I-node等。

ü           避免了操作系统的cache预读功能,减少了I/O请求。

       使用裸设备的缺点是:

ü            数据管理、空间管理不灵活,需要很专业的人来操作。

FastDFS源码包下载

http://fastdfs.googlecode.com/files/FastDFS_v1.22.tar.gz

http://fastdfs.googlecode.com/files/FastDFS_v1.23.tar.gz

http://fastdfs.googlecode.com/files/FastDFS_v1.24.tar.gz