zzz 的个人资料Magic 's Forest , ...照片日志列表更多 ![]() | 帮助 |
|
|
11月26日 NTP配置NTP客户端
> service ntpd stop > ntpdate {服务器IP} >crond –e 每隔10分钟同步一次时间
================
NTP服务端 ntp-4.2.2p1-9.el5.centos.2.i386
> vi /etc/ntp.conf restrict 10.0.10.0 mask 255.255.255.0 nomodify notrap #允许client端 >service ntpd restart
~~~~~~~~~~~~~~~~
一些可以用的NTP服务器 cn.pool.ntp.org 133.100.11.8 prefer Memcachedwget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz 有可能还要libevent-devel的包 wget http://memcached.googlecode.com/files/memcached-1.4.3.tar.gz
memcached有用到libevent包,所以要先装下。 编译都没什么花头, ./configure && make && make install 默认是安装到/usr/local/bin下面
自己做个启动脚本
start() { stop() {
启动脚本里面如果要调试信息就加一个 –vv 的参数。
-p 端口11211 -m 使用的缓存大小 -d 作为后台运行 -u 指定用户,由于不能用root启动 所以要adduser -P 记录下pid,给stop用 -vv 详细信息显示 基本的 service 脚本#!/bin/sh RETVAL=0 start() { stop() { restart() { restart|reload) *) exit $RETVAL
这是一个最基本的service脚本 只要把要做的事情放到start和stop函数里面去就OK了。 更完善一点么就把路径什么的做成变量,做一些判断。 Java Installer Builder这2天做掉一个大项目,忙的这是~ 今天似乎没什么后续的任务 大概比计划完成的提早了吧 呵呵 领导们在开会,那就抓紧时间写点小结吧~ 先从小的项目开始
Java Installer Builder
打包程序,还蛮好玩的~ 就是制作安装程序的程序,我们以前装的游戏啊、程序啊 原来都是这么打包出来的,蛮好玩的~呵呵
用到的工具,Install4j,破解版下载地址 这个东东破解竟然还用到java代码,crack目录下面有个keygen.class 拷到安装路径 运行java keygen 就会有注册码出来了 我用的是这个 L-FLN#77002-1sx2e2c1spj1zb#325
………………………………………………
其实只要跟着一路next就ok了,不过在实际操作过程中还是有碰到些问题。
第一页 General Settings 这个是安装程序的名字,起的体面一点比较好。全小写的难看 Java版本,如果后面选择打包里面自带Java,就无所谓了。 安装过程用的Language,第一个是默认,下面可以增加多选,记得不要把默认的选进去 每个语言的文档其实都在${install4j}\resource\messages路径下面 可以把里面的install4j替换成想要的文字 打包好的安装程序放置的路径,下面还有默认生成文件名的格式、压缩方式、timestamp等 项目变量的设置 ~应该一般用不到吧。。
第二页 Files 要打包的文件夹,Add Files 然后选上整个目录 预览一下 readonly~ 指定要打包进去的文件 当然全选的话就不用改了
第三页 Launchers
New Launcher-> 我是用Generated Launcher的 执行安装的方式,其中有可以把这个程序做成Service的选项 输入执行程序的名字 这里就可以用一般文件名的格式了~还有设置执行的目录等。 下面有个Advanced Options,有一些细节的东西可以设置, 比如安装日志、服务启动的方式、Dependency等
icon 选择图标 要准备2个,16*16的和32*32的。大小不符合它会用自带那个,狠难看~
Java invocation 这个是最麻烦的地方了 先选Class Path,把根目录选进去。 然后记得把Main class要用到的Jar文件指定添加进去,指定目录的话是不会自动搜索的~ 然后选程序的Main class 下面可以填它的Parameters 下面有个Advanced Options,如果有的话 记得还要把Native Library Directory选进去
splash screen 启动程序时用的画面,就是那种刚启动时,屏幕中间会出来一段版权所有的这种半透明淡入淡出的图片
第四页 Installer 这个是安装过程的每个页面设置。 看是很多,其实仔细研究了一下基本没什么地方可以改动的,直接next好了 Custom Code,JAR文件的自定义代码 Application ID,Update用的 GUI 的一些选项 比如窗口大小、标题栏之类的 下面竟然有个 add install4j watermark to installer screens 的多选项。。记得去掉~ Installer Icon也可以自定义 Advanced里面有用console方式安装的后门参数等设置
第五页 Media 选For Windows还是For Mac、Unix/Linux 的 或者下面的archive 可以打包安装的那种,不用图形化。 安装路径 先勾上custom installation base directory的选项 后面填入C:\program File或者D:\之类的 上面填后续的程序目录名 中间没有什么 一直到第6部分 Bundled JRE 可以把JRE的包打在安装程序里,省的客户端没有安装环境什么的还要自己去找 先下载 然后就可以在选项里面选择了。 最后有个全面自定义的地方 几乎什么都可以再改一下。
第六页 Bulid 好,OK了 在这里Start就可以了。要看过程么可以把Enable extra verbose output勾出来看一看 Test Build貌似没什么用 还特费时间 不做也罢。 11月18日 Apache停止和重启(转)本文档叙述了在类Unix系统上如何停止和重启Apache 。 Windows NT/2000/XP/2003的用户请参见以服务方式运行Apache ,Windows 9x/ME用户则参见在控制台中运行Apache 。
简介为了停止或者重新启动Apache ,你必须向正在运行的 你可以用下面这样的命令来向父进程发送信号:
第二种方法是使用下面将要描述的 当你向
你可以修改这些示例以适应你的
立即停止
发送
优雅重启
重启代码的设计能够确保MPM进程控制指令的正常运作,也就是在重启过程中确保有适当数量的进程和线程以响应客户端的请求。它是这样 使用
目前,日志滚动脚本还无法使用 如果Apache重启时发现配置文件有误,那么父进程将不会重启,而是报错并退出。在优雅重启的情况下,它将在处理中的子进程存在的情况下维持它的存在(就是那些被要求在处理完它们的请求后"优雅退出"的子进程)。如果你要重启服务器,这将导致一些问题:它将不能绑定到它的监听端口。在执行重启之前,你可以用
立即重启
向父进程发送 使用 如果你重启时配置文件有误,那么父进程将不会重启,而是报错并退出。参见上文中避免的方法。
优雅停止
在"优雅"状态下,
必须注意确保诸如 你还必须防止潜在的竞争条件,比如使用
附录:信号和竞争条件在Apache 1.2b9 之前,有很多关于重启和死亡信号的竞争条件。关于竞争条件的一个简单描述是:一个时间敏感的问题,如果一些事情在不适当的时间或以不恰当的顺序发生,它将作出你不期望的反应;如果同样的事情在恰当的时间发生,则不会出现异常。凭借那些拥有"正确"特性设置的体系结构,我们尽量避免了它们的出现。但值得注意的是,仍然有一些竞争条件存在于这样的体系结构中。 使用物理磁盘的 当每个子进程在一个HTTP的持续连接(KeepAlive)中涉及到第二个并发的请求时,所有的结构都会或多或少存在竞争状态的问题。它将在读取了请求而没有读取任何请求头之后立刻退出。这个修复对于1.2来说来得太晚了。但因为持续连接的客户端已经考虑到网络延时和服务器超时会造成类似的情况,所以理论上说,这不是一个太大的问题。而实际上似乎也没有任何影响:在一个测试案例中服务器在一秒之内被重启了20次,而客户端却成功的浏览了网站,而且没有任何破损的图片或空文档。 11月16日 evasive limitipconn bandwidth 模块 (apache安全性,转)
mod_evasive防DDoS攻击 为了防止Web服务器被DDoS攻击,我们需要安装mod_evasive这个防DDoS的模块 mod_evasive 1.10.x防DDoS模块的下载与安装 解压后进入解压目录,执行 编译完成后,/home/apache/modules下会生成一个mod_evasive20.so文件 然后kate /home/apache/conf/httpd.conf #启用mod_evasive for Apache 2.x防DDoS模块 <IfModule mod_evasive20.c>
mod_limitipconn限制Apache的并发连接数 mod_limitipconn可以控制每个IP地址同时连接服务器某一个目录的并发连接数,是一个非常有用的模块,其官方网页是http: //dominia.org/djao/limitipconn.html,最新版本为for Apache 1.3.7的0.04,并且还有支持Apache 2.x的模块下载,由于本人使用Apache 1.3.7版本,所以请使用2.x版本Apache的朋友到其官方网站察看具体的使用方法。 mod_limitipconn for Apache 1.3x提供三种安装方式,分别是tar包、rpm安装文件和rpm源文件,由于rpm包只能用在 RedHat 7.x 版本,并且不支持检测代理服务器,所以我们一般都使用tar包的安装方式。 以管理员方式登陆服务器,然后在服务器上运行 wget http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz 将mod_limitipconn的tar包下载到服务器,然后按照再运行tar zxvf mod_limitipconn-0.04.tar.gz将tar包解压缩,会在当前目录下生成mod_limitipconn-0.04目录,然后cd mod_limitipconn-0.04进入此目录,下一步就是使用apxs将目录中的mod_limitipconn.c编译。这时,我们需要确定自己的Apache安装在那个目录,并且找到apxs命令放在哪里。 通过命令whereis apxs,我们可以确定apxs命令的路径,如我的apxs命令所在为/usr/sbin/apxs,则输入/usr/sbin/apxs -c -i -a mod_limitipconn.c对mod_limitipconn.c进行编译,此命令会自动在你Apache的配置文件httpd.conf中加入需要的信息,并且将生成的mod_limitipconn.so模块拷贝到Apache的模块目录。不过为了确认此命令是否正常运作,请首先检查自己的 Apache模块目录(我的是/usr/lib/apache),看内部是否含有mod_limitipconn.so文件,没有的话请将 mod_limitipconn-0.04目录中生成的文件拷贝到此处。 刚才命令自动生成的httpd.conf可能有些错误,在我的系统中,它将LoadModule limitipconn_module modules/mod_limitipconn.so放在了 <IfDefine HAVE_PYTHON> <IfDefine HAVE_PYTHON> mod_limitipconn可以对全局和虚拟主机进行不同的限制,其语法结构都是 <IfModule mod_limitipconn.c>
最后,只要重新启动Apache服务,并发连接数的限制就可以生效。
mod_bandwidth控制Apache的带宽 Apache 1.3.7实际上带有mod_bandwidth支持,只是没有此模块的so文件,我们所做的就是下载mod_bandwidth的源文件进行编译,并对mod_bandwidth进行相应的设置。 在下载之前,请先确认自己的Apache配置文件httpd.conf中是否含有 <IfDefine HAVE_BANDWIDTH>
<IfDefine HAVE_BANDWIDTH>
LoadModule bandwidth_module
确认后,请输入 wget ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c 将源文件下载到服务器,然后请使用apxs对其进行编译,编译方法和mod_limitipconn的基本相同,如我输入/usr/sbin/apxs -c mod_bandwidth.c -o /usr/lib/apache(Apache的模块目录),编译程序会自动将编译成功的mod_bandwidth.so文件放到Apache的模块目录,您也可以自己确认一下,若是不正常,拷贝过去即可。
mod_bandwidth运行时需要一些特定的目录,按照默认情况,请运行以下命令创建并更改目录的权限: mkdir /tmp/apachebw
<IfModule mod_bandwidth.c>
<Directory /home/www/thinkjam/download/soft>
mod_bandwidth还有许多其它有用的参数,如在中间加上MaxConnection 120则可以限制某个目录的最多连接数,当超过指定连接数时,拒绝新的连接,此参数与mod_limitipconn模块结合可以控制某个目录的最多连接人数。 其它的参数请朋友们到其官方网站 http://www.cohprog.com/v3/bandwidth/doc-en.html 察看相关的文档。 Apache的功能确实强大,很多功能都可以通过添加模块来实现,在 http://modules.apache.org/ 可以找到更多的模块,我们也可以编写自己的模块来实现相应的功能。 11月13日 单服务器多Mysql服务配置之前弄完了主从数据库的配置,考虑到每一台主服务器要一台从服务器好像有点夸张 于是接着准备在一台从服务器上备份多台服务器的工作。
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Mysql确实提供了这样的命令 mysqld_multi
~ ~ ~ ~ ~
不过执行这个脚本的时候会调用几个其他mysql的脚本,所以先要把mysql/bin路径做到PATH变量里面
~ ~ ~ ~ ~
接着就是最重要的my.cnf配置,出错了很久,基本就是这里面配置的不对。 我把现在配好的配置贴在这里~
multi脚本是看my.cnf里面的[mysqldX] 下面的配置,所以这个配置名一定要改成相应。
加粗的几个文档路径是一定要配的,其余的比如relay-log之类的倒不是必要。而且要给予相应的权限, 这个配置已经做好了slave的从数据库命令,不过change master命令还是一定要登上去做的
接着初始化数据库,直接拉一个过来也可以。反正就和之前没有什么区别了。
好了,把脚本起一下
接着登陆
这里有一个问题,如果-h参数用localhost的话是登陆到3306端口的,即使是-P指定了也不行 这点现在也没有搞懂 要注意的是现在登陆的是root@192.168.2.2的账号 和root@localhost账号权限是有区别的噢
登上去之后就和之前主从服务器一样操作了,结果就是一台服务器上起了多个mysql服务了咯。
~ ~ ~ ~ 最后我们把几个服务都做到启动项里去 # vi /etc/rc.local
OK了。
9 11月11日 Apache性能优化技巧
升级 Apache 到最新版本,新版本往往包含性能提升和安全更新。 在 httpd.conf 中设置 "HostNameLookups off" 能避免针对每个访问者的 DNS 域名的反向查询。 对于繁忙的网站,在 httpd.conf 中设置 "MaxClients 230" 或者更高。这项设置让更多的 httpd 进程同时响应请求,并避免了处理器排队的情况发生。 采用另外一台服务器处理图片文件。 缺保您的 Web 页面和 CGI 页面采用了浏览器缓冲技术。具体的文章可以参考本站:采用 mod_gzip 加速 Zope 和 Apache 保持您的 Apache 苗条,编译那些仅仅需要的模块,在编译之前,修改 src/Configuration 文件,在那些不需要的模块之前用 # 号注释掉。 如果不需要流量日志,那么把 httpd.conf 中的 TransferLog 指向到 /dev/null/ 除非你确定使用 .htaccess 文件来控制一些目录的权限,否则设置 "AllowOverride None" ,这样就免去 Apache 在每个目录搜索 .htaccess 文件的劳役之苦。 不要让不需要的后台进程运行。 千万不要把页面或者日志文件写到网络磁盘上,例如 NFS。 不要让 Apache (httpd) 运行于 inetd 模式。 不要让 X Windows 运行在你的 Web 服务器上,用 Ctrl-Alt-Backspace 关闭 X 。 避免使用 SSI tag。 在 CGI 脚本中: 文件 I/O:打开的文件数目越少越好。 在 Web 服务器上的图片越少越好,保证每个图片都经由图片压缩器运行。 对你的网站做压力测试,建议采用 Apache 自带的 ab 命令来测试。 为了最好的性能,最好把网线拔掉,这样你的 Web 服务器就十分安全,而且负载马上降为 0, Apache优化管理(另一篇,还是有些区别,转)
Apache是一个历史悠久并且功能十分强大的WEB服务器,但其丰富的功能对于一个新手来说往往不知道从何下手。我个人感觉Apache的设计充分体现了模块化设计的优势,通过在动态模块加载(DSO)模式下的安装,任何子应用模块都可以通过配置文件的简单修改进行积木式的灵活配置。安装的过程可以从简单的静态html服务开始,一个模块一个模块的学习使用。从单纯的HTML静态服务(core),到复杂的动态页面服务(core + php, core + resin, core + php + mod_gzip, core + resin + mod_expire)。 本文主要从简化安装==>性能调优==>维护方便的角度,介绍了WEB服务的规划、HTTPD安装/应用模块配置、升级/维护等过程。让Apache和PHP,Resin等应用模块的独立升级,完全互不影响。
Apache主要是一个内存消耗型的服务应用,我个人总结的经验公式: 为什么会有一个apache_max_process_with_good_perfermance和apache_max_process呢?原因是在低负载下系统可以使用更多的内存用于文件系统的缓存,从而进一步提高单个请求的响应速度。在高负载下,系统的单个请求响应速度会慢不少,而超过 apache_max_process,系统会因为开始使用硬盘做虚拟内存交换空间而导致系统效率急剧下降。此外,同样的服务:2G内存的机器的 apache_max_process一般只设置到1G内存的1.7倍,因为Apache本身会因为进程过多导致性能下降。
以上估算都是按小文件服务估算的(一个请求一般大小在20k以下)。对于文件下载类型站点,可能还会受其他因素:比如带宽等的影响。
服务器个数的硬上限HARD_SERVER_LIMIT的修改:
解释:
Apache的编译:以下通用的编译选项能满足以后任意模块的安装
解释: --shared-module=max:使用动态加载方式载入子模块会带来5%的性能下降,但和带来的配置方便相比更本不算什么:比如模块升级方便,系统升级风险降低,安装过程标准化等 --enable-module=most:用most可以将一些不常用的module编译进来,比如后面讲到的mod_expire是就不在 apache的缺省常用模块中
但结果会发现,这样编译对服务性能只能有微小的提高(5%左右),但却失去了以后系统升级和模块升级的灵活性,无论是模块还是Apache本身升级都必须把Apache和PHP的SOURCE加在一起重新编译。 apache的缺省配置文件一般比较大:可以使用去掉注释的方法精简一下:然后再进入具体的培植过程能让你更快的定制出你所需要的。
需要修改的通用项目有以下几个:
应用模块和工具的安装配置: 由于使用模块动态加载的模式,所以可以方便的通过简单的配置调整来把Apache定制成你需要的:最好把不常用模块全部清除(无论处于安全还是效率)。 一般说来,可以不需要的模块包括:
最好保留的有:
可用可不用的有:
常用的模块:
建议将所有MODULE的配置都放到相应模块的配置内部:<IfModule some_module.c>some_module config </IfModule>
日志的轮循:cronolog的安装和设置 cronolog可以非常整齐的将日志按天轮循存储 缺省编译安装到/usr/local/bin/下,只需要将配置改成:
日志将按天截断并存放在以星期为目录名的目录下:比如:log/1是周一,log/5是周五, log/0是周日
升级维护: 由于使用动态模块加载方式(DSO模式)安装Apache,Apache的HTTPD核心服务和应用模块以及应用模块之间都变的非常灵活,建议将所有独立模块的配置都放在
里,这样配置非常容易通过屏蔽某个模块来进行功能调整:比如:
安装和维护过程:
系统管理员:Apache的最简化安装
应用管理员:应用模块定制
应用例子:
例子:Apache和PHP模块的独立升级。 如果Apache是按照以下方式安装:
PHP是按照以下方式安装:
以后单独升级Apache的时候,仍然是:
单独升级php时,仍然是:
基于反相代理的WEB加速:
小提示: Apache安装后,缺省根目录下没有但很有用的2个文件:
apache2配置优化以及性能测试小结(貌似还算基础的优化,转)一、优化目的: 公司中现有多个apache平台,其中网元管理系统、升级和注册授权系统、离线浏览系统和应用组所开发的系统都是运行在专用的服务器中,他们都是以业务为主的系统,所拥有的硬件资源比较多,可以着重优化apache的运行速度,以适当的资源换取更高的运行速度。 但是设备中运行的各个配置程序,他们是以性能为主的系统,所运行的环境就要相对恶劣,硬件资源限制非常多,不能供web程序随意使用,他们的优化方向应该是保证运行速度的基础上尽力压低资源消耗。 受限于此,很多外挂式加速程序都无法使用了,比如memcache、eaccelerator等,使用这些工具的前提就是内存足够大,或者资源足够多,通常是专用的apache服务器上才会用到,也就是我们的第一类系统中才可以使用的,在一个嵌入系统中使用其实是得不尝失的。下面将着重研究两种情况都使用的优化方法。
二、运行环境 无论何时,apache所运行的硬件环境都是对性能影响最大的因素,即使不能对硬件进行升级,也最好给apache一个单独的主机以免受到其他应用的干扰。但很明显,我们的配置页面程序无法满足这个要求。 各个硬件指标中,对性能影响最大的是内存,对于静态内容(图片、javascript文件、css文件等),它决定了apache可以缓存多少内容,它缓存的内容越多,在硬盘上读取内容的机会就越少,而存取硬盘上的特定文件是一件很费时的操作,大内存可以极大提高静态站点的速度;对动态高负载站点来说,每个请求保存的时间更多一些,apache的mpm模块会为每个请求派生出相应的进程或线程分别处理,而进程或线程的数量与内存的消耗近似成正比,因此增大内存对提高动态站点的负载和运行速度也极为有利 其次是硬盘的速度,静态站点尤为突出,apache不断的在读取文件并发送给相应的请求,硬盘的读写是极其频繁的;动态站点也要不断的加载web程序(php等),一个请求甚至要读取十几个文件才能处理完成,因此尽可能的提高硬盘速度和质量对提高apache的性能是有积极意义的。 最后是cpu和网络,cpu影响的是web程序执行速度,网络影响流量大小。 影响性能的另一因素是操作系统,php程序在类unix环境中的执行速度仍然比windows中要快,我们的系统都能满足这个要求了。
三、apache普通配置参数 1、静态还是动态 使用apache的动态载入模块非常方便,因为在需要时模块才会被载入。虽然有些性能开销,但同时有利于减少服务器对内存的需求。 静态载入虽然一次性载入所有需要的模块,增加内存消耗。因此我们全部采用动态载入的方法。 2、hhostnamelookups off 域名查找:这增加了处理每个请求的开销,首先,服务器会对dns系统做一个反向查询以找出客户系统的主机名,然后又进行正向查询看获得的主机名是否真实指向客户的ip。大多数情况下,你可以简单的关闭这个功能,如果你经常处理服务器日志,这个工作完全可以在以后进行。你可以通过在设置文件中加入指示hostnamelookups off来关闭这个功能。 3、options -followsymlinks 符号连接:当打开这个选项时,apache将检查每个请求中是否包含对符号连接的引用,这将对请求中包含的每个路径调用一次lstat()系统调用。除非你准备使用符号连接,否则用 options -followsymlinks 来关掉它。 4、sethandler server-status 服务器状态信息,默认已经关闭。该模块尽管这对测试与监控服务器很有用,但它也为服务器带来了额外的开销,你可以通过寻找任何类似sethandler server-status的指示来关闭,如果可能,你可以在安装apache时移除这个模块。 5、options -indexes 关闭目录浏览 6、directoryindex index.php index.html 在可以更精确的时候尽可能不要使用通配符之类的灵活选项,删除不需要的选项,明确的指定设置文件列表,最常用的放在最前。 7、cgi模块 除非你有很好的理由否则就允许cgi的执行,将似有的cgi文件放到一个特定的目录并为之设定正确的权限,这避免了apache对每一个请求都要判断一次要求的是一个静态文件还是一个动态文件。 8、写入日志 写入日志信息是一个很花费时间的工作,apache保持日志文件的打开状态以节省打开文件的时间,如果没有必要存储日志信息,你可以关闭这个选项以节省出更多的处理器时间,只需要在设置文件中把日志那一行注释掉就可以关掉它。 如果必须保留日志,你可以关闭hostnamelookups选项(见上文)然后把日志文件拷备到另一台机器上做进一步分析。 9、allowoverride none .htaccess文件可以极大的扩展apache的设置参数,而无需每次你改变设计都要编辑apache主设置文件,但对这个文件的使用也降低了服务器的性能。 如果使用这个文件,apache必需首先在当前目录中查找是否存在这个文件,如果存在就解析这个文件并在当前目录中应用文件中的设置。更坏的是,apache不仅要查看当前的目录,还要查看当前目录的所有上层目录是否包括htaccess文件以根据所有这些文件最终确定设置。 如果你想最优化服务器的性能,你应该禁止使用htaccess文件,任何基本目录的设置都可以在主设置文件中进行,而主设置文件仅在服务器启动时解析一次。为了禁用htaccess文件,在任何节里加上指示allowoverride none。 10、timeout 5 timeout 设置 apache 等待一个连接读写操作的时间长度,也就是连接建立后,apache 等待客户端完成请求发送的时间,或者是响应开始之后,apache 写出数据到客户端连接的时间长度。 无论对于哪种应用来说,300秒的缺省值都有些过长了,因为这就意味着,如果客户端发生了某种未知因素导致的迟滞的话,服务器的一个连接和与之对应的所有资源都要维持 300 秒,这个对于重载的服务器来说是在是有些过长,所以,我建议将其设置得小一些,这个长度只要足够保证各种客户端的应用能够正常传递数据即可。这里需要考虑的因素主要有各种客户端的连接状况和服务器的繁忙程度。一般来说,我建议设置为 3~5。 11、keepalive on 这个选项明确 httpd 进程对每个请求的链接是否保持长链接。如果保持长链接,则从同一个客户端的连续两次请求会使用同一个连接,而不用重复发送请求。 对于下载类的应用,因为连接时间都比较长,因此这个值设置成 on 还是 off 关系不大,从节约每一滴资源角度考虑,可以设置为 off。 对于网页类应用来说,如果你的静态页面上有一些图标、图片、和js、css等东西的话,并且如果有超过两个的资源的话,我建议是设置为 on。 12、maxkeepaliverequests 100 最多保持多少个活动的长链接 13、 keepalivetimeout 5 连接的保持时间,超过时间就回收 apache进程在使用内存时,是“渐长”的。也就是说,直到这个进程死掉,使用内存的数量是一直增长而不会减少的。这样的话,apache进程使用内存的多少,就决定于你的应用程序最大使用内存量了。 keepalivetimeout 这个参数决定了,在什么都不做之前,一个http进程能够等待多长时间?设想一下,如果keepalive设置为on,而 keepalivetimeout设置为一个比较大的数字,apache占用内存会很快的增长。这是因为,一个apache进程完成了一个任务(并达到了一定的内存占用,想一下“渐进”模式),并不会马上退出,而是等待一个keepalivetimeout时间。假设用户的链接请求持续不断的到来,则积累起来的无用的apache进程就会相当多,直到timeout,这些进程才会被杀死。 但是,keepalive的确对于静态的文件,比如图像文件的传送是很有效的,因此,keepalive要设置为on,但是keepalvietimeout要设置的小些,比如5s 14、serversignature off 默认情况下,很多apache安装时会显示版本号及操作系统版本,甚至会显示服务器上安装的是什么样的apache模块。这些信息可以为黑客所用,并且黑客还可以从中得知你所配置的服务器上的很多设置都是默认状态。 所以,请加入如下两条:
serversignature 出现在apache所产生的像404页面、目录列表等页面的底部。servertokens目录被用来判断apache会在server http响应包的头部填充什么信息。如果把servertokens设为prod,那么http响应包头就会被设置成:server:apache
四、MPM模块 多处理方式(multi-processing module/mpm)他允许特定平台处理多个并发连接 apache的mpm模块可运行在多种模式之下,其中beos、mpmt_os2分别是beos和os/2上缺省的mpm, perchild主要设计目的是以不同的用户和组的身份来运行不同的子进程。这在运行多个需要cgi的虚拟主机时特别有用,会比1.3版中的suexec 机制做得更好。leader和threadpool都是基于worker的变体,还处于实验性阶段,某些情况下并不会按照预期设想的那样工作,所以 apache官方也并不推荐使用。因此,我们主要阐述prefork和worker这两种和性能关系最大的产品级mpm ( 有关其它的mpm详细说明,请参见apache官方文档:http://httpd.apache.org/docs-2.0/mod/)。
1、prefork的工作原理及配置
可防止意外的内存泄漏; 在服务器负载下降的时侯会自动减少子进程数。 因此,可根据服务器的负载来调整这个值。但也不能太小,不然系统不断的开启新的apache进程,造成资源浪费。
2、worker的工作原理及配置
五、性能测试 为了获得优化有性能提高的幅度,评估优化工作的成效,需要对apache2服务器进行测试。 测试环境:
在另一台机器上使用apachebench工具模拟多个浏览器向服务器的测试页面发起HTTP请求,为了减少网络带宽的影响,测试页面的返回值尽可能的小,此处只有1 byte,并为发起测试的机器和服务器组建了一个单独的局域网。每种并发测试11次,以后10次的结果为准,取平均值。 以下是测试的数据:其中并发数是指apachebench同时发起的请求个数,优化前和优化后是指平均每个请求花费的处理时间,单位毫秒
由图中可以看出,优化后的效果还是很明显的,无论是在低并发还是高并发下,都有效的提高了请求的相应时间。 需要指出的是,尽管高负载时优化后性能提高的百分比并不明显,但在并发数400时,测试18次失败7次,而优化后测试14次失败3次。优化不仅仅提高了服务器的性能,还提高了负载的能力。
六、结论 优化可以有效的提高apache2的性能。 对于WMS等设备上的配置页面,第三部分的“apache普通配置参数”可以应用,MPM主要是以资源换取速度的优化,可以酌情调整。 对于EM S、升级系统和应用系统,可以全面优化以提高性能和高负载能力。 11月6日 MySQL主从服务器+读写分离花了三天时间,把MySQL的主从数据库+读写分离部署好了。感觉对缓解大数据流量的服务器压力还是很有效果的。 最近大把时间都花在了数据库上,幸好之前有自己研究过一段时间的数据库,貌似还是上大学的时候。。现在竟然还能回忆起来些 数据库确实是个值得花费精力的地方,很有用。
一、搭Mysql主、从服务器 安装Mysql不是很复杂。主从主要是备份、后续读写分布事务处理等用途
useradd mysql –s /sbin/nologin #生成一个mysql的用户 tar zxvf mysql-5.0.22.tar.gz cd mysql-5.0.22 ./configure --prefix=/usr/local/mysql --localstatedir=/opt/data && make && make install cp support-files/my-large.cnf /etc/my.cnf #配置文档 cd /usr/local/mysql /usr/local/mysql/bin/mysql_install_db --user=mysql chown -R mysql:mysql /opt/data chown -R mysql:mysql /usr/local/mysql 从服务器修改/etc/my.cnf配置文档,server-id=10 /usr/local/mysql/bin/mysqladmin –p shutdown #停服务 /usr/local/mysql/bin/mysqld_safe & #起服务,如果没有起来 多数是权限问题 /usr/local/mysql/bin/mysqladmin –p password’111111’ #修改密码 /usr/local/mysql/bin/mysql –p #登陆,新安装应该没有密码
主服务器上: mysql>grant all privileges on *.* to back@192.168.x.x identified by ‘111111’; #新建一个给从服务器登陆的账号 mysql> show master status;
记下file及position的值,做从服务器操作的时候需要。
配置从服务器 mysql> change master to master_host='192.168.x.x', master_user='back', mysql> start slave; #启用slave mysql> show slave status\G #显示当前slave状态 Slave_IO_Running: Yes
主数据库若有数据:
把主服务器数据文件复制到从服务器,整个目录一起tar过去即可
或者采用如下备份方法: mysqldump -u root -p testdb testtab>d:\testdb_testtab.sql 恢复命令: create database testdb;use testdb; mysql>source d:\testdb_testtab.sql
配置从服务器,保证主服务器的position位置和备份保持一致即可
以上主从服务器操作关键在于 备份数据position对应 以及change master命令。
#关于/mysql-data/master.info文档,看my.cnf配置文档中的说明
也就是说还是推荐用change master to 命令来修改master.info文档。而不要用my.cnf的从服务器配置。
测试: 主服务器上
从服务器上
确认从服务器上有相同的记录即可。
二、读写分离 这部分主要有点是用来给服务器做均衡负载的,其实还是蛮有趣的一个功能。 搭建Mysql-proxy服务可就没那么简单了,如果能够yum一下就全都搞定那就太开心了! 无所谓这台代理服务搭在哪里,主、从或者第三方都OK,我推荐可以在从上面做,测试比较清楚 下面基本就用我history里的命令了,省的一句一句打。
安装 lua
安装 libevent
安装check
安装glib2
安装mysql-proxy
结果提示glib2版本不对
然后提示lua不对,于是我下了一个lua.pc
接着提示libevent错误 研究了半天 直接把安装路径放到/usr/下面
这次总算./configure 通过了 接着make,结果又出错~~提示找不到什么.h的文件
总算make && make install通过了
测试一把,又出错了。。。
原来是selinux作怪,改了。
总算OK了。
接着来配服务。 把 rw-splitting.lua 放到/usr/local/mysql-proxy/share/mysql-proxy/下面
rw-splitting.lua:
local stmt = tokenizer.first_stmt_token(tokens) if stmt.token_name == "TK_SQL_SELECT" then for i = 1, #tokens do if utext == "LAST_INSERT_ID" or -- we found the two special token, we can't find more -- if we ask for the last-insert-id we have to ask it on the original
启动mysql-proxy代理
读写分离测试 登陆3306端口,在从服务器testtb上增加几条记录 客户端做多个连接到mysql-proxy的端口4040。 insert一条记录,可以看到主服务器也有增加了记录。从服务器是同步过来的数据 select * from testtb;在一个客户端连接的时候,显示的是主服务器的表内容 而有多个客户端连接之后,就会显示从服务器的testtb表内容
最后,他是同步所有database的,如果只需要备份指定的数据库,请一定要在my.cnf中加上 replicate-do-db=dbname 不然,他找不到其他数据库,正常的数据库也不会更新了。
生成一个/usr/local/bin/mysql-proxy.sh
在/etc/rc.local 文档中加入一条 /usr/local/bin/mysql-proxy.sh &
参考资料: http://sery.blog.ccidnet.com/blog-htm-do-showone-uid-3587-itemid-472099-type-blog.html MySQL 主从复制读写分离实现 http://www.yayu.org/look.php?id=136 MySQL 主从同步关键句 http://butian.org/knowledge/develop/DB/20090520/1124.html MySQL 主从服务器的一些技巧 http://www.3389hack.com/xueyuan/fuwuqi/MySQL/22601.html MySQL配置文件my.cnf 例子的最详细翻译 11月5日 Oracle数据库的灾难恢复(转)
首先将数据库shutdown abort,从最近的一次全备份中恢复所有的数据文件,将数据库启动到mount状态。如果原来的日志文件物理位置不可用,使用alter database rename file ‘xxx’ to ‘xxx’改变文件的存放位置。然后,使用recover database until cancel命令来恢复数据库,直到提示最后一个归档日志运用完之后,输入cancel。之后用alter database open resetlogs打开数据库,如果没有问题,立即进行一个冷备份。注意!所有包含在损坏的redo log中的信息将会丢失,也就是说数据库崩溃前已经提交的数据有可能会丢失。这对于某些要求很高的应用将会损失惨重,因此应尽量使每个日志组具有多个日志成员,并且放置在不同的驱动器上一防止发生介质故障。
7月30日 Squid配置(转)在此,我们要配置一个只对内部网络提供代理服务的Proxy Server。它将用户分为高级用户和普通用户两种,对高级用户采用网卡物理地址识别的方法,普通用户则需要输入用户名和口令才能正常使用。高级用户没有 访问时间和文件类型的限制,而普通用户只在上班时可以访问以及一些其它的限制。
debian下不需要删除原来的旧包,直接升级到最新版即刻 apt-get install squid,会安装最新版的squid软件包。
配置命令configure有很多选项,如果不清楚可先用“-help”查看。通常情况下,用到的选项有以下几个:
整个配置编译过程如下:
基本配置
下面是一个基本的代理所需要配置选项:
上面几行代码告诉Squid不允许baduser组访问Internet,但advance、normal组允许(此时还没有指定详细的权限)。由于 Squid是按照顺序读取规则,会首先禁止baduser,然后允许normal。如果将两条规则顺序颠倒,由于baduser在normal范围中, Squid先允许了所有的normal,那么再禁止baduser就不会起作用。 特别要注意的是,Squid将使用allow- deny-allow-deny……这样的顺序套用规则。例如,当一个用户访问代理服务器时, Squid会顺序测试Squid中定义的所有规则列表,当所有规则都不匹配时,Squid会使用与最后一条相反的规则。就像上面这个例子,假设有一个用户 的IP地址是192.168.0.201,他试图通过这台代理服务器访问Internet,会发生什么情况呢?我们会发现,他能够正常访问,因为 Squid找遍所有访问列表也没有和192.168.0.201有关的定义,便开始应用规则,而最后一条是deny,那么Squid默认的下一条处理规则 是allow,所以192.168.0.201反而能够访问Internet了,这显然不是我们希望的。所以在所有squid.conf中,最后一条规则 永远是http_access deny all,而all就是前面定义的“src 0.0.0.0”。
高级控制 前面说过,Squid的控制功能非常强大,只要理解Squid的行为方式,基本上就能够满足所有的控制要求。下面就一步一步来了解Squid是如何进行控制管理的。
注意tcccent前面的“.”,正是它指出以此域名结尾的所有主机都不可访问,否则就只有tcccent.com.cn这一台主机不能访问。
当然,这个dst也可以是域名,由Squid查询DNS服务器将其转换为IP。
看到regex,很多读者应该心领神会,因为这条语句使用了标准的规则表达式(又叫正则表达式)。它将匹配所有以.mp3、.avi等结尾的URL请求,还可以用-i参数忽略大小写,例如以下代码:
这样,无论是.mp3还是.MP3都会被拒绝。当然,-i参数适用于任何可能需要区分大小写的地方,如前面的域名控制。
首先定义允许上网的时间是每周工作日(星期一至星期五)的上午和下午的固定时段,然后用http_access 定义所有不在这个时间段内的请求都是不允许的。
这样,普通用户在某个固定时刻只能同时发起三个连接,从第四个开始,连接将被拒绝。
在输入两遍guest用户的密码后,一个guest用户就生成了。如果以后需要添加用户,把上面的命令去掉-c参数再运行即可。
总结
4月27日 Apache+SSL+SVN+SSPI用到的程序: apache_2.0.59-win32-x86-no_ssl.msi Apache_2.0.59-Openssl_0.9.8b-Win32.zip Openssl-0.9.8b-Win32.zip Setup-Subversion-1.5.3.msi
参考了网络上大量的文章 实际操作了一遍,其实openssl的命令有很多种方式可以生成crt文件以及pem文件 我采用的只是一种最直观比较完整的一个方案。当然也算比较繁琐的一种。
======安装apache========
一、安装 apache_2.0.59-win32-x86-no_ssl.msi
======设置SSL模组=======
二、解压 Apache_2.0.59-Openssl_0.9.8b-Win32.zip 完整覆盖原Apache 三、生成证书文件
)))Error:
四、修改ssl.conf 配置文档:
去掉 #LoadModule ssl_module modules/mod_ssl.so 的注释。 六、测试:https://127.0.0.1/
=====安装SVN模组========
七、安装Subversion 八、修改httpd.conf:
九、创建认证文档
htpasswd –c c:\auth\auth zzz
==========安装SSPI模组==============
十、SSPI
另一边复制过来的注释 还蛮详细的。转自:http://www.sunky.net/archives/2008/163.html 在httpd.conf文件最后加上 (蓝色部分为注释,可以删除) #这里设置成”/svn/”访问版本库的网址就是http://localhost/svn/, 然后需要配置D:\Program Files\Apache Software Foundation\Apache2.2\conf\access.conf access.conf默认是不存在的,需要自行创建。下面给出access.conf文件内容 [groups] [/] 上面的w00768就是用户id, 注意全部小写,并且当SSPIOmitDomain on时用户id前不要加域名. 更精确的目录权限控制你可以参考其他文档。
================================== ######################## ==================================
OK,finished. 以上。 12月31日 Vsftpd 530 Login incorrect
Also check:
配置整合Win+Apache+PHP+CGI+MySQL+Tcomcat(或Resin)完全手册(转)(擅自添加了CGI部分~呵呵)前期准备:
开始安装:
二、安装JDK和Tomcat
三、整合Apache+Tomcat服务器
四、整合Apache+Tomcat+MySQL
1. 测试1,用编辑器编写如下内容:
2. 测试2,用编辑器编写如下内容:
五、安装Resin,整合Apache+Resin
6. Resin配置:
12月29日 登录中文搜索引擎入口(转)转贴地址http://guxqcn.spaces.live.com/blog/cns!CA0B3E9C258483D0!1517.entry
登录搜索引擎是推广网站很重要的一步。为了方便大家,整理了主要搜索引擎,希望对大家有帮助。以下地址都经过了测试,可以使用,若您在使用时发现死链接,请通知我们,以便更好的为大家服务。同时也欢迎大家推荐好的搜索引擎,在留言本中给我留言就可以了。另外要指出的是,贡献流量的主要是几个著名的搜索引擎,其它的对流量贡献微乎其微。如果您时间不多,大可不必全部登录。当然,如果时间充足,又没有很多推广经费,登录一下也大有好处。
百度免费登录入口 http://www.baidu.com/search/url_submit.htm Google免费登录入口 http://www.google.com/intl/zh-CN/add_url.html 雅虎免费登录入口 http://search.help.cn.yahoo.com/h4_4.html Live Search登录入口:http://search.msn.com.cn/docs/submit.aspx 新浪免费登录入口 http://bizsite.sina.com.cn/newbizsite/docc/index-2jifu-09.htm 搜狐免费登录入口 http://db.sohu.com/regurl/regform.asp?Step=REGFORM&class= 天网免费登录入口 http://bingle.pku.edu.cn/submit.htm 慧聪行业免费登录入口 http://202.108.33.161/web/frontward/free/free_speedlogin.asp 搜豹免费登录入口 http://search.sobao.com/Computers_and_Internet/Personal/ 焦点网免费登录入口 http://search.focus.com.cn/search/search_newurl_register.ecgi 协通免费登录入口 http://www.net2asp.com.cn/search/regform.htm 银河免费登录入口 http://search.inhe.net/navigate.asp 中国假日免费登录入口 http://www.china-holiday.com/newterms/hall/it/sort.asp?sortid=259 山西互连网免费登录入口 http://www.shanxi.net.cn/sxhulian/addcate.asp 网络奇兵登陆入口http://www.net7b.com/net7b_site/denglu/index.asp 6128搜索引擎免费登陆入口http://www.6128.cn/add.htm 深圳网狐登陆入口 http://www.szfox.com/search/ 中国搜索同盟免费登录入口 http://service.chinasearch.com.cn/w ... ree/free_protocol.htm 北极星免费登录入口 http://www.beijixing.com.cn/bjx01/search/regi_1.asp 亦凡信息娱乐网络-亦凡搜索 http://www.gotofind.com/opendir/ 法律网免费登录入口 http://www.law-lib.com/lawseek/wzdl.asp 银河免费登录入口 http://search.inhe.net/navigate.asp 温州信息港免费登录入口 http://www.wzonline.com.cn/ 建设免费登录入口http://www.cnjjl.com/other/ 孙悟空免费登录入口 http://www.sunwukong.cn/add.php 猫头鹰 http://www.owlchina.com/publish.asp?l=pub 凯希 http://www2d.biglobe.ne.jp/~kinryou/cgi/url.html ebsee http://www.ebsee.com/cgi-bin/find/find.cgi?menu=add focus http://search.focus.com.cn/search/search_newurl_register.ecgi zhao5.com登陆入口 http://www.zhao5.com/deng_9.htm 三百六十行在线登陆入口 http://www.360hang.com/ 中国168免费登录入口 http://www.china168.com/chaoshi/it/regsta1.asp?sortid=242 中国车网免费登录入口 http://www.cncar.net/search/addsite.asp 绿界免费登录入口 http://ep.sunup.net/add.php 天上人间中文搜索引擎 http://www.6mj.com/search/ 企业搜索引擎 http://www.shengdarealestate.com.cn/search/sort.asp?sortid=37 好东西网址登陆 http://dir.haodx.com/computer/internet/search/search_egines/ 中国搜索登陆入口 http://service.chinasearch.com.cn/zhongsou/wzdl/free_protocol.htm 广东阳江在线 http://www.gdyj.com/ 泰达搜索引擎 http://www.tedanet.com/search/index.asp Y28 Search http://www.y28.com/cgi-bin/link/join.pl Guxqcn 10/15/06, 11:30am 12月22日 Apache下的SVN自定义日志
svn log配置 最近经济不景气,老板真是越抓越严 现在连svn的登录日志也要记录检查~ 原本svn自带的那个access.log基本不太能够阅读 所以打算再自制一个log文档 svn在apache下运行要用到mod_dav mod_dav_svn mod_authz_svn几个模块 日志模块是mod_log_config
~~~~~~~
svn在1.4之后的版本都支持内建的svn类log 公司用的是1.2~所以要先svn升级 找个安装包直接覆盖安装就可以了
然后在httpd.conf文档里增加
前面几个参数都没问题 就是%e这个就是通过设置环境变量env 为SVN-ACTION 来使得日志变得更可读,ok了 记录出来的样子如下 [22/Dec/2008:11:53:57 +0800] 172.17.3.193 EOCSH\\xh "update / r2302 send-copyfrom-args"
~~~~~~~~~~~~~~~~~~ 附录1
Apache模块 mod_log_config
概要 本模块提供了灵活的方法将客户请求记录到日志。日志可以以自定义的格式直接写入文件,或者传送到一个外部程序中继续处理。条件日志功能可以实现根据请求的特征来决定一个日志信息是否被包含在最终的日志记录里面。 本模块提供了三个指令:TransferLog 指令用来生成一个日志文件,LogFormat 指令用来设定自定义的日志格式,最后你还可以通过CustomLog 指令来同时完成日志文件和格式的设定。TransferLog 指令和CustomLog 指令在每个服务器上都可以被多次使用,以便将一个请求记录到多个文件中。
LogFormat 指令和CustomLog 指令的格式化参数是一个字符串。这个字符串会在每次请求发生的时候,被记录到日志中去。它可以包含将被原样写入日志的文本字符串以及C语言式样的控制字符"\n"和"\t"以实现回车与换行。文本中的引号和反斜杠应通过\来转义。 请求本身的情况将通过在格式字串中放置各种"%"转义符的方法来记录,它们在写入日志文件时,根据下表的定义进行转换:
上表中的"..."在实际中可以什么也没有(例如:"%h %u %r %s %b"),也可以用来指定条目被包含的条件(如果条件不满足,它会被"-"来替换)。条件是由一个HTTP状态代码的列表来组成的,状态代码前还可以加上"!"前缀。 这样,格式串"%400,501{User-agent}i" 只记录400错误(错误的请求)和501错误(没实现的功能)到User-agent:; "%!200,304,302{Referer}i"记录任何没有正常返回的请求到Referer:。 注意在处理由%...r、%...i和%...o组成的字串时,不会进行ESC序列的转义。这主要是为了符合通用日志格式(Common Log Format)的要求。这样就使用户能在日志中插入控制字符,因此,在处理原始的日志文件的时候,要特别注意这一点。
一些常见的格式串如下所示: 注意对请求提供服务的服务器的正式主机名(ServerName)和侦听端口(Listen)分别由%v和%p来得到。 这一点将忽略UseCanonicalName 指令的设置,因为否则日志分析程序会需要成倍地进行整个虚拟主机算法的运算以决定实际上是哪个服务器在响应请求。
CustomLog 指令说明:
CustomLog 指令用来对服务器的请求进行日志记录。可以指定日志的格式,也可以使用环境变量根据请求的特征来随意地组织日志。
如果这里用到了程序,那个这个程序是以启动httpd的用户来执行的。因此如果启动httpd的用户是root,那这个程序也是以root用户身份来启动的;确认这个程序是安全的。
当在非UNIX平台上输入文件路径的时候,要特别注意即使平台本身是使用反斜杠来分隔路径的,在这里也只能使用斜杠。通常在配置文件里只用斜杠来分隔路径总是不会错的。 第二个参数指定了写入日志文件的内容。它既可以是由前面的LogFormat 指令定义的别名,也可以是直接按日志格式一节所描述的规则定义的格式字符串。 例如:以下两组指令的结果是完全一样的:
第三个参数是可选的,它根据服务器上特定的环境变量是否被设置来决定是否对某一特定的请求进行日志记录。如果这个特定的环境变量被设置(在'env=!name'的情况下,没被设置),那么这个请求就被日志所记录。 可以使用mod_setenvif 和 / 或mod_rewrite 模块来为每一类请求设置环境变量。例如:如果你想在你的服务器上将所有对GIF图片的请求记录在不同于主日志文件的另一个日志文件中,你可以使用下面的指令:
~~~~~~~~~~~~
其他的附属命令
LogFormat 指令说明:
本指令定义访问日志的记录格式。 LogFormat 指令可以使用两种方式中的一种。在第一种定义方式中,指令只带一个参数,以定义后续的TransferLog 指令中指定的日志内容的日志格式。这唯一的参数可以按上述自定义日志格式所描述的格式来定义。另外它也可以通过下述的方法使用别名来参照预先定义的日志格式。 在LogFormat 指令的第二种定义方式中,将一个直接的格式和一个别名联系起来。这样在后续的LogFormat 或CustomLog 指令中,就不用一再重复整个冗长的格式串。定义别名的LogFormat 指令仅仅用来一个别名,它不做其它任何事情 -- 也就是说,它只是定义了这个别名,它既没有实际应用这个别名,也不是把它设为缺省的格式。因此,它不会影响后续的TransferLog 指令。另外,LogFormat 不能用一个别名来定义另一个别名。注意,别名不能包含百分号(%)。
TransferLog 指令说明:
本指令除不允许直接定义日志格式或根据条件进行日志记录外,与CustomLog 指令有完全相同的参数和功能。实际应用中,日志的格式是由最近的非别名定义的LogFormat 指令指定。如果没有定义任何日志格式,则使用通用日志格式。
CookieLog 指令说明: 设定针对cookies的日志文件名
CookieLog 指令设置针对cookies所作的日志记录的文件名。文件是相对ServerRoot目录的。 包含本指令仅仅是为了保持与mod_cookies模块的兼容,并且不推荐使用。
需要考虑的安全性问题 如果日志文件放置的目录对除了启动Apache服务以外的用户可写的话,可能会对系统的安全性造成威胁,具体的讨论请参见安全方面的提示一章。
~~~~~ 附录2
在Apache下的日志简介 Apache提供了广泛记录运行时各方面信息的工具。比如有条件性的记录日志,日志循环,确定IP地址等时普遍会遇到的问题。还讲解很多用于检测您的Apache服务器状态以及分析其日志的捆绑的第三方模块和工具。
默认的Apache日志文件 Apache提供很多检测和日志工具来追踪服务器的正确运行。默认的Apache配置提供两个日志文件,放置在安装目录下的日志目录里面。 access_log 这个文件(在windows下对应access.log文件)包含了服务器已经处理过的请求的信息,比如说请求的URL,客户端的IP地址,请求是否被成功完成等。error_log 这个文件(在windows下对应error.log文件)包含了与错误情况相关的信息,以及服务器生命周期中不同的大事件。
LogFormat 指令允许你告诉Apache你想要记录请求的哪些方面。而你仍需附加的指令来告诉Apache在哪里记录那些信息,这在下一章中将会介绍。下面的例子显示了两种最受欢迎的格式的配置:普通日志格式和整合日志格式。当Apache收到一个请求,他将会用相应的请求属性来替代以%为前缀的每一个域。如果您正在使用普通日志格式,您的日志文件里的每一项输入看起来都将是这样的: 192.168.200.4 - someuser [12/Jun/2005:08:33:34+0500] "GET /example.png HTTP/1.0" 200 1234 如果您正在使用整合日志格式,您的日志文件里的每一项输入看起来则都将是这样的:
尽管有附件提供日志格式的详尽索引,下表描述了一些最为重要的域:
整合日志格式在普通日志格式的基础上扩展出了两个附加的域。定义为:
创建一个自定义日志文件
您可能会想创建Apache自带以外的新的日志文件。下面的例子将运用CustomLog来创建一个新的日志文件,并保存由一个之前定义好的日志格式,即前一章提到的common,所定义的信息。您还可以用格式本身的定义来替换昵称。一个附加的,更为简单的指令是Transferlog,它只接受最后一个 LogFormat指令提供的定义。
重导向日志到一个外部的程序
你也可以用CustomLog或TransferLog将日志的输出重导向(输出)到一个外部的程序,而不是一个文件。要做到这一点,首先您需要以输出字符 "|"开头,跟着是接收日志标准输入信息的程序之路经。本例运用Apache自带的rotatelogs程序,在稍后的章节中会对其有所介绍。 当有一个外部程序被使用,它将作为启动httpd的用户被运行。如果服务器是被超级管理员所启动,它就会是超级管理员,完全确保这个程序是安全的。并且,当进入一个非Unix平台上的一个文件路径时,需要小心确保只有正斜杠被使用,即使这个平台可能是允许使用反斜杠的。总的来说,在整个配置文件中总是使用正斜杠是个好主意。 有条件的日志请求
你可以根据可变的环境决定是否记录一个请求。这种可变可以根据许多参数,比如客户端的IP地址或请求中某个头部的存在,事先设置好。正如本例中所显示, CustomLog指令可以将可变的环境作为第三个参数来接受。如果存在可变的环境,它就将被记录,否则就不会。如果这个可变的环境被一个"!"开头否定,那么不存在可变的环境将会被记录。本例将告诉您如何避免在日志里以GIF和JPEG的格式记录图像,及如何从一个特定的IP地址记录请求道一个单独的日志文件。另一个例子请参加下一节。 谁在连接你的网站
可以通过记录Referer的值来检测哪些人连接了你的网站,Referer变量位于用户发送连接请求数据包的头部,数据包头中还包含了用户访问的目的网站的URL地址。通过这种方法可以记录下绝大部分网站访问者。也可以把来自特定网站(www\.example\.com)地址段的来访者排除出日志记录文件。
Apache 服务器中可以使用的功能模块很多,有服务器内置的也有外挂的,这些模块工作的状态和性能就是通过mod_status参数来记录的,记录的内容有“哪些模块参与了网站应答服务、哪些模块处于空闲状态、服务器的开启/关闭时间。正在处理的连接请求数和访问者数量(需要指定ExtendedStatus记号) -该模块记录对高负荷网站服务器性能有很大影响”。例子中记录的模块状态统计结果可以用浏览器访问http://www.example.com/server-status页面来查看。
通过SNMP协议来监视Apache服务器 SNMP 是简单网管协议,支持SNMP的服务器或网络设备可以被OpenView、Tivoli等网管软件统一管理,目前有很多开源的SNMP模块可以加装到 Apache网站服务器之上,对于Apache 1.3版来讲,mod_snmp模块可以支持第1版和2版的SNMP协议;对于Apache 2版来讲,mod_apache_snmp模块可以编译成Apache的DSO直接支持第1版、第2版和第3版的SNMP协议。有了SNMP模块,外部网管软件就可以对Apache网站服务器的各种实时性能参数进行查看了,这些参数包含“服务器连续在线时间、平均负载、一段时间内的错误数、提供网站服务的字节数和连接请求数”。SNMP模块遇到突然激增的并发连接请求数时会向控制台报警。管理SNMP资源的开源工具软件有:“net-snmp, OpenNMS,Najios等”。 用开源工具分析日志 有很多开源和商业版的工具软件可以对产生的Apache日志文件做分析和处理,通常的步骤是:
实时监视日志 使用apachetop命令行工具来显示apache服务器当前的运行状态,类似于Unix等系统下的top命令工具。对流量比较低的Unix- Apache网站也可以使用tail命令来记录实时日志信息,tail -f /logfile/。通过扫描错误日志文件中的记录,分析出恶意连接请求,常用的错误日志文件扫描工具有Logscan和ScanErrLog,可以分别从http://www.garand.net/security.php和http://www.librelogiciel.com/software/去下载这些工具。 将连接请求日志记录到数据库 Apache 本身没有将记录转发到数据库的功能,必须要第三方脚本和模块来支持。这里列举几个:mod_log_sql模块允许将连接请求直接记入MySQL数据库,然后用Apache LogView SQL工具来参看库中的记录;pglogd工具可以记录日志到PostgreSQL数据库中。 将日志文件转存和归档
如果网站流量较高,日志文件很容易就会变得很大,需要进行转存和归档处理。转存日志文件时需要压缩和保存,在线进行这项工作可以使用Apache提供的rotatelogs来完成,类似工具还可以在http://cronolog.org/上找到。例子中用rotatelogs工具将每天的日志做了转存和归档处理,一天共有86400秒。查看Apache帮助文件可以了解更多的rotatelogs工具参数。注意如果rotatelogs工具所在的目录名含有空格,则需要用跳转符号\来指定。 IP地址和域名之间对应处理 将HostNameLookups 设置成on,那么日志记录中将显示来访者所在的域名,设置成on可降低服务器性能。为了解决这一问题,Apache提供了一个事后分析IP地址域名信息的工具logresolve,例如$ logresolve < access_log > resolved_log 如果用代理服务器或网关设备来完成的网站访问,Apache服务器将只能记录到代理服务器和网关的IP地址和域名。 如何自动启动Apache服务器
在windows 平台下以服务方式启动的Aapche遇到意外退出后可以由服务管理器自动自动,Unix平台下需要借助watchdog脚本来实现自动启动功能, watchdog程序专门用来监视其他程序的运行状态,发现被监视的程序退出或停止后可以重新将他们启动。例子中简单的linux脚本将监视系统的进程表,如果网站服务器httpd进程消失,则负责将它重新启动,使用该脚本的条件有2个,首先保证该脚本文件具备可执行权限,第二必须将该文件设置到 cron文件中,使之可以在预定的时间间隔内运行,如果使用Solaris系统,需要将例子中的ps -waux改成ps -ef。用户可以访问http://perl.apache.org/docs/general/control/control.html网页发现更多高级的watchdog类脚本工具,大多数linux发行版自带一些用于Apache的脚本工具。 日志文件的分割和合并 如果用户的网站环境是用服务器集群来搭建的,通常需要将所有服务器上的日志做合并成单个文件后,才可以进行分析和处理。相似的道理,如果在单台服务器上运行多个虚拟网站,则需要将单个日志文件分割成多个部分供不同的虚拟网站用户去分析。在Apache服务器源码的support/文件夹下可以找到相应的脚本工具split-logfile等。在http://www.coker.com.au/logtools/网页可以找到一些其他的日志工具。比如vlogger工具就可以替代cronologs来对单个服务器上的虚拟网站日志进行分别处理,该工具在http://n0rp.chemlab.org/vlogger/下载。 为虚拟网站保存独立的日志文件
使用CustomLog标志段在Apache配置文件的区块内实现虚拟网站日志文件的独立处理。
在Apache全局配置中配置方法,其中的v%负责把提供服务的虚拟网站记录下来,对于配置了很多虚拟网站的单台服务器来说,这种配置不错。如果不想记录虚拟服务器的日志只需要在配置文件中加入"CustomLog /dev/null"就可以了。 日志文件中常见的条目
类似的记录条表示访问者请求了网站上根本没有的cmd.exe,root.exe或dir等文件。 11月12日 如何查看linux版本(转)
1) 登录到服务器执行 lsb_release -a ,即可列出所有版本信息,例如: [root@3.5.5Biz-46 ~]# lsb_release -a 这个命令适用于所有的linux,包括Redhat、SuSE、Debian等发行版。 2) 登录到linux执行cat /etc/redhat-release ,例如如下: 这种方式下可以直接看到具体的版本号,比如 AS4 Update 1 3)登录到linux执行rpm -q redhat-release ,例如如下 [root@3.5.5Biz-46 ~]# rpm -q redhat-release 这种方式下可看到一个所谓的release号,比如上边的例子是2.4 redhat-release-3AS-1 -> Redhat Enterprise Linux AS 3 注意:第(2)(3)两种方法只对Redhat Linux有效 原文地址 http://bbs.eb2000.cn/redirect.php?tid=1928&goto=lastpost 11月7日 linux运行&开发环境建立(远程访问+postgresql+eclipse+tomcat)
由于redhat在每次打开文件夹时都新增一个窗口,特麻烦,我们安装文件管理器Nautilus。由于在安装redhat as4时选择了最小安装,所以在安装Nautilus前还得先安装gcc编译器。 1.1 安装gcc 操作系统是在Redhat AS4 U4,安装的时候选择的最小安装,现在使用rpm来安装gcc: rpm的包依赖确实很麻烦,过程我就不重复了,直接说怎么装(下面这些RPM包在redhat as4安装光盘中): rpm -Uvh cpp-3.4.6-3.i386.rpm rpm -Uvh glibc-kernheaders-2.4-9.1.98.EL.i386.rpm rpm -Uvh glibc-headers-2.3.4-2.25.i386.rpm rpm -Uvh glibc-devel-2.3.4-2.25.i386.rpm rpm -Uvh gcc-3.4.6-3.i386.rpm 相关的rpm包在redhat的iso镜像里都能找到。 安装好后,使用 rpm -qa | grep gcc 会发现gcc已经成功安装了,我们还可以使用 rpm -qR gcc-xxx 查询一下gcc都依赖于哪些文件。 1.2 安装nautilus 下载地址:http://www.icewalkers.com/download/Nautilus/1191/dls/ 2 远程控制 为了在windows上控制linux,不想老跑来跑去,建立远程控制。 在linux上要做三件事情: 1) 打开远程控制。在“应用程序”—“首选项”---“远程桌面”里设置,将“允许其他用户控制您的桌面”等打勾。 2) 打开XDMCP服务,打开177端口。在“应用程序”---“系统设置”----“登录屏幕”里设置,将“启用XDMCP”前打勾。可用netstat –nul 命令查看177端口是否已经打开。另外,将“安全”选项卡中的“允许root通过GDM远程登录”前也打勾。 3) 打开防火墙相应的端口。这里是测试,我们用 iptables –F 命令取消所有的防火墙策略。 在windows上做一件事情,就是安装Xmanager软件(也可用VNC Viewer)。安装上,直接在地址栏上输入linux机器所在的IP地址即可远程控制了。 3 使用SSH 在便于从windows上向linux机器上传文件,我们使用SSH。 在linux上打开相应的端口即可。默认是安装了SSH的。 在Windows中做一件事,安装ssh客户端。可用Xshell这个小软件。很简单,装了你自己看一看自然就会用了,略。 4 linux与windows交换数据 可有三种方式,共享文件、SSH、FTP 通过比较,我们最后选择了winscp方式。 4.1 通过samba共享文件 Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件;不过对于Linux和Linux之间共享文件有更好的网络文件系统NFS,NFS也是需要架设服务器的; 下载地址:http://download.chinaunix.net/download.php?id=24685&ResourceID=30 mkdir temp cp -r gnsSpider/* temp //拷贝gnsSpider下的所有文件到temp rm -rf jdk5 //删除一个目录下的所有文件及文件夹 4.2 通过SSH的SCP命令上传 在两个linux之间使用ssh自带的scp上传文件,在windows下可用WinSCP iptables-save //查看SSH使用的远程端口22是否被封 /etc/rc.d/init.d/iptables stop //关掉fc防火墙 /etc/rc.d/init.d/iptables start //开启fc防火墙 chkconfig --level 35 iptables off //永久关闭防火墙 iptable -t filter -I RH-Firewall-1-INPUT -p tcp -m tcp --dport 22 -j ACCEPT //开启22端口 ssh zhanghua@172.17.1.122 //运行ssh user@ip 远程登录 scp -P 22 gnsSpider.tar zhanghua@172.17.1.122:/home/zhanghua/gsnSpider WinSCP的下载地址:http://sourceforge.net/projects/winscp/ 。下载完无须安装,直接就可以用。 4.3 通过ftp上传 http://forum.ubuntu.org.cn/viewtopic.php?t=85074&sid=27a22c693d20107369cd5e4e291784f4 ftp 172.17.1.122 anonymous //FTP用户名 ls //查看FTP上有哪些文件 lcd /home/zhanghua/gnsSpider //下载的存放路径 binary //这种模式传输速度快 prompt //关掉询问用户是否下载的提示 cd gnsSpider //进入FTP上的gnsSpider目录 mget * //将FTP上的gsnSpider目录下的文件全下载(注意它好像不能下载文件夹) put i001.jpg //上传 bye //退出 5 安装postgresql数据库 首先要声明的是,在linux上安装的实际上是postgresql server. 那样在windows里直接用pgAdmin客户端便能操作。 Postgresql的下载地址:http://www.enterprisedb.com/products/pgdownload.do#linux chmod 777 postgresql-8.3.3-2-linux.bin //给执行权限 ./postgresql-8.3.3-2-linux.bin //显示图形化安装界面,按下一步开始安装 passwd postgres //给postgres用户改密码,不用以root用户安装 //在.bash_profile中追加环境变量 vi ~postgres/.bash_profile initdb //初始化数据库 ./postmaster -i -D ../data & //在bin目录下打这个命令启动 如果postgresql已经占了端口,可强行杀掉 ps –aux |grep postgresql kill -9 6229 如果需要其他IP能够访问,必须改变两个文件: 1) 修改/opt/PostgreSQL/8.3/data/postgresql.conf 将listen_addresses = 'localhost' 改成 listen_addresses = '*' 2) 修改/opt/PostgreSQL/8.3/data/pg_hbd.conf。如下图第2、3两行是我们加的。 6 安装eclipse 为调试程序,我们需要安装eclipse。下载地址: http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/R/eclipse-cpp-ganymede-linux-gtk.tar.gz 先安装JDK1.6,步骤如下: chmod 777 jdk-6u6-linux-i586.bin ./jdk-6u6-linux-i586.bin //解压JDK6 ls mv jdk1.6.0_06 jre //给JDK6改个新名字 修改环境变量: vi /etc/profile JAVA_HOME="/opt/j2sdk1.4.2_01" MYSQL_HOME="/var/mysql" CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar PATH=$PATH:$JAVA_HOME/bin:$MYSQL_HOME/bin: export JAVA_HOME CLASSPATH PATH 安装eclipse。解压即可,无须安装。 安装tomcat插件,与windows下的安装方法同,略。 7 安装tomcat 解压即可,无须安装。 |
|
|