一、概述
Linux下用的最多的是MRTG的性能监视,MRTG配置比较简单,MRTG的确是非常好的东东,但我认为它毕竟已经是一套很旧的软件了,其作者在多年前就已经开发了RRDTool代替该软件,现在已经发展得很成熟。既然有更好的选择,为什么我们还要用MRTG呢?
简单的说,rrdtool就是一个强大的绘图的引擎,很多语言都可以调用rrdtool绘图。
整个系统的架构是这样的:
基于SNMP协议,被监控端是服务器,或一些网络设备,
网络管理工作站,采用Linux(或Freebsd)操作系统,并且安装Net-SNMP工具,使用RRDTOOL采集数据,存储数据,并用Cacti调用rrdtool显示出来。
CACTI采用PHP编写,基于B/S结构。
二、介绍
MRTG的优点:简单、易上手,基本安装完了之后只要更改一下配置文件即可。
缺点:
1、使用文本式的数据库,数据不能重复使用;
2、只能按日、周、月、年来查看数据;
3、只能画两个DS(一条线、一个块);
4、每取一次数据即需要绘图一次,浪费系统资源;
5、无管理功能;

rrdtool的优点:
 1、使用rrd存储格式,数据能重复使用,比如我可以将一个rrd文件中的数据与另一个rrd文件中的数据相加。
 2、可以定义任意时间段画图,即你可以画出一张半年以来的数据的图,也可以画出一张半小时以来的图。
 3、能画任意个DS。
 4、CDEF让你能任意摆弄数据。

缺点:
1、rrdtool的作用只是存储数据和画图,它没有mrtg中集成的数据采集功能;
2、在命令行的使用非常复杂,参数极多。
3、无管理功能。

简单的说,rrdtool就是一个强大的绘图的引擎。

由于其非常复杂的命令,对用户非常不友好,我一度想自己用php写一套系统。幸运的是,半年前我找到了cacti(www.cacti.net)。对该工具我只有一个字形容:“great!”。
cacti其实是一套php程序,它运用snmpget采集数据,使用rrdtool绘图。它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。更难能可贵的是,它提供了强大的数据管理和用户管理功能,一张图是属于一个host的,每一个host又可以挂载到一个树状的结构上。用户的管理上,作为一个开源软件,它居然做到为指定一个用户能查看的“树”、host、甚至每一张图,还可以与LDAP结合进行用户的验证!我不由得佩服作者考虑的周到!Cacti还提供自己增加模板的功能,让你添加自己的snmp_query和script!可以说,cacti将rrdtool的所有“缺点”都补足了!

三、监控管理工作站配置
采用Linux系统,CACTI要用到Net-SNMP,RRDTool,Aapche,PHP,Mysql,以下是安装过程:
1. 安装Apache+Mysql+PHP
安装过程比较简单,参考其它的资料,需要注意的是,PHP最好加上SNMP支持,编译的时候,加上—enable-snmp
注意。PHP不能运行在安全模式,否则,Cacti工作不正常。无法调用/usr/local/bin/下面的程序。
2. 安装rrdtool
官方网站:http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
下载:
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.0.x/rrdtool-1.0.50.tar.gz
然后
./configure –prefix=/usr/local/rrdtool
make
make install

与mrtg相比,rrdtool自带了gd库,所以不用先安装gd库.(不过由于rrdtool自带的gd库不支持中文,所以rrdtool画出来的图也不能有中文,否则会出现乱码).

注意:rrdtool1.2的版本由于已经不再自带外部的lib库(如cgilib,zlib等),所以需要从http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/libs/下载这些库来安装。建议还是使用1.0的版本,比较方便。

安装完后,执行rrdtool看是否正确,
如果执行不成功,提示命令不存在,则需要将所有RRDTool的可执行文件,拷到/usr/local/bin
cp /usr/local/rrdtool/bin/* /usr/local/bin


3. 安装Net-SNMP
RH下面,安装了SNMP服务,但好象没有snmpwalk,snmpget这两个命令,所以需要安装NET-SNMP。NET-SNMP官方网站:http://www.net-snmp.org/
下载net-snmp-5.1.3.1.tar.gz
tar zxvf net-snmp-5.1.3.1.tar.gz
cd net-snmp-5.1.3.1
./configure
make
make install
运行snmpget,snmpwalk测试是否安装成功
RPM包的snmpwalk的名称是:net-snmp-utils.*.rpm,也可以从安装光盘上RPM安装。
4. 安装CACTI
官方网站:http://www.cacti.net/
a) 安装cacti源文件
下载cacti-0.8.6f.tar.gz
将这个压缩包解压到网站根目录
#cp cacti-0.8.6f.tar.gz /usr/local/apache2/htdocs
#cd /usr/local/apache2/htdocs
#tar xzvf cacti-0.8.6f.tar.gz
#mv cacti-0.8.6f cacti
#chown –R apache.apache cacti
#cd cacti

b) 配置Mysql数据库
为cacti配置用户和数据库:
#mysql –u root –p
mysql>create database cactidb;
mysql>grant all privileges on cactidb to cactiuser@localhost identified by ‘password’;
mysql>quit
配置Cacti连接数据库
#vi /usr/local/apache2/htdocs/cacti/include/config.php

$database_type = “mysql”;
$database_default = “cactidb”;
$database_hostname = “localhost”;
$database_username = “cacti”;
$database_password = “password”;
c) 定时crontab运行cacti的收集数据程序
#vi /etc/crontab
*/5 * * * * /usr/local/bin/php /usr/local/apche2/htdocs/cacti/poller.php > /dev/null 2>&1

d) 配置Cacti
在浏览器上输入:
http://IP/cacti
进入cacti的初始设置页面:
在这里我们要输入一些原始的信息:

NEXT -》
输入一些信息,如rrdtool、php、snmpwalk、snmpget的位置,使用ucd-snmp还是net-snmp等 -》
输入原始的用户和密码:admin/admin -》
更改admin用户的密码 -》
点击 Save

安装完成!!!
现在可以在浏览器中进入Cacti的世界了!
5. 测试

四、被监控端配置
大部分情况下,我们监控的是服务器,以RedHat Linux为例,看看如何打开SNMP服务。
只有开启了SNMP服务,监控端才可以收集数据。
打开默认的/etc/snmp/snmp.conf文件,更改如下配置:
1、查找以下字段:
代码:
#       sec.name  source          community
com2sec notConfigUser  default       public

将"comunity"字段改为你要设置的密码.比如"public".
将“default”改为你想哪台机器可以看到你的snmp信息,如10.10.10.10。

2、查找以下字段:代码:
####
# Finally, grant the group read-only access to the systemview view.
#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  all none none

将"read"字段改为all.
代码:
#access  notConfigGroup ""      any       noauth    exact  systemview none none

3、查找以下字段:代码:
##           incl/excl subtree                          mask
#view all    included  .1                               80
将该行前面的"#"去掉.

保存关闭.

4、运行/etc/init.d/snmpd start命令运行snmpd.
5、如果有防火墙,打开UDP 161端口。
最后运行netstat -ln查看161端口是否打开了.

使用ntsysv,让snmp服务,每次开机自动运行。
如果没有安装snmp服务,请在RH的安装光盘上找到net-snmp.rpm,再安装。

五、测试
打开本机的SNMP服务,
打开http://localhost/cacti
默认Cacti有LocalHost的四项参数,直接可以查看了。

六、排错
1. 首先检查一下rra/下面,有没有数据
2. snmpwalk -v 2c -c public ServerIP if 用来测试被控对象(serverIP)是否开启了SNMP服务
3. snmpwalk -v 2c ServerIP -c public .1.3.6.1.4.1.2021.10.1.3 查看被控端是否有CPU负载的数据返回
4. /usr/local/bin/php /usr/local/apche2/htdocs/cacti/poller.php 用来测试PHP是否可以采集到数据。如果上面的都正确,但这步出错,很有可能是PHP配置的问题,或开启了SuLinux。
5. 如果按第2步snmpwalk能采集到数据,但第3步无法采集,可能是PHP设置的问题,修改PHP.ini,很有可能是PHP权限问题。

七、rrdtool1.2的安装
1.2版的rrdtool画出的图,比1.0的要漂亮些.1.0用的是GD画图,1.2用的是libart和freetype画图.1.2的画图会慢一点.
1.2版的安装,可以见http://bbs.chinaunix.net/forum/viewtopic.php?t=552224
上面的安装比较麻烦,需要装不少库,其实,可以,可以直接RPM安装,RedHat的系统,直接从安装光盘上找到这几个库,安装就可.主要的包有:
libart_lgpl
libart_lgpl-devel
libpng
libpng-devel
zlib
zlib-devel
freetype
freetype-devel
找到上面这些包,直接rpm –ivh *.rpm
cgilib好象没有,而且,从rrdtool官方网站下载的cgilib无法安装.我们也不需要rrdcgi,所以,可以不考虑了.
安装完后,解压1.2版的rrdtool
./configure –prefix=/usr/local/rrdtool –disable-rrdcgi
make
make install
cp /usr/local/rrdtool/bin/* /usr/local/bin/


参考:
RRDTOOL教学 http://www.study-area.org/tips/rrdtool/rrdtool.html
使用cacti监测系统性能 http://bbs.chinaunix.net/forum/viewtopic.php?t=594019

Cacti的使用

[不指定 2005/08/31 23:01 | by ipaddr ]
Cacti的介绍,请参考上一遍《基于RRDTOOL+CACTI性能监视系统的架构》

1. 监控远程Linux主机
a. 按如上方法开启远程主机的SNMPD服务
b. 在Cacti里,进行如下操作,步骤的过程:添加Devices->Graphs->Tree
i. Console->Management->Devices->add
Description:主机描述,可随便写
Hostname:主机IP地址
Host Template:主机模板,可以选UCD/Net snmp Host,也可以选None
SNMP Community:主机中的Community字段值,默认是public
SNMP Version:一般选Version1或Version2
ii. Console->Management->Devices 选中刚才添加的主机,进入编辑界面
Associated Graph Templates:加入
1) ucd/net - CPU Usage
2) ucd/net - Load Average
3) ucd/net - Memory Usage
如果是本机,可以加入以下模板:
1) Linux - Memory Usage
2) Unix - Ping Latency
3) Unix - Load Average
4) Unix - Logged in Users
5) Unix - Processes
Associated Data Queries:加入
1) SNMP - Interface Statistics  
iii. Console->Create ->New Graphs
在列表框中选中刚添加的主机,再选中所有Graph Templates和Data Query,再Create。
iiii. Console->Management->Graph Trees->Default Tree->Add
Parent Item:父节点,默认是根
Tree Item Type:节点类型,Host
Host:选择主机
Sorting Type:排序方式
[Create]
iiiii. Graphs->Default Tree->HostName量看监控结果
2. 监控本地机
默认Cacti自动安装了监控本地机的模板,也可以自己重建,可按上面的方式,在第一步的Host Template中,选Local Linux Host就可,或者直接用IP,不用本地方式。
3. 日志
日志设置:Console -> Settings -> General -> Poller Logging Level,一般选Low既可,可以选Medium查看SNMPWALK的输出,Debug调试。
日志查看:Console -> Utilities -> View Log File
日志清除:Console -> Utilities -> Clear Log File
4. 图表删除
直接在Devices里删除主机,将删除相关所有数据。
在Console -> Graph Management里的Graph Management可单独删除一个图表,在Data Sources可删除一个查询。
5. 树的管理
Console -> Graph Trees,可以很方便的管理多台主机,将多台主机组成一个树形结构,并且,可以为树指定用户权限.
6. 权限的管理
Console -> User Management,可以管理用户,并指定权限.


Windows下的SNMP服务的开启

[不指定 2005/08/31 23:00 | by ipaddr ]
. 安装:
默认Windows是没有安装SNMP服务的.Windows2000下,安装SNMP服务如下操作:
控制面板->添加删除程序->添加删除Windows组件->管理监视工具->SNMP协议
再放入Windows2000安装盘.
b. 给SNMP服务打补丁
这里说的补丁可不是微软的那些让人头疼的补丁,而是一个转为Windows2000的SNMP服务开发的增强工具,叫SNMP4W2K-STD,可以在http://www.wtcs.org/snmp4tpc/snmp4w2k.htm下载。
 下载完成后,安装。安装完毕,进入CMD,(注意:进入CMD之前要把CMD的纵缓冲区设置为大于500的数值,否则会因为纵缓冲区不足而引起错误)执行:
C:\Program Files\SNMP4W2K-STD\MIBINST.BAT
根据提示进行选择,不过通常只要一路y就可以完成,最后程序会自动重新启动Windows2000的SNMP服务。这样,就成功的给SNMP服务打上了补丁。
c. 安全配置
默认情况下,Windows2000的SNMP访问密码是public,并且,允许所有主机查询SNMP信息.通常我们只允许个别主机查询,可以如下操作:
在Windows2000的控制面板->管理工具->服务
找到SNMP服务,右击,选择属性->安全
在这里,可以设置团体名,以及只接收哪些主机的SNMP查询.
也可以使用IP安全策略来加强安全。
d. 其它
可以使用Snmputil工具来查询Windows2000的SNMP信息,另外,可以用MTRG,或Cacti+RRDTool来管理MIB.

九种不良习惯使大脑迟钝

[不指定 2005/08/28 22:34 | by ipaddr ]
日前,中国青少年研究中心历时一年的“中国城市少年儿童生活习惯研究”课题在北京发布了研究成果。通过对长春市、北京市、上海市、广州市、兰州市、成都市等6个城市中5000多名家长孩子的深入调查,客观反映了我国城市少年儿童的饮食、睡眠、玩耍、运动、媒介接触和卫生习惯现状,其中暴露出一些不良生活习惯令人吃惊。

  1.长期饱食进食过饱后,大脑中被称为“纤维芽细胞生长因子”的物质会明显增多。它能使毛细血管内皮细胞和脂肪增多,促使动脉粥样硬化,出现大脑早衰和智力减退等现象。

  2.轻视早餐不吃早餐会使人的血糖低于正常供给,久而久之对大脑有害。据有关资料显示,一般吃高蛋白早餐的儿童在课堂上的最佳思维普遍相对延长,而吃素的儿童情绪和精力下降相对较快。……>>>营养:儿童早餐有待改善

  3.甜食过量甜食降低食欲,减少对高蛋白和多种维生素的摄入,导致机能营养不良,影响大脑发育。

  4.睡眠不足大脑消除疲劳的主要方式是睡眠。长期睡眠不足或质量太差只会加速脑细胞的衰退,聪明人也会变得糊涂起来。……关注宝宝的睡眠问题

  5.长期吸烟长年吸烟使脑组织呈现不同程度萎缩,易患老年痴呆。因为长期吸烟可引起脑动脉硬化,导致大脑供血不足,神经细胞变性,继而发生脑萎缩。
 

  6.少言寡语大脑中有专司语言的叶区,经常说话也会促进大脑的发育,并能起到锻炼大脑的功能。平常应该多说一些内容丰富、有较强哲理性或逻辑性的话。蒙头睡觉人在蒙头睡觉时,随着被子里二氧化碳浓度升高,氧气浓度不断下降,长期吸进潮湿污浊的气体,对大脑危害极大。……优良环境塑造宝宝聪明大脑

  7.不愿动脑思考是锻炼大脑的最佳方法。多动脑筋,勤思考,人才能变得更聪明。……开发宝宝大脑的训练游戏

  8.带病用脑在身体不适或患病时,勉强坚持学习或工作不仅效率低下,而且还容易造成大脑损害。

  9.别以为“智能提升从零岁开始”、“3岁定终生”或是“6岁决定一生”只是宣传标语!NO!根据研究,人类在胚胎期,脑部神经就是最早发育的,即使呱呱落地之后,也处在迅速发育的阶段,以新生儿来说,大脑约重四百克,已经占了成人脑重量(约一千五百公克)的四分之一强;到了一岁脑重量约九百公克;到三岁时脑重量便已发育到60%强,到了六岁大约重1200公克,逐渐接近成人的脑重了。

  可见得0-3岁是人一生中脑部发展的重要黄金期,也深切影响着未来智力潜能的发展,如何把握这段黄金期,施予婴幼儿早期教育,促进脑细胞的增加分化与脑神经的突触紧密连结,是非常重要的。

  聪明宝宝需要脑力开发

  脑力刺激的实证

  曾有名为巴甫洛夫的专家做了一个实验,他把同时生下来且同样体重的小白鼠分成两组,一组放于较大、光线充足的空间,提供丰富的声响、有滚筒、滑梯等玩具,让小白鼠自由追逐玩耍;另一组小白鼠,则关于没有光线的笼子里,没有玩具、没有同伴,虽然提供同样的食物营养,不过经过19天的测试,智力的表现却是大相迳庭的。

  结果显示:前一组小白鼠机敏灵活,人抓不住它们。后一组小白鼠,则呆滞迟缓,即使人去抓它们,也不知逃跑。抽样解剖发现,前一组小白鼠因常接受丰富的信息刺激,它们的大脑生出了许多突触发展出紧密的连结;而后一组小白鼠则因少受刺激,脑组织竟呈现萎缩状态,脑重量及体积也相对变小。

  巴甫洛夫这个实验的结果,主要是用来映证早期教育的重要性,他认为在婴幼儿成长的过程中,一旦错过了生长发育期的发展,脑组织结构就会趋于定型,潜能发展也将受到限制,即使拥有优越的天赋,也无法获得良好的发展。


  什么是智力潜能?!

  到底“智力潜能”是什么呢?

  根据大陆方面的研究专家表示:智力潜能是人的一种心理品质;也是一个人许多能力的总和,包括:观察力、注意力、记忆力、想象力、思维力、创造力等。所以,即使孩子在某一方面拥有特殊能力和专长,例如,只会读书而缺乏生活应变的能力,这样都不等于拥有真正的智力。

  如果孩子没有一定的智力,就难以掌握较多的知识,就如,孩子如果缺乏注意力及观察力,就无法正确的认知;没有记忆力,就无法将吸收的知识保存下来转为己有;没有思维力,就无法对事物有深刻的体会、无法掌握事物的发展规律;如果缺乏想象力,自然就没办法创新。

  台北市立妇幼医院儿童心智科翁菁菁主治医师也表示,要提升宝宝高度的智力潜能,不能只给予大脑单一能力的刺激,而在于是否能提供大脑各功能区域全面且足够的刺激,如此,宝宝的智力潜能才有全面发展的机会。

  推荐阅读:早教:玩耍有助儿童智力开发  影响宝宝智力6大疾病杀手

  智能提升造就天才?

  看到这里,你是不是对宝宝脑力开发的实质意义有了进一步的认识?但同时是不是也产生一个疑惑──“智能提升是以造就孩子成为天才或是资优生为目的吗?”翁菁菁医师提出另一个思考的角度,她表示,开发大脑提升智力潜能最主要的用意,应该在于培养孩子拥有丰富自如的生活能力。……热点:激发智力,父母当好催化剂

  刺激不足易造成发展迟缓  


  我们也试想,若我们的孩子像小白老鼠一样错过时机,缺乏适当的脑力刺激,会造就出什么样的光景?专长儿童心智早期疗育的翁医师分享她治疗的经验。

  她说:“儿童心智发展迟缓,除了有些是先天的脑部功能缺陷造成的,还有一部份是属于后天形成的,原因在于从出生开始,孩子脑部的功能就没有获得足够的刺激与开发,以致脑发展延迟。我们探究结果,发现有些孩子从出生就托养给乡下的爷爷奶奶带,因为传统长辈的带养方式比较注意孩子的养育而缺少教育,孩子长期在缺乏丰富刺激与互动的环境下成长,造成只有生理的持续成长,而心智的成长却因而远远落后于正常的指标。”……儿童早期教育需要一点虐待

  早期疗育愈造愈好

  翁医师语重心长的表示,早期疗育的治疗目标,之所以针对0-6岁的孩子,也是把握孩子脑部发展阶段的黄金期,来施予补救的效力。最好是发现时年纪越小,脑细胞活动力较强的时机,补救治疗的效果越好。翁医师说,3岁前是一个关键期,到了早期疗育最晚的6岁,治疗的效果与速度会自然递减。

  评估孩子正常心智发展

  如果您家有0-3岁的宝宝,现在,您是不是急于想搜寻幼儿脑力刺激与开发的资讯?

  在此我们提供给您的是0-3岁幼儿心智发展的大略过程表,包括粗动作、精细动作、语言表达、语言理解、社会性及身边处理六大项目的评估,帮助您先掌握孩子现阶段心智发展的情况,才能在施行智力潜能提升时「因材施教」,达到最佳的效果。……因材施教,让孩子灵性永存

  当然,如果您发现孩子在六大项目的发展上有落后的现象,也请不要妄加推断,翁医师再三强调,就算发现孩子有几个月的发展差距,也未必是发展迟缓的现象,若要进一步确认,不妨带孩子到儿童心智科、复健科或是儿童精神科做检测,万一确认为发展迟缓,医院完整的医疗也才能提供实质的帮助。
WindowXP(2000)下Apache2+Tomcat+PHP4+Mysql的安装

#Ipaddr(bcomcn)原创笔记,转载请注明

一.安装Apache2
下载地址:http://www.apache.org
下载installer的安装版本,直接根据提示安装完成。
配置httpd.conf


二.安装PHP
下载地址:http://www.php.net
下载Windows的ZIP包,解压到c:\php
1.将c:\php加入到系统环境变量PATH
如果不加入环境变量,很多库需要拷到系统目录,我觉得还是加环境变量方便
2.将c:\php\php4ts.dll文件拷到c:\windows(2000是c:\winnt)
此步不可省略
3.修改php.ini-recommand为php.ini,修改php.ini,移动到c:\windows
注:如果php.ini不拷到c:\windows,则需要在httpd.conf里配置PHPInDir="C:\php"
doc_root = c:\website\htdocs
extension_dir = c:\php\extensions
session.save_path = c:\phptemp

4.修改httpd.conf
加入:
LoadModule php4_module "c:/php/sapi/php4apache2.dll"
#注:网上很多文章此处有错误,误写成"c:/php/php4apache2.dll"
AddType application/x-httpd-php .php
DirectoryIndex ....   index.php (在索引页中,加入index.php)

三.安装Mysql
直接到www.mysql.org下载For Windows版的,根据提示安装即可。

四.安装phpmyadmin
到www.phpmyadmin.net下载最新版的phpmyadmin
解压到网站根目录的/mysql中
将config.inc.php里的auth_type改为http
如果是4.1版本以上的Mysql,需要将认证密码改一下:
use mysql
update user set Password=old_password('zhoutang');
flush privileges;

五.安装Tomcat
三步安装Tomcat
在Wind2000系统上都已经成功安装Tomcat,只需要三步:

第一步:

下载准备必备文件:
1.jakarta-tomcat-4.1.31.exe (安装文件)        http://jakarta.apache.org/tomcat/index.html
2.j2sdk-1_4_2_09-windows-i586-p.exe (Jdk1.4)         http://java.sun.com/j2se/1.4/download.html
3.mysql-connector-java-3.1.10.zip (支持数据库)               http://www.mysql.com/downloads/api-jdbc.html

第二步:
运行j2sdk-1_4_2_09-windows-i586-p.exe,安装在c:\program files\jsdk

在windows2000的控制面板 中 选择 '系统',在'高级'页 选择'环境变量'
新增:

JAVA_HOME=c:\program files\jsdk
CLASSPATH=.;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

第一行是设置Windows下JAVA_HOME环境变量,是必须设定的,后面两行主要对Windows下命令窗口起作用(DOS窗口)。注意CLASSPATH的第一

个参数是“.”,如果这个不设置,使用java hello.helloWorld 会报Exception in thread "main" java.lang.NoClassDefFoundError

第三步:

运行jakarta-tomcat-4.1.31.exe,并且,将Tomcat安装为Windows的服务运行。
解压mysql-connector-java-3.1.10.zip,我们需要里面的mysql-connector-java-3.1.10-bin.jar文件,拷贝这个文件到tomcat的安装目录的

common/lib下面

启动Tomcat,只需启动Windows服务里的Tomcat就行

在浏览器键入http://localhost:8080/ 看到Tomcat的启动页面.


测试:
Tomcat+JDK+mySQL完整测试:
a.在tomcat/webapps下建立子目录test
b.复制目录(注意是整个目录)tomcat/webapps/ROOT/WEB-INF到新建的test目录下  
c.在test目录下新建index.jsp文件:
<%@ page contentType="text/html;charset=gb2312"%>  
<%@ page import="java.sql.*"%>  
<html><title测试JSP连接Mysql页面</title><body>
<%Class.forName("org.gjt.mm.mysql.Driver").newInstance();  
String url ="jdbc:mysql://localhost:3306/mysql?user=root&password=&useUnicode=true&characterEncoding=GB2312";  
Connection conn= DriverManager.getConnection(url);  
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
String sql="select * from user";  
ResultSet rs=stmt.executeQuery(sql); %>  
<table><tr><td>您的第一个字段内容为:</td>  
<td>您的第二个字段内容为:</td>  
</tr>
<%while(rs.next()) {%>  
<tr><td>  
<%=rs.getString(1)%> </td><td>  
<%=rs.getString(2)%> </td></tr>  
<%}%>  
</table>  
<%out.print("Tomcat+JDK+mySQL完整测试,恭喜你,数据库操作成功!#Ipaddr原创笔记,转载请注明");%>  
<%rs.close();  
stmt.close();  
conn.close();  
%>
</body>
</html>
d.在浏览器中输入:http://localhost:8080/test,若出现“Tomcat+JDK+mySQL完整测试,恭喜你,数据库操作成功!”,则说明你的Tomcat+JDK+mySQL整体配置成功。

使用KNOPPIX修复Debian的LILO

[不指定 2005/08/24 21:55 | by ipaddr ]
Debian默认情况下,使用LILO引导,并且,使用XFS文件系统。
Linux默认情况下,内核没有包含XFS的支持。
有一次意外,用Debian的APT更新系统,更新完后,忘了使用LILO重新更新LILO,导致重启后LIL
O启动失败,无法进入Linux。
尝试用RH的安装光盘引导修复,因为不支持XFS,无法Mount,修复失败
尝试用Debian的安装光盘修复,虽然支持XFS,但在安装界面下可以看到硬盘分区,去无法在终端(Alt+F2)下面看到硬盘,无法继续。

最后用KNOPPIX修复成功
KNOPPIX是基于Debian的一种光盘版操作系统,一张光盘就可以启动系统,并且提供图形界面,使用非常方便,由于基于Debian,所以支持XFS。
修复过程如下:
用KNOPPIX光盘启动,在启动提示符下输入:
knoppix 2
进入命令行模式的Linux
#fdisk -l /dev/hda
查看当前分区情况
#mkdir /mnt/root
建立临时目录,挂载原分区
#mount /dev/hda1 /mnt/root
挂载,如果/boot单独分区,则还需要再次挂载/boot
#cd /mnt/root
#chroot ./
chroot到原系统
#cd /
#lilo -v
安装LILO
修复成功
Ipaddr(bcomcn)原创,转载请注明
Knoppix是一个方便的光盘操作系统,可以方便的启动计算机,上网,写邮件,进行Linux修复,另外,由于Linux2.6支持NTFS,所以,也可以很容易的查看NTFS格式的文件系统,所以,安全性要求比较高的计算机,应该禁用CDROM启动,并加上BIOS密码,否则,既使是Windows2000的系统,在不知道管理员密码的情况下,一样可以查看硬盘上的文档。
a.端口转发:

在详述端口转发之前,先讲一下我日前遇到的一件事情。
本人是搞测试的,有一厂家拿了一个服务器软件叫我测试。基于win2k的,端口号为881,服务器直接连接外部网络,客户端通过服
器ip来访问,而他们没有基于linux的服务器软件,照他们意思就必须将服务器换成windows的。作为一个linux爱好者,我想大家
明白这种痛苦。我翻了一下资料,发现iptables的端口转发功能可以解决,折腾了一下午,终于完成任务。下面将我的方法讲一下:
思想:利用端口转发,当服务器接收到881端口请求以后,将其转到 10.10.2.200:881上,10.10.2.200再将数据返回给请求连接

Eth0:连接ADSL,即ppp0接口
Eth1:连接内部网络,ip为10.10.1.1
10.10.2.200为win2k服务器,其端口881提供网络服务。


iptbles脚本:
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 881 -j DNAT --to-destination 10.10.2.200:881 ;将881请求
发至10.10.2.00:881端口
iptables -t nat -A POSTROUTING -s 10.10.0.0/16 -d 10.10.2.200 -p tcp -m tcp --dport 881 -j SNAT --to-source
10.10.1.1 ;返回a.b.b.d时数据源来自同一子网,就将其源地址更改为10.10.1.1,从eth0发出,并在连接跟踪表中查出a.b.c.d
从ppp0进来的,又由ppp0将此数据发出。
当然不要忘了加一条允许881端口访问的语句。
iptables –A INPUT –p tcp –dport 881 –i ppp0 –j ACCEPT

可不可把服务器放在局域内,用端口转发来实现呢?答案当然是肯定的,既然能把881端口转发,那么21,80这些个端口更不在话
,而且很多服务器软件都可以自定义端口,那就在得玩了,只要有合适的端口,即使给局域网每一个用户开一个ftp服务器也是可
的。你想要实现什么服务都可以,当然是基于端口转发的。

局域网内10.10.2.101是win2k,提供www服务,端口为800
通过服务器http://serverip:800 进行访问。
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 800 -j DNAT --to-destination 10.10.2.101:800
iptables -t nat -A POSTROUTING -s 10.10.0.0/16 -d 10.10.2.101 -p tcp -m tcp --dport 800 -j SNAT --to-source
10.10.1.1
iptables –A INPUT –p tcp –dport 800 –i ppp0 –j ACCEPT

由于是基于端口转发实现的,所以服务器上只需装个iptables来转发数据就行了,一切服务由内部服务器完成,这样的话,我
linux服务器才真正的算是个防火墙。


b.IPTABLES防火墙使用经验一谈

最近架设了一台LINUX的小型服务器 因为需要把LINUX的机子作为软路由器来使用 所以把使用的一些经验谈一下。

iptables的功能十分的强大 例如IP转发和伪装 防御DoS,扫描和嗅探试的攻击等等 在这里就不阐述了

我的系统环境: redhat 7.2
adsl 2m
8139fast 网卡

1:linux如何所以软路由功能:


说到这里 大家可能会想 只要在/etc/rc.d/rc.local加上cat 1 > /proc/sys/net/ipv4/ip_forward就可以了 让linux具
ip_forward的功能 但你会发现 就算这样设置你局域网内的其他电脑还是不能共享上网 这是为什么 因为当你只有一个公网的ip
候 你就必须用到iptables的IP伪装功能 把IP的伪装成你公网的IP 那怎么实现呢 你可以这样
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE 这样就可以把你所以出去的IP地址伪装成ppp0的IP地址(因为我
ADSL 如有不同可以修改)

2:我不想开放我的端口 但我要在我的电脑上启用http服务 并对外服务:

因为你不想开放除了80以外的端口 你可以这样
iptables –P INPUT –j DROP 我们用-P来拦截全部的通信
然后在来允许哪些端口可以被使用你可以这样写:
iptables –A INPUT –p tcp –dport 80 –j ACCEPT
你可以适当的按照这样的格式来添加自己想开放的端口 当然如果你觉得这样不是很好的管理你也可以新建一个iptables表 你可以
样做
iptables –N test (新建一个test表)
iptables –A test DROP
iptables –A test –p tcp –dport 80 –j ACCEPT(允许80端口被访问)
iptables –A INPUT –j test
iptables –A OUTPUT –j test
iptables –A FORWARD –j test(这3条的意思指让INPUT OUTPUT FORWARD都按照test的设置)

3我想在我内网的电脑上架设ftp服务 我该怎么做:

这就又要用到iptables 的又一个强大的功能端口映射了
你可以这样iptables -t nat -A PREROUTING -p tcp -m tcp --dport 25 -j DNAT --to-destination
192.168.0.6:21
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.6 -p tcp -m tcp --
dport 25-j SNAT --to-source 192.168.0.1
这写是XCHEN兄给我的指导 再这里先谢谢了 上面2句话的意思是把服务器的25端口映射到192.168.0.6这台电脑上

4:我不想让人家可以PING到我

这大概是做防火墙用到最多的一种了 你可以在iptables写这句话
iptables -A INPUT -p icmp --icmp-type echo-request -i ppp0 -j DROP
如果你前面是新建了一个新的test表 那也可以这样写iptables -A test -p icmp --icmp-type echo-request -i ppp0 -j
DROP

这句话就是不允许人家PING我 因为ping用到的是icmp协议 因为icmp没有端口可言 所以也不需要指定端口了
好了 这就是iptables的几种比较基本的用法
这里在介绍几iptbales常用的一些命令
iptables –F 清空所有的iptables的规则设置
/sbin/iptables-save >  iptables – save 把你的规则保存下来 因为你所有设置的规则再重新启动后都不会被保存 所以你必
来写一个脚本来让他开机运行 所以你就可以用这命令来保存你的规则 然后让他开机自动运行就可以了。

lsof -i :53

53为端口号..

WIndows下面,有一个小工具fport可以查看.
----------------------------------

查看端口打开情况:
a.查看所有打开的端口
netstat -na
b.查看正在监听的端口
netstat -na|grep LISTEN
c.查看所有已建立连接的80端口
netstat -na|grep 80|grep EST
一,准备原码.
1. 内核原码:为了减少复杂性,不编译所有内核和模块,建议找一个跟当前版本一样的内核原码,推荐安装时光盘的
a. [root@kindgeorge] uname -r   (查看当前版本)
2.4.20-8
可以cd  /usr/src 查看是否有这个目录2.4.20-8
b. 或者[root@kindgeorge]rpm -qa|grep kernel
kernel-source-2.4.20-8   如果有这个说明已安装了.
如果没有安装,可以在RH第二张光盘中拷贝过来或安装  rpm -ivh kernel-source-2.4.18-3.i386.rpm. 安装后会在/usr/src/出现linux-2.4连接和linux-2.4.20-8目录.
        c.在http://www.kernel.org 或www.redhat.com下载一个和当前版本的内核原码.
2.  先获取最新的信息,当然要到http://www.netfilter.org 或 http://www.iptables.org  (这两个网址是一样的).
网站左方download栏已经说明了最新版本的iptables-1.3.1
[root@kindgeorge src] cd /usr/src/
a. 获取最新iptables :  wget http://www.netfilter.org/files/iptables-1.3.1.tar.bz2
解压:tar xjvf iptables-1.3.1.tar.bz2
b. 获取最新patch-o-matic-ng的地址:ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/
[root@kindgeorge src] wget ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20050331.tar.bz2
(ipaddr注:FTP好象上不去,不知是不是作者写错了,可以到这下载最新补丁:http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/ )
解压: tar xjvf patch-o-matic-ng-20050331.tar.bz2

二.安装说明
(一).处理内核源码.
1. [root@kindgeorge src]# cd /usr/src/linux-2.4
2. [root@kindgeorge linux-2.4]# vi Makefile,
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 20
EXTRAVERSION = -8custom
将“EXTRAVERSION = -8custom”改为“EXTRAVERSION = -8”
即:
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 20
EXTRAVERSION = -8
为何要修改呢?因为不同版本的内容是不可以使用的,当不修改时,则变成这个版本(2.4.20-8custom)了,不同时是这样出错的:
/lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o: kernel-module version mismatch (版本错误)
      /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o was compiled for kernel version 2.4.20-8custom
      while this kernel is version 2.4.20-8.
/lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o: insmod /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o failed
/lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o: insmod ipt_iprange failed

3. [root@kindgeorge linux-2.4]# make mrproper
4. [root@kindgeorge linux-2.4]# make oldconfig  
'make oldconfig' - 采用以前的 .config 文件 (编译时十分有用)
技巧:在make menuconfig时,我们面对众多的选项常常不知道该如何选择,此时可以把安装时的配置文件copy到/usr/src/linux-2.4中:cp /boot/config-2.4.* /usr/src/linux-2.4/.config,再用make menuconfig编译,它会读取.config中原来的配置信息.
(二).给netfilter打补丁
解开tar xjvf patch-o-matic-ng-20050331.tar.bz2 包后,进入该目录,就会发现有很多目录,其实每个目录对应一个模块.
我们可以这样来选择,根据不同贮仓库submitted|pending|base|extra,例如:
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme base .
或:KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme extra
执行后,会测试是否已经应用和提示你是否应用该模块,但这样会遍历所有模块,有很多是用不着的,并且可能和系统版本有冲突,如果不管三七二十一全部选择的话,一般都会在编译和使用时出错.所以推荐用cat /模块目录名/info 和cat /模块目录名/help 看过后,认为适合自己,才选择.
我是针对在上面看过后,有目的的一个一个的应用的,这样做:
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme string
执行后,会测试是否已经应用和提示你是否应用该模块,按"y"应用.然后继续下一个
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme comment
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme connlimit
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme time
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme iprange
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme geoip
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme nth
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme ipp2p
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme quota
上面全部完成后,
cd /usr/src/linux-2.4
make menuconfig,确认[*] Prompt for development and/or incomplete code/drivers要选中
然后进入Networking options
再进入IP:Netfilter Configuration,会看到增加很多模块,每个新增的后面都会出现"NEW",把其想要的选中为模块"M"
保存、退出,至此,给netfilter打补丁工作完成
(三).编译netfilter模块
1.这里只需要编译netfilter,不需要编译整个内核和模块.这里我只需要ipv4的,ipv6我还没用到,所以不管了
cd /usr/src/linux-2.4
make dep
make modules SUBDIRS=net/ipv4/netfilter
2.建立一个新目录备份原来模块,以防万一:
mkdir /usr/src/netfilter
cp /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/*.o  /usr/src/netfilter/
3.应用新的模块
cp -f /usr/src/linux-2.4/net/ipv4/netfilter/*.o /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/
4.更新你的modules.dep
depmod -a
当出现这个时,可以不用理会,因为ipchains, ipfwadm模块都没用,也可以把出错的删除.
depmod: *** Unresolved symbols in /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipchains_core.o
depmod: *** Unresolved symbols in /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipfwadm_core.o
(四).编译安装新的iptables
解压后有目录iptables-1.3.1
cd /usr/src/iptables-1.3.1
export KERNEL_DIR=/usr/src/linux-2.4
export IPTABLES_DIR=/usr/src/iptables-1.3.1
make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install

三.安装完成,测试及应用
1.内容过滤
iptables -I FORWARD -m string --string "腾讯" -j DROP
iptables -I FORWARD -s 192.168.3.159 -m string --string "qq.com" -j DROP
iptables -I FORWARD -d 192.168.3.0/24 -m string --string "宽频影院" -j DROP
iptables -I FORWARD -s 192.168.3.0/24 -m string --string "色情" -j DROP
iptables -I FORWARD -p tcp --sport 80 -m string --string "广告" -j DROP
2.备注应用
iptables -I FORWARD -s 192.168.3.159 -p tcp --dport 80 -j DROP -m comment --comment "the bad guy can not online"
iptables -I FORWARD -s 192.168.3.159 -m string --string "qq.com" -j DROP -m comment --comment "denny go to qq.com"
3.并发连接应用
模块 connlimit 作用:连接限制
--connlimit-above n 限制为多少个
--connlimit-mask n 这组主机的掩码,默认是connlimit-mask 32 ,即每ip.
这个主要可以限制内网用户的网络使用,对服务器而言则可以限制每个ip发起的连接数...比较实用
例如:只允许每个ip同时5个80端口转发,超过的丢弃:
iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP
例如:只允许每组ip同时10个80端口转发:
iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 24 -j DROP
例如:为了防止DOS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃.
/sbin/iptables -A INPUT -s 192.186.1.0/24 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
/sbin/iptables -A INPUT -s 192.186.1.0/24 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

4.ip范围应用
iptables -A FORWARD -m iprange --src-range 192.168.1.5-192.168.1.124 -j ACCEPT
5.每隔N个匹配
iptables -t mangle -A PREROUTING -m nth --every 10 -j DROP
6.封杀BT类P2P软件
iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP
iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP
iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP
7.配额匹配
iptables -I FORWARD -s 192.168.3.159 -p tcp --dport 80 -m quota --quota 500 -j DROP
iptables -I FORWARD -s 192.168.3.159 -p tcp --dport 80 -m quota --quota 500 -j ACCEPT
以上均测试通过,只有geoip的geoipdb.bin没下载到,所以没测试
在此仅为抛个砖头,更多的应用,要根据自己的需要来组合各个规则和模块了.


本来此篇文章和<<netfilter/iptables模块功能中文介绍>>是写在一起的,由于篇幅太长,所以份成两篇. 如果有更新请见我的blog: http://kindgeorge.at.3322.org

相关资料:
kindgeorge的
http://blog.chinaunix.net/article.php?articleId=19778&blogId=4543
http://bbs.chinaunix.net/forum/viewtopic.php?t=525525    netfilter/iptables模块功能中文介绍
platinum的 http://bbs.chinaunix.net/forum/viewtopic.php?t=505370 如何给iptables添加新的模块v2.2(含视频教程)
hongfengyue的 http://www.chinaunix.net/jh/4/508312.html iptables 添加模块 (for kernel 2.6)
官方: http://www.netfilter.org/documentation/HOWTO/netfilter-extensions-HOWTO.html


apache+mod_ssl

[不指定 2005/08/08 23:03 | by ipaddr ]
参改了一位前人的文章《Apache2 + mod_ssl + php5 完全安装实录》,在此表示感谢

1.安装openssl

一般,RH的系统会自带了RPM包的openssl,可以直接
rpm -ivh openssl*.rpm

另外,需在源代码安装,可参考:
下载最新版本的openssl: http://www.openssl.org/source/
# tar zxvf openssl-0.9.7d.tar.gz
# cd openssl-0.9.7d
# ./config
# make
# make install

2.整合安装mod_ssl

下载apache2: http://httpd.apache.org/download.cgi
我需要mod_ssl的支持,和apache1不同的是,mod_ssl不在是单独的模块,而是放在apache发行包里面了,默认是不启用的,config的时候选择上就可以了。
我使用DSO方式编译安装apache,同时将全部模块都编译好,以方便后来可能的需要。只要编辑httpd.conf,在里面去掉不想要的模块(注释或者删除对应模块的LoadModule行),就可以定制自己的apache咯。
# tar zxvf httpd-2.0.50.tar.gz
# ./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl=shared --enable-mods-shared=all --with-ssl=/usr/local/ssl
# make
# make install


Apache有两种使用模块的方法,其一是永久性包含进核心;
如果操作系统支持动态共享对象(DSO),而且能为autoconf所检测,则模块还可以被动态编译。
DSO模块的存储是独立与核心的,可以被核心使用由mod_so模块提供的运行时刻配置指令包含或排除。
如果编译中包含有任何动态模块,则mod_so模块会被自动包含进核心。如果希望核心能够装载DSO,而不实际编译任何动态模块,需要明确指定--enable-so。
(http://kajaa.bbs.us/ApacheManual/install.html)

第一次按照上述方法编译的apache,启动的时候会报错:
# cd /usr/local/apache2
# ./bin/apachectl startssl
Syntax error on line 251 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/modules/mod_ssl.so into server: /usr/local/apache/modules/mod_ssl.so: undefined symbol: X509_free

原因是什么呢?看 http://www.smartframeworks.com/qt-apache-ssl.html
因为按照下面的方法(参看:Apache2 + mod_ssl + php5 完全安装实录(2))安装的openssl默认是没有编译成动态链接库的,因为其文档说openssl的动态链接库还不成熟,可以使用 ./config shared 编译带动态链接库的openssl,但是还处于试验阶段。
解决这个问题的办法是:将mod_ssl静态的编译到apache里面。
请使用下面的方法重新来过:)
# ./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl=static --with-ssl=/usr/local/ssl --enable-mods-shared=all
# make
# make install
(ipaddr注:好象要先mkdir /usr/local/ssl,另外,--enable-mods-shared=all可以不要)

这次启动apache的时候又发现一个错误:
# cd /usr/local/apache2
# ./bin/apachectl startssl
Syntax error on line 108 of /usr/local/apache2/conf/ssl.conf:
SSLCertificateFile: file '/usr/local/apache2/conf/ssl.crt/server.crt' does not exist or is empty

这又是什么原因呢?因为我们没有配置ssl,需要生成ssl需要的证书。
以前使用apache1+mod_ssl的时候,make之后有一个这样的步骤
$ make certificate
可以用来生成ssl所用到的证书。
现在没有这个工具了,只能自己动手生成了,对证书不熟悉的人,有一个工具可以使用:http://www.openssl.org/contrib/ssl.ca-0.1.tar.gz
# cd /usr/local/apache2/conf
# tar zxvf ssl.ca-0.1.tar.gz
# cd ssl.ca-0.1
# ./new-root-ca.sh                         (生成根证书)
No Root CA key round. Generating one
Generating RSA private key, 1024 bit long modulus
...........................++++++
....++++++
e is 65537 (0x10001)
Enter pass phrase for ca.key:              (输入一个密码)
Verifying - Enter pass phrase for ca.key:  (再输入一次密码)
......
Self-sign the root CA...                   (签署根证书)
Enter pass phrase for ca.key:              (输入刚刚设置的密码)
........
........                                   (下面开始签署)
Country Name (2 letter code) [MY]:CN
State or Province Name (full name) [Perak]:JiangSu
Locality Name (eg, city) [Sitiawan]:NanJing
Organization Name (eg, company) [My Directory Sdn Bhd]:Wiscom System Co.,Ltd
Organizational Unit Name (eg, section) [Certification Services Division]:ACSTAR
Common Name (eg, MD Root CA) []:WISCOM CA
Email Address []:acmail@wiscom.com.cn

这样就生成了ca.key和ca.crt两个文件,下面还要为我们的服务器生成一个证书:
# ./new-server-cert.sh server              (这个证书的名字是server)
......
......
Country Name (2 letter code) [MY]:CN
State or Province Name (full name) [Perak]:JiangSu
Locality Name (eg, city) [Sitiawan]:NanJing
Organization Name (eg, company) [My Directory Sdn Bhd]:Wiscom System Co.,Ltd
Organizational Unit Name (eg, section) [Secure Web Server]:ACSTAR
Common Name (eg, www.domain.com) []:acmail.wiscom.com.cn
Email Address []:acmail@wiscom.com.cn

这样就生成了server.csr和server.key这两个文件。
还需要签署一下才能使用的:
# ./sign-server-cert.sh server
CA signing: server.csr -> server.crt:
Using configuration from ca.config
Enter pass phrase for ./ca.key:             (输入上面设置的根证书密码)
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'CN'
stateOrProvinceName   :PRINTABLE:'JiangSu'
localityName          :PRINTABLE:'NanJing'
organizationName      :PRINTABLE:'Wiscom System Co.,Ltd'
organizationalUnitName:PRINTABLE:'ACSTAR'
commonName            :PRINTABLE:'acmail.wiscom.com.cn'
emailAddress          :IA5STRING:'acmail@wiscom.com.cn'
Certificate is to be certified until Jul 16 12:55:34 2005 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
CA verifying: server.crt <-> CA cert
server.crt: OK
(如果这里出现错误,最好重新来过,删除ssl.ca-0.1这个目录,从解压缩处重新开始。)

下面要按照ssl.conf里面的设置,将证书放在适当的位置。
# chmod 400 server.key
# cd ..
# mkdir ssl.key
# mv ssl.ca-0.1/server.key ssl.key
# mkdir ssl.crt
# mv ssl.ca-0.1/server.crt ssl.crt

然后就可以启动啦!
# cd /usr/local/apache2
# ./bin/apachectl startssl

对于这个提示:
httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
只需要编辑httpd.conf,找到ServerName xxxx这一行,去掉前面的注释即可。

//很大部分参考《Apache2 + mod_ssl + php5 完全安装实录》,只做了一些小说明,原文作者写得太详细了。

在此基础上可直接安装PHP,不再重复PHP的安装了。

分页: 1/2 第一页 1 2 下页 最后页 [ 显示模式: 摘要 | 列表 ]