Feb
13
初始安装MSSQL SERVER前,新建一个属于users组的用户,我这里名为SQLADMIN,建议密码尽量设置的复杂一点。
然后在安装mssql进行到服务帐户这步时候,选择启动帐户用户名为sqladmin即可
如图1所示:
安装完毕,我先打上sp4补丁,在“服务管理器”中启动SQL server,完全没有问题
如图2所示:
原因是安装时候选择指定的帐户为服务启动用户,mssql为自动为以下目录添加sqladmin的完全控制权限,我的sql程序文件在C盘,数据库文件放D盘:
C:\Program Files\Microsoft SQL Server\MSSQL
C:\Program Files\Microsoft SQL Server\MSSQL\Binn
C:\Program Files\Microsoft SQL Server\MSSQL\Install
C:\Program Files\Microsoft SQL Server\MSSQL\Upgrade
D:\Program Files\Microsoft SQL Server\MSSQL
D:\Program Files\Microsoft SQL Server\MSSQL\BACKUP
D:\Program Files\Microsoft SQL Server\MSSQL\Data
D:\Program Files\Microsoft SQL Server\MSSQL\FTDATA
D:\Program Files\Microsoft SQL Server\MSSQL\JOBS
D:\Program Files\Microsoft SQL Server\MSSQL\LOG
D:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA
以下注册表路径会被添加sqladmin的完全控制权限:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Replication
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Tracking
SQLAGENT服务启动也完全没有问题
PS:使用低权限用户启动SQL SERVER对于防止通过web sql注入和sql扩展提权具有重要意义,之所以建议使用users组用户启动,因为有可能目录和注册表还是需要有users组权限读取
欢迎大家就此问题和我共同交流探讨
然后在安装mssql进行到服务帐户这步时候,选择启动帐户用户名为sqladmin即可
如图1所示:
安装完毕,我先打上sp4补丁,在“服务管理器”中启动SQL server,完全没有问题
如图2所示:
原因是安装时候选择指定的帐户为服务启动用户,mssql为自动为以下目录添加sqladmin的完全控制权限,我的sql程序文件在C盘,数据库文件放D盘:
C:\Program Files\Microsoft SQL Server\MSSQL
C:\Program Files\Microsoft SQL Server\MSSQL\Binn
C:\Program Files\Microsoft SQL Server\MSSQL\Install
C:\Program Files\Microsoft SQL Server\MSSQL\Upgrade
D:\Program Files\Microsoft SQL Server\MSSQL
D:\Program Files\Microsoft SQL Server\MSSQL\BACKUP
D:\Program Files\Microsoft SQL Server\MSSQL\Data
D:\Program Files\Microsoft SQL Server\MSSQL\FTDATA
D:\Program Files\Microsoft SQL Server\MSSQL\JOBS
D:\Program Files\Microsoft SQL Server\MSSQL\LOG
D:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA
以下注册表路径会被添加sqladmin的完全控制权限:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Replication
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Tracking
SQLAGENT服务启动也完全没有问题
PS:使用低权限用户启动SQL SERVER对于防止通过web sql注入和sql扩展提权具有重要意义,之所以建议使用users组用户启动,因为有可能目录和注册表还是需要有users组权限读取
欢迎大家就此问题和我共同交流探讨
Feb
13
早上帮朋友一台服务器解决了 Mysql cpu 占用 100% 的问题。稍整理了一下,将经验记录在这篇文章里:《解决一个 MySQL 服务器进程 CPU 占用 100%的技术笔记》
朋友主机(Windows 2003 + IIS + PHP + MYSQL )近来 MySQL 服务进程 (mysqld-nt.exe) CPU 占用率总为 100% 高居不下。此主机有10个左右的 database, 分别给十个网站调用。据朋友测试,导致 mysqld-nt.exe cpu 占用奇高的是网站A,一旦在 IIS 中将此网站停止服务,CPU 占用就降下来了。一启用,则马上上升。
MYSQL CPU 占用 100% 的解决过程
今天早上仔细检查了一下。目前此网站的七日平均日 IP 为2000,PageView 为 3万左右。网站A 用的 database 目前有39个表,记录数 60.1万条,占空间 45MB。按这个数据,MySQL 不可能占用这么高的资源。
于是在服务器上运行命令,将 mysql 当前的环境变量输出到文件 output.txt:
d:\web\mysql> mysqld.exe --help >output.txt
发现 tmp_table_size 的值是默认的 32M,于是修改 My.ini, 将 tmp_table_size 赋值到 200M:
d:\web\mysql> notepad c:\windows\my.ini
[mysqld]
tmp_table_size=200M
然后重启 MySQL 服务。CPU 占用有轻微下降,以前的CPU 占用波形图是 100% 一根直线,现在则在 97%~100%之间起伏。这表明调整 tmp_table_size 参数对 MYSQL 性能提升有改善作用。但问题还没有完全解决。
于是进入 mysql 的 shell 命令行,调用 show processlist, 查看当前 mysql 使用频繁的 sql 语句:
mysql> show processlist;
反复调用此命令(每秒刷两次),发现网站 A 的两个 SQL 语句经常在 process list 中出现,其语法如下:
Select t1.pid, t2.userid, t3.count, t1.date
FROM _mydata AS t1
LEFT JOIN _myuser AS t3 ON t1.userid=t3.userid
LEFT JOIN _mydata_body AS t2 ON t1.pid=t3.pid
orDER BY t1.pid
LIMIT 0,15
调用 show columns 检查这三个表的结构 :
mysql> show columns from _myuser;
mysql> show columns from _mydata;
mysql> show columns from _mydata_body;
终于发现了问题所在:_mydata 表,只根据 pid 建立了一个 primary key,但并没有为 userid 建立索引。而在这个 SQL 语句的第一个 LEFT JOIN ON 子句中:
LEFT JOIN _myuser AS t3 ON t1.userid=t3.userid
_mydata 的 userid 被参与了条件比较运算。于是我为给 _mydata 表根据字段 userid 建立了一个索引:
mysql> Alter TABLE `_mydata` ADD INDEX ( `userid` )
建立此索引之后,CPU 马上降到了 80% 左右。看到找到了问题所在,于是检查另一个反复出现在 show processlist 中的 sql 语句:
Select COUNT(*)
FROM _mydata AS t1, _mydata_key AS t2
Where t1.pid=t2.pid and t2.keywords = '孔雀'
经检查 _mydata_key 表的结构,发现它只为 pid 建了了 primary key, 没有为 keywords 建立 index。_mydata_key 目前有 33 万条记录,在没有索引的情况下对33万条记录进行文本检索匹配,不耗费大量的 cpu 时间才怪。看来就是针对这个表的检索出问题了。于是同样为 _mydata_key 表根据字段 keywords 加上索引:
mysql> Alter TABLE `_mydata_key` ADD INDEX ( `keywords` )
建立此索引之后,CPU立刻降了下来,在 50%~70%之间震荡。
再次调用 show prosslist,网站A 的sql 调用就很少出现在结果列表中了。但发现此主机运行了几个 Discuz 的论坛程序, Discuz论坛的好几个表也存在着这个问题。于是顺手一并解决,cpu占用再次降下来了。
解决 MYSQL CPU 占用 100% 的经验总结
增加 tmp_table_size 值。mysql 的配置文件中,tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。 这是 mysql 官方关于此选项的解释:
tmp_table_size
This variable determines the maximum size for a temporary table in memory. If the table becomes too large, a MYISAM table is created on disk. Try to avoid temporary tables by optimizing the queries where possible, but where this is not possible, try to ensure temporary tables are always stored in memory. Watching the processlist for queries with temporary tables that take too long to resolve can give you an early warning that tmp_table_size needs to be upped. Be aware that memory is also allocated per-thread. An example where upping this worked for more was a server where I upped this from 32MB (the default) to 64MB with immediate effect. The quicker resolution of queries resulted in less threads being active at any one time, with all-round benefits for the server, and available memory.
对 Where, JOIN, MAX(), MIN(), orDER BY 等子句中的条件判断中用到的字段,应该根据其建立索引 INDEX。索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。表越大,花费时间越多。如果表对于查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。如果一个表有1000行,这比顺序读取至少快100倍。所有的MySQL索引(PRIMARY、UNIQUE和INDEX)在B树中存储。
根据 mysql 的开发文档:
索引 index 用于:
快速找出匹配一个Where子句的行
当执行联结(JOIN)时,从其他表检索行。
对特定的索引列找出MAX()或MIN()值
如果排序或分组在一个可用键的最左面前缀上进行(例如,ORDER BY key_part_1,key_part_2),排序或分组一个表。如果所有键值部分跟随DESC,键以倒序被读取。
在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。如果对某些表的所有使用的列是数字型的并且构成某些键的最左面前缀,为了更快,值可以从索引树被检索出来。
假定你发出下列Select语句:
mysql> Select * FROM tbl_name Where col1=val1 AND col2=val2;
如果一个多列索引存在于col1和col2上,适当的行可以直接被取出。如果分开的单行列索引存在于col1和col2上,优化器试图通过决定哪个索引将找到更少的行并来找出更具限制性的索引并且使用该索引取行。
开发人员做 SQL 数据表设计的时候,一定要通盘考虑清楚。
朋友主机(Windows 2003 + IIS + PHP + MYSQL )近来 MySQL 服务进程 (mysqld-nt.exe) CPU 占用率总为 100% 高居不下。此主机有10个左右的 database, 分别给十个网站调用。据朋友测试,导致 mysqld-nt.exe cpu 占用奇高的是网站A,一旦在 IIS 中将此网站停止服务,CPU 占用就降下来了。一启用,则马上上升。
MYSQL CPU 占用 100% 的解决过程
今天早上仔细检查了一下。目前此网站的七日平均日 IP 为2000,PageView 为 3万左右。网站A 用的 database 目前有39个表,记录数 60.1万条,占空间 45MB。按这个数据,MySQL 不可能占用这么高的资源。
于是在服务器上运行命令,将 mysql 当前的环境变量输出到文件 output.txt:
d:\web\mysql> mysqld.exe --help >output.txt
发现 tmp_table_size 的值是默认的 32M,于是修改 My.ini, 将 tmp_table_size 赋值到 200M:
d:\web\mysql> notepad c:\windows\my.ini
[mysqld]
tmp_table_size=200M
然后重启 MySQL 服务。CPU 占用有轻微下降,以前的CPU 占用波形图是 100% 一根直线,现在则在 97%~100%之间起伏。这表明调整 tmp_table_size 参数对 MYSQL 性能提升有改善作用。但问题还没有完全解决。
于是进入 mysql 的 shell 命令行,调用 show processlist, 查看当前 mysql 使用频繁的 sql 语句:
mysql> show processlist;
反复调用此命令(每秒刷两次),发现网站 A 的两个 SQL 语句经常在 process list 中出现,其语法如下:
Select t1.pid, t2.userid, t3.count, t1.date
FROM _mydata AS t1
LEFT JOIN _myuser AS t3 ON t1.userid=t3.userid
LEFT JOIN _mydata_body AS t2 ON t1.pid=t3.pid
orDER BY t1.pid
LIMIT 0,15
调用 show columns 检查这三个表的结构 :
mysql> show columns from _myuser;
mysql> show columns from _mydata;
mysql> show columns from _mydata_body;
终于发现了问题所在:_mydata 表,只根据 pid 建立了一个 primary key,但并没有为 userid 建立索引。而在这个 SQL 语句的第一个 LEFT JOIN ON 子句中:
LEFT JOIN _myuser AS t3 ON t1.userid=t3.userid
_mydata 的 userid 被参与了条件比较运算。于是我为给 _mydata 表根据字段 userid 建立了一个索引:
mysql> Alter TABLE `_mydata` ADD INDEX ( `userid` )
建立此索引之后,CPU 马上降到了 80% 左右。看到找到了问题所在,于是检查另一个反复出现在 show processlist 中的 sql 语句:
Select COUNT(*)
FROM _mydata AS t1, _mydata_key AS t2
Where t1.pid=t2.pid and t2.keywords = '孔雀'
经检查 _mydata_key 表的结构,发现它只为 pid 建了了 primary key, 没有为 keywords 建立 index。_mydata_key 目前有 33 万条记录,在没有索引的情况下对33万条记录进行文本检索匹配,不耗费大量的 cpu 时间才怪。看来就是针对这个表的检索出问题了。于是同样为 _mydata_key 表根据字段 keywords 加上索引:
mysql> Alter TABLE `_mydata_key` ADD INDEX ( `keywords` )
建立此索引之后,CPU立刻降了下来,在 50%~70%之间震荡。
再次调用 show prosslist,网站A 的sql 调用就很少出现在结果列表中了。但发现此主机运行了几个 Discuz 的论坛程序, Discuz论坛的好几个表也存在着这个问题。于是顺手一并解决,cpu占用再次降下来了。
解决 MYSQL CPU 占用 100% 的经验总结
增加 tmp_table_size 值。mysql 的配置文件中,tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。 这是 mysql 官方关于此选项的解释:
tmp_table_size
This variable determines the maximum size for a temporary table in memory. If the table becomes too large, a MYISAM table is created on disk. Try to avoid temporary tables by optimizing the queries where possible, but where this is not possible, try to ensure temporary tables are always stored in memory. Watching the processlist for queries with temporary tables that take too long to resolve can give you an early warning that tmp_table_size needs to be upped. Be aware that memory is also allocated per-thread. An example where upping this worked for more was a server where I upped this from 32MB (the default) to 64MB with immediate effect. The quicker resolution of queries resulted in less threads being active at any one time, with all-round benefits for the server, and available memory.
对 Where, JOIN, MAX(), MIN(), orDER BY 等子句中的条件判断中用到的字段,应该根据其建立索引 INDEX。索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。表越大,花费时间越多。如果表对于查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。如果一个表有1000行,这比顺序读取至少快100倍。所有的MySQL索引(PRIMARY、UNIQUE和INDEX)在B树中存储。
根据 mysql 的开发文档:
索引 index 用于:
快速找出匹配一个Where子句的行
当执行联结(JOIN)时,从其他表检索行。
对特定的索引列找出MAX()或MIN()值
如果排序或分组在一个可用键的最左面前缀上进行(例如,ORDER BY key_part_1,key_part_2),排序或分组一个表。如果所有键值部分跟随DESC,键以倒序被读取。
在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。如果对某些表的所有使用的列是数字型的并且构成某些键的最左面前缀,为了更快,值可以从索引树被检索出来。
假定你发出下列Select语句:
mysql> Select * FROM tbl_name Where col1=val1 AND col2=val2;
如果一个多列索引存在于col1和col2上,适当的行可以直接被取出。如果分开的单行列索引存在于col1和col2上,优化器试图通过决定哪个索引将找到更少的行并来找出更具限制性的索引并且使用该索引取行。
开发人员做 SQL 数据表设计的时候,一定要通盘考虑清楚。
Feb
13
SMTP错误、DNS错误代码表
表(一) SMTP 代码
代码 释义
421 Service not available, closing transmission channel 括号内的主机无法提供正常服务,关闭传送管道,邮件将滞留在主机上
450 Requested mail action not taken: mailbox unavailable 所要求的邮件动作无法执行:邮件信箱无法提供服务,邮件将滞留在主机上
451 Requested action aborted: local error in processing 要求动作中断:本地端错误
452 Requested action not taken: insufficient system storage 要求动作无法执行:系统空间不足
550 Requested action not taken: mailbox unavailable 所要求动作无法执行:信箱不存在,邮件将退回给寄件者
551 User not local; please try 邮件服务器知道使用者不属于本地端,将尝试括号内的转送路径
552 Requested mail action aborted: exceeded storage allocation 所要求的动作中断:超出所分配的储存空间,邮件将退回给寄件者
553 Requested action not taken: mailbox name not allowed 所要求的动作未执行:信箱不允许该动作执行
553 Requested action not taken: Local user only 发件箱收到通信的提示--请检查接收方的邮件MX记录
554 Transaction failed 传送失败
表(二) DSN 错误代码
注意事项:第一个字符为 4 或 5
4.X.X 代表暂时错误,邮件服务器将稍后再试
5.X.X 代表邮件传送失败
类别 代码 释义
X.1.X 表示邮件地址(Address)问题 X.1.0 Other address status 其它邮件地址问题
X.1.1 Bad destination mailbox address 收件地址信箱错误
X.1.2 Bad destination system address 收件地址系统错误
X.1.3 Bad destination mailbox address syntax 收件地址信箱句法错误
X.1.4 Destination mailbox address ambiguous 收件地址信箱不清
X .1.5 Destination mailbox address valid 收件地址信箱无效
X.1.6 Mailbox has moved 信箱已移除
X.1.7 Bad sender's mailbox address syntax 寄件者信箱句法错误
X.1.8 Bad sender's system address 寄件者系统错误
X.2.X 表示收件者信箱(Mailbox)问题 X.2.0 Other or undefined mailbox status 其它或未定义的收件者信箱问题
X.2.1 Mailbox disabled, not accepting messages 信箱无法运作,无法接收信件
X.2.2 Mailbox full 信箱已满
X.2.3 Message length exceeds administrative limit. 邮件长度超出管理者限制
X.2.4 Mailing list expansion problem 此信箱属于特定邮件群组,但群组无法开展
X.3.X 表示目的地邮件系统(Mail System)问题 X.3.0 Other or undefined mail system status 其它或未定义的邮件系统问题
X.3.1 Mail system full 邮件系统储存空间已满
X.3.2 System not accepting network messages 主机无法接收信件,可能暂时关机、维修等
X.3.3 System not capable of selected features 指定的邮件特征无法为收件主机所接收
X.3.4 Message too big for system 邮件大小超出邮件系统限制
X.3.5 System incorrectly configured 系统设定错误,无法接收邮件
X.4.X 表示邮件传送系统网络与路由(Network and Routing)问题 X.4.0 Other or undefined network or routing status 其它或未定义的网络与路邮设定问题
X.4.1 No answer from host 主机无响应
X.4.2 Bad connection 联机错误
X.4.3 Directory server failure 网络系统无法转送邮件,例如无法联机到DNS服务器
X.4.4 Unable to route 邮件系统所需的路由信息不足,无法决定传送路由
X.4.5 Network congestion 网络壅塞
X.4.6 Routing loop detected 邮件因错误的路由设定,多次遶行而无法传送
X.4.7 Delivery time expired 邮件滞留主机过久
X.5.X
表示邮件传送协议问题 (Mail Delivery Protocol)问题,可能是寄件方、收信方或是传送邮件系统的问题 X.5.0 Other or undefined protocol status 其它或未定义的通讯协议问题
X.5.1 Invalid command 命令无效
X.5.2 Syntax error 邮件传送协议的句法错误
X.5.3 Too many recipients 太多收件者
X.5.4 Invalid command arguments 命令叙述错误
X.5.5 Wrong protocol version 错误的通讯协议版本
X.6.X
表示邮件内容或媒介(Message Content or Media)的问题,收件者与寄件者双方必需支持同样的内容类别(Content Type) X.6.0 Other or undefined media error 其它或未定义的媒介问题
X.6.1 Media not supported 传送协议或转送邮件的系统不支持该媒介
X.6.2 Conversion required and prohibited 邮件内容在传送之前必需经过转换动作,但该动作不被允许
X.6.3 Conversion required but not supported 邮件内容在转送之前须经过转换动作,但无法执行
X.6.4 Conversion with loss performed 邮件传送成功,但部份内容因无法转换而遗失
X.6.5 Conversion failed 转换动作失败
X.7.X 表示安全或邮件监控规则(Security or Policy) 的问题 X.7.0 Other or undefined security status 其它安全或邮件监控规则问题
X.7.1 Delivery not authorized, message refused 寄件者无授权传送信件
X.7.2 Mailing list expansion prohibited 寄件者无授权寄信予该邮件群组
X.7.3 Security conversion required but not possible 邮件安全协定
X.7.4 Security features not supported 邮件含有安全特征如认证措施,但不为传送协议所接受
X.7.5 Cryptographic failure 经授权得以认证或解密该邮件的系统无法完成该动作,因所需信息不完全
X.7.6 Cryptographic algorithm not supported 经授权得以认证或解密该邮件的系统无法完成该动作,因算法不支持
X.7.7 Message integrity failure 经授权得以认证该邮件的系统无法完成该动作,因邮件已损毁
*******************************************************************************
发送邮件常见出错代码
按照下列“Q”代表问题,“A”代表解答。
Q:the server says:550 relaying mail to <> is not allowed
Q:The server says:550 <>... relaying denied
Q:the server says:550 5.7.1 relaying not permitted:
A:使用某些Smtp服务器时,限制了收件人的地址,只能换一个Smtp服务器。
Q:The server says:550 <>:local user only
Q:The server says:550 <>:Invalid User
Q:The server says:550 Invalid recipient
A:使用163.net,163.com,yeah.net和netease.com之类的Smtp服务器时,只能用自身的信箱发信,所以要在Outlook Express的“帐户属性”中的“个人信息”里面填写正确的邮件地址。
Q:the server says:551 delivery not allowed to non-local recipient
Q:The server says:553 Relay restriction.
Q:The server says:553 From <>, message blocked.
Q:The server says:553 sorry,you are not allow to use this SMTP to relay your eami
Q:The server says:553 sorry, that domain isn't in my list of allowed rcpthosts
A:使用21cn.com,china.com,371.net,sina.com等大多数信箱的smtp服务器时,只能用自身的信箱发信,所以要在Outlook Express的“帐户属性”中的“个人信息”里面填写正确的邮件地址。
Q:The server says:505 client was not authenticated
Q:The server says:553 authentication is required to send mail as <>
A:使用263.net和sohu.com的Smtp服务器时,不但要用自身的邮箱发信,而且要加入身份验证,所以即要在“个人信息”中填写正确邮箱地址,又要选中“SMTP服务器需要认证”。
Q:The server says:535 Error:authenticatin failed
Q:The server says:535 Authentication unsuccessful
Q:The server says:452 Insufficient system storage
A:在使用Esmtp认证的过程中出错,检查一下Esmtp设置,多试几次。
Q:The server says:553 <>...domain name required
Q:The server says:550 Unable to relay for ...
A:多出现在用Wingate代理服务器发送邮件时。虽然在Wingate中“POP3 邮箱帐号”要使用“用户名#POP3地址”的格式,但在“帐户属性”中的“个人信息”中还是要填写一般的格式。
Q:The server says:553 mailbox name not allowed
A:收件人邮箱地址不允许,需检查收件人地址是否正确。
Q:the server says:553 sorry, your envelop sender is in my badmailfrom list
A:服务器限制了收件人的地址,只能换一个smtp服务器发信。
Q:the server says:554 Transaction failed
Q:The server says:451 Requested action aborted,errno=28
A:传输失败,检查网络问题。
Q:the server says:503 error:needmail command
Q:The server says:503 need mail before RCPT.
Q:The server says:503 Bad sequence of commands
A:消息命令顺序出错,一般出现在其他错误之后,先检查之前出现的错误提示。
Q:The Server says:501 syntax.helo hostname
Q:The server says:501 Invalid domain name
Q:The server says:502 unimplemented command
Q:the server says:503 5.0.0 polite people say HELO first
Q:The server says:533 relay restriction
Q:The server says:544 <>:Recipient address rejected: Relay access denied
A:传输中的语法错误,原因不明。
Outlook Express错误代码表
错误码 一般意义
0x800C0131 可能是 Folders.dbx 文件属性错误或损坏
0x800C013E 可能是 Folders.dbx 文件属性错误或损坏
0x800CCC00 身份验证(Authentication)未载入
0x800CCC01 认证(Certificate)内容错误
0x800CCC02 认证日期错误
0x800CCC03 使用者已连线
0x800CCC05 未连接到服务器
0x800CCC0A 邮件下载未完成
0x800CCC0B 服务器忙碌中
0x800CCC0D 找不到主机(检查你的SMTP服务器是不是设错,亦可能是对方Server 的问题,例如 Mail Server 没有开机、对方的DNS 服务器死掉了等等)
0x800CCC0E 联机到服务器失败,无法与主机建立联机。可能对方主机正在维护中、或是网络联机品质不好、服务器关机、邮件服务器尚未启动等等,等一段时间再试。
如果你的防毒软体有类似「电子邮件防护」这类的功能,建议先关闭「电子邮件防护」再做收发邮件的测试,从经验中得知,有时会因为防毒软体的「电子邮件防护」的干扰,会产生不能收发邮件的情形。
0x800CCC0F 服务器结束连线(对方服务器负荷过重、网路传输堵塞易造成此现象,可以试着增加你连线逾时的等候时间试试看,或是换一连线品质较佳的 ISP)
0x800CCC10 服务器无法辨认此邮件位址
0x800CCC11 服务器无法辨认的 Mailing list
0x800CCC12 无法传送 Winsock request
0x800CCC13 无法接收 Winsock reply
0x800CCC14 无法起始 Winsock
0x800CCC15 无法开启 Windows Socket
0x800CCC16 无法辨认使用者帐号,使用者帐号错误
0x800CCC17 使用者中断操作
0x800CCC18 登入失败 (例如:不需要安全密码认证登入,但却设了安全密码认证登入)
0x800CCC19 连接服务器超时
0x800CCC1A 无法以 SSL 建立连线
Winsock 错误
0x800CCC40 Network subsystem 无法使用
0x800CCC41 Windows Sockets 不支持此应用程序
0x800CCC43 Bad address.
0x800CCC44 Windows Sockets 无法载入
0x800CCC45 Operation now in progress..
SMTP 错误
0x800CCC60 不合法的回应
0x800CCC61 不明的错误代码
0x800CCC62 收到语法错误
0x800CCC63 语法参数不正确
0x800CCC64 指令不完整
0x800CCC65 不正确的指令序列
0x800CCC66 指令不完整
0x800CCC67 没有这个指令
0x800CCC68 邮件信箱被锁住或忙碌中
0x800CCC69 找不到邮件信箱
0x800CCC6A 处理要求错误
0x800CCC6B 邮件信箱不在此服务器上
0x800CCC6C 已无空间储存邮件
0x800CCC6D 已超过限制的储存容量上限
0x800CCC6E 不合法的邮件信箱名称
0x800CCC6F Transaction error,出现这讯息,可能是服务器不接受你的邮件,请跟你的 ISP 联络。
0x800CCC78 不明的寄件者,或邮件回覆(reply-to)地址不正确,或需要身分认证(Yahoo 邮件需要 SMTP 认证)。
0x800CCC79 收件者被服务器拒绝 (Relay Denied:最常发生於 Outlook Express 的 SMTP 设定不正确,请使用提供你连线服务的ISP公司之SMTP服务器来寄信,)
0x800CCC7A 没有指定寄件者
0x800CCC7B 没有指定收件者
POP3 错误
0x800CCC90 登入邮件服务器发生错误,检查一下你是不是有使用该服务器的权限。或者:不需要安全密码认证登入,但却设了安全密码认证登入
0x800CCC91 使用者名称错误或找不到此使用者
0x800CCC92 帐号、密码错误
0x800CCC93 无法解释回应
0x800CCC94 需要指令
0x800CCC95 服务器上已无邮件
0x800CCC96 没有邮件标记为要下载
0x800CCC97 Message ID 超出范围
NNTP 错误
0x800CCCA0 新闻服务器回应错误,可能你没有拥有可使用该服务器的权限。
0x800CCCA1 读取新闻群组失败
0x800CCCA2 要求服务器邮件清单失败
0x800CCCA3 无法显示清单
0x800CCCA4 无法开启群组
0x800CCCA5 服务器无此群组
0x800CCCA6 邮件不在服务器上
0x800CCCA7 找不到件标题
0x800CCCA8 找不到邮件本文
0x800CCCA9 无法发布到服务器上
0x800CCCAA 无法开启下封邮件
0x800CCCAB 无法显示日期
0x800CCCAC 无法显示标题
0x800CCCAD 无法显示 MIME 标题
0x800CCCAE 使用者名称或密码不正确
RAS 错误
0x800CCCC2 未安装拨号网路
0x800CCCC3 找不到拨号网路
0x800CCCC4 拨号网路错误
0x800CCCC5 Connectoid 坏或遗失
0x800CCCC6 取得拨号设定时错误
IMAP 错误
0x800CCCD1 登入失败
0x800CCCD2 Message tagged
0x800CCCD3 Invalid response to request.
0x800CCCD4 语法错误
0x800CCCD5 不是 IMAP 服务器
0x800CCCD6 Buffer 已超过上限
0x800CCCD7 Recovery error
0x800CCCD8 资料不完整
0x800CCCD9 连接被拒
0x800CCCDA 不明的回应
0x800CCCDB User ID 已更改
0x800CCCDC User ID 指令失败
0x800CCCDD Unexpected disconnect
0x800CCCDE Invalid server state
0x800CCCDF 无法认证用户端
邮件扫描错误
0x8004210a
(或0x800ccc19) 安装了杀毒软件,并打开了“扫描收到的电子邮件”和“扫描发送的电子邮件”
表(一) SMTP 代码
代码 释义
421
450 Requested mail action not taken: mailbox unavailable 所要求的邮件动作无法执行:邮件信箱无法提供服务,邮件将滞留在主机上
451 Requested action aborted: local error in processing 要求动作中断:本地端错误
452 Requested action not taken: insufficient system storage 要求动作无法执行:系统空间不足
550 Requested action not taken: mailbox unavailable 所要求动作无法执行:信箱不存在,邮件将退回给寄件者
551 User not local; please try
552 Requested mail action aborted: exceeded storage allocation 所要求的动作中断:超出所分配的储存空间,邮件将退回给寄件者
553 Requested action not taken: mailbox name not allowed 所要求的动作未执行:信箱不允许该动作执行
553 Requested action not taken: Local user only 发件箱收到通信的提示--请检查接收方的邮件MX记录
554 Transaction failed 传送失败
表(二) DSN 错误代码
注意事项:第一个字符为 4 或 5
4.X.X 代表暂时错误,邮件服务器将稍后再试
5.X.X 代表邮件传送失败
类别 代码 释义
X.1.X 表示邮件地址(Address)问题 X.1.0 Other address status 其它邮件地址问题
X.1.1 Bad destination mailbox address 收件地址信箱错误
X.1.2 Bad destination system address 收件地址系统错误
X.1.3 Bad destination mailbox address syntax 收件地址信箱句法错误
X.1.4 Destination mailbox address ambiguous 收件地址信箱不清
X .1.5 Destination mailbox address valid 收件地址信箱无效
X.1.6 Mailbox has moved 信箱已移除
X.1.7 Bad sender's mailbox address syntax 寄件者信箱句法错误
X.1.8 Bad sender's system address 寄件者系统错误
X.2.X 表示收件者信箱(Mailbox)问题 X.2.0 Other or undefined mailbox status 其它或未定义的收件者信箱问题
X.2.1 Mailbox disabled, not accepting messages 信箱无法运作,无法接收信件
X.2.2 Mailbox full 信箱已满
X.2.3 Message length exceeds administrative limit. 邮件长度超出管理者限制
X.2.4 Mailing list expansion problem 此信箱属于特定邮件群组,但群组无法开展
X.3.X 表示目的地邮件系统(Mail System)问题 X.3.0 Other or undefined mail system status 其它或未定义的邮件系统问题
X.3.1 Mail system full 邮件系统储存空间已满
X.3.2 System not accepting network messages 主机无法接收信件,可能暂时关机、维修等
X.3.3 System not capable of selected features 指定的邮件特征无法为收件主机所接收
X.3.4 Message too big for system 邮件大小超出邮件系统限制
X.3.5 System incorrectly configured 系统设定错误,无法接收邮件
X.4.X 表示邮件传送系统网络与路由(Network and Routing)问题 X.4.0 Other or undefined network or routing status 其它或未定义的网络与路邮设定问题
X.4.1 No answer from host 主机无响应
X.4.2 Bad connection 联机错误
X.4.3 Directory server failure 网络系统无法转送邮件,例如无法联机到DNS服务器
X.4.4 Unable to route 邮件系统所需的路由信息不足,无法决定传送路由
X.4.5 Network congestion 网络壅塞
X.4.6 Routing loop detected 邮件因错误的路由设定,多次遶行而无法传送
X.4.7 Delivery time expired 邮件滞留主机过久
X.5.X
表示邮件传送协议问题 (Mail Delivery Protocol)问题,可能是寄件方、收信方或是传送邮件系统的问题 X.5.0 Other or undefined protocol status 其它或未定义的通讯协议问题
X.5.1 Invalid command 命令无效
X.5.2 Syntax error 邮件传送协议的句法错误
X.5.3 Too many recipients 太多收件者
X.5.4 Invalid command arguments 命令叙述错误
X.5.5 Wrong protocol version 错误的通讯协议版本
X.6.X
表示邮件内容或媒介(Message Content or Media)的问题,收件者与寄件者双方必需支持同样的内容类别(Content Type) X.6.0 Other or undefined media error 其它或未定义的媒介问题
X.6.1 Media not supported 传送协议或转送邮件的系统不支持该媒介
X.6.2 Conversion required and prohibited 邮件内容在传送之前必需经过转换动作,但该动作不被允许
X.6.3 Conversion required but not supported 邮件内容在转送之前须经过转换动作,但无法执行
X.6.4 Conversion with loss performed 邮件传送成功,但部份内容因无法转换而遗失
X.6.5 Conversion failed 转换动作失败
X.7.X 表示安全或邮件监控规则(Security or Policy) 的问题 X.7.0 Other or undefined security status 其它安全或邮件监控规则问题
X.7.1 Delivery not authorized, message refused 寄件者无授权传送信件
X.7.2 Mailing list expansion prohibited 寄件者无授权寄信予该邮件群组
X.7.3 Security conversion required but not possible 邮件安全协定
X.7.4 Security features not supported 邮件含有安全特征如认证措施,但不为传送协议所接受
X.7.5 Cryptographic failure 经授权得以认证或解密该邮件的系统无法完成该动作,因所需信息不完全
X.7.6 Cryptographic algorithm not supported 经授权得以认证或解密该邮件的系统无法完成该动作,因算法不支持
X.7.7 Message integrity failure 经授权得以认证该邮件的系统无法完成该动作,因邮件已损毁
*******************************************************************************
发送邮件常见出错代码
按照下列“Q”代表问题,“A”代表解答。
Q:the server says:550 relaying mail to <> is not allowed
Q:The server says:550 <>... relaying denied
Q:the server says:550 5.7.1 relaying not permitted:
A:使用某些Smtp服务器时,限制了收件人的地址,只能换一个Smtp服务器。
Q:The server says:550 <>:local user only
Q:The server says:550 <>:Invalid User
Q:The server says:550 Invalid recipient
A:使用163.net,163.com,yeah.net和netease.com之类的Smtp服务器时,只能用自身的信箱发信,所以要在Outlook Express的“帐户属性”中的“个人信息”里面填写正确的邮件地址。
Q:the server says:551 delivery not allowed to non-local recipient
Q:The server says:553 Relay restriction.
Q:The server says:553 From <>, message blocked.
Q:The server says:553 sorry,you are not allow to use this SMTP to relay your eami
Q:The server says:553 sorry, that domain isn't in my list of allowed rcpthosts
A:使用21cn.com,china.com,371.net,sina.com等大多数信箱的smtp服务器时,只能用自身的信箱发信,所以要在Outlook Express的“帐户属性”中的“个人信息”里面填写正确的邮件地址。
Q:The server says:505 client was not authenticated
Q:The server says:553 authentication is required to send mail as <>
A:使用263.net和sohu.com的Smtp服务器时,不但要用自身的邮箱发信,而且要加入身份验证,所以即要在“个人信息”中填写正确邮箱地址,又要选中“SMTP服务器需要认证”。
Q:The server says:535 Error:authenticatin failed
Q:The server says:535 Authentication unsuccessful
Q:The server says:452 Insufficient system storage
A:在使用Esmtp认证的过程中出错,检查一下Esmtp设置,多试几次。
Q:The server says:553 <>...domain name required
Q:The server says:550 Unable to relay for ...
A:多出现在用Wingate代理服务器发送邮件时。虽然在Wingate中“POP3 邮箱帐号”要使用“用户名#POP3地址”的格式,但在“帐户属性”中的“个人信息”中还是要填写一般的格式。
Q:The server says:553 mailbox name not allowed
A:收件人邮箱地址不允许,需检查收件人地址是否正确。
Q:the server says:553 sorry, your envelop sender is in my badmailfrom list
A:服务器限制了收件人的地址,只能换一个smtp服务器发信。
Q:the server says:554 Transaction failed
Q:The server says:451 Requested action aborted,errno=28
A:传输失败,检查网络问题。
Q:the server says:503 error:needmail command
Q:The server says:503 need mail before RCPT.
Q:The server says:503 Bad sequence of commands
A:消息命令顺序出错,一般出现在其他错误之后,先检查之前出现的错误提示。
Q:The Server says:501 syntax.helo hostname
Q:The server says:501 Invalid domain name
Q:The server says:502 unimplemented command
Q:the server says:503 5.0.0 polite people say HELO first
Q:The server says:533 relay restriction
Q:The server says:544 <>:Recipient address rejected: Relay access denied
A:传输中的语法错误,原因不明。
Outlook Express错误代码表
错误码 一般意义
0x800C0131 可能是 Folders.dbx 文件属性错误或损坏
0x800C013E 可能是 Folders.dbx 文件属性错误或损坏
0x800CCC00 身份验证(Authentication)未载入
0x800CCC01 认证(Certificate)内容错误
0x800CCC02 认证日期错误
0x800CCC03 使用者已连线
0x800CCC05 未连接到服务器
0x800CCC0A 邮件下载未完成
0x800CCC0B 服务器忙碌中
0x800CCC0D 找不到主机(检查你的SMTP服务器是不是设错,亦可能是对方Server 的问题,例如 Mail Server 没有开机、对方的DNS 服务器死掉了等等)
0x800CCC0E 联机到服务器失败,无法与主机建立联机。可能对方主机正在维护中、或是网络联机品质不好、服务器关机、邮件服务器尚未启动等等,等一段时间再试。
如果你的防毒软体有类似「电子邮件防护」这类的功能,建议先关闭「电子邮件防护」再做收发邮件的测试,从经验中得知,有时会因为防毒软体的「电子邮件防护」的干扰,会产生不能收发邮件的情形。
0x800CCC0F 服务器结束连线(对方服务器负荷过重、网路传输堵塞易造成此现象,可以试着增加你连线逾时的等候时间试试看,或是换一连线品质较佳的 ISP)
0x800CCC10 服务器无法辨认此邮件位址
0x800CCC11 服务器无法辨认的 Mailing list
0x800CCC12 无法传送 Winsock request
0x800CCC13 无法接收 Winsock reply
0x800CCC14 无法起始 Winsock
0x800CCC15 无法开启 Windows Socket
0x800CCC16 无法辨认使用者帐号,使用者帐号错误
0x800CCC17 使用者中断操作
0x800CCC18 登入失败 (例如:不需要安全密码认证登入,但却设了安全密码认证登入)
0x800CCC19 连接服务器超时
0x800CCC1A 无法以 SSL 建立连线
Winsock 错误
0x800CCC40 Network subsystem 无法使用
0x800CCC41 Windows Sockets 不支持此应用程序
0x800CCC43 Bad address.
0x800CCC44 Windows Sockets 无法载入
0x800CCC45 Operation now in progress..
SMTP 错误
0x800CCC60 不合法的回应
0x800CCC61 不明的错误代码
0x800CCC62 收到语法错误
0x800CCC63 语法参数不正确
0x800CCC64 指令不完整
0x800CCC65 不正确的指令序列
0x800CCC66 指令不完整
0x800CCC67 没有这个指令
0x800CCC68 邮件信箱被锁住或忙碌中
0x800CCC69 找不到邮件信箱
0x800CCC6A 处理要求错误
0x800CCC6B 邮件信箱不在此服务器上
0x800CCC6C 已无空间储存邮件
0x800CCC6D 已超过限制的储存容量上限
0x800CCC6E 不合法的邮件信箱名称
0x800CCC6F Transaction error,出现这讯息,可能是服务器不接受你的邮件,请跟你的 ISP 联络。
0x800CCC78 不明的寄件者,或邮件回覆(reply-to)地址不正确,或需要身分认证(Yahoo 邮件需要 SMTP 认证)。
0x800CCC79 收件者被服务器拒绝 (Relay Denied:最常发生於 Outlook Express 的 SMTP 设定不正确,请使用提供你连线服务的ISP公司之SMTP服务器来寄信,)
0x800CCC7A 没有指定寄件者
0x800CCC7B 没有指定收件者
POP3 错误
0x800CCC90 登入邮件服务器发生错误,检查一下你是不是有使用该服务器的权限。或者:不需要安全密码认证登入,但却设了安全密码认证登入
0x800CCC91 使用者名称错误或找不到此使用者
0x800CCC92 帐号、密码错误
0x800CCC93 无法解释回应
0x800CCC94 需要指令
0x800CCC95 服务器上已无邮件
0x800CCC96 没有邮件标记为要下载
0x800CCC97 Message ID 超出范围
NNTP 错误
0x800CCCA0 新闻服务器回应错误,可能你没有拥有可使用该服务器的权限。
0x800CCCA1 读取新闻群组失败
0x800CCCA2 要求服务器邮件清单失败
0x800CCCA3 无法显示清单
0x800CCCA4 无法开启群组
0x800CCCA5 服务器无此群组
0x800CCCA6 邮件不在服务器上
0x800CCCA7 找不到件标题
0x800CCCA8 找不到邮件本文
0x800CCCA9 无法发布到服务器上
0x800CCCAA 无法开启下封邮件
0x800CCCAB 无法显示日期
0x800CCCAC 无法显示标题
0x800CCCAD 无法显示 MIME 标题
0x800CCCAE 使用者名称或密码不正确
RAS 错误
0x800CCCC2 未安装拨号网路
0x800CCCC3 找不到拨号网路
0x800CCCC4 拨号网路错误
0x800CCCC5 Connectoid 坏或遗失
0x800CCCC6 取得拨号设定时错误
IMAP 错误
0x800CCCD1 登入失败
0x800CCCD2 Message tagged
0x800CCCD3 Invalid response to request.
0x800CCCD4 语法错误
0x800CCCD5 不是 IMAP 服务器
0x800CCCD6 Buffer 已超过上限
0x800CCCD7 Recovery error
0x800CCCD8 资料不完整
0x800CCCD9 连接被拒
0x800CCCDA 不明的回应
0x800CCCDB User ID 已更改
0x800CCCDC User ID 指令失败
0x800CCCDD Unexpected disconnect
0x800CCCDE Invalid server state
0x800CCCDF 无法认证用户端
邮件扫描错误
0x8004210a
(或0x800ccc19) 安装了杀毒软件,并打开了“扫描收到的电子邮件”和“扫描发送的电子邮件”
Feb
13
这里主要讲JDK+Tomcat+JDBC+JK2的安装,和JSP虚拟主机的配置方法
如果想看apache+php+mysql前面部分安装过程,请看这里:
apache+mysql+php+GD+zend+eaccelerator+phpmyadmin
四,JDK的安装
1,JDK的安装
2,Tomcat的安装
3.JDBC(JSP与,MSYQL,MSSQL连接)
4,JK2(是APACHE组织指定的连接apceh和tomcat的工具)
5. 启动TOMCAT(jsvc.tar.gz,tomcat启动工具)
具体操作如下:
1. JDK的安装
[root@linuxhero root]# ls
j2sdk-1_4_2_15-linux-i586.bin j2sdk-1_4_2_08-linux-i586-rpm.bin
有两个包.
j2sdk-1_4_2_15-linux-i586-rpm.bin的安装方法
#chmod 755 j2sdk-1_4_2_15-linux-i586-rpm.bin
#./j2sdk-1_4_2_15-linux-i586-rpm.bin (运行JDK自解包)
运行过程中会出现一个用户协议,选择yes即可,会释放出一个rpm包j2sdk-1_4_2_15-linux-i586.rpm.
#rpm –Uvh j2sdk-1_4_2_15-linux-i586.rpm
完成后会在/usr/目录下生成一个/usr/java/j2sdk1.4.2_15目录文件
另一个软件包运行后会直接释放成j2sdk1.4.2_15目录移动合适的位置,如/usr/local/
#chmod 755 j2sdk-1_4_2_15-linux-i586.bin
#./j2sdk-1_4_2_15-linux-i586.bin
# mv j2sdk1.4.2_15 /usr/local/
到此JDK已经安装完成
到/usr/bin目录下,把原用的java,javac文件删除:
#rm -rf java
#rm –rf javac
在/usr/bin 下建立 软连接 java
# ln -s /usr/local/j2sdk1.4.2_15/bin/java /usr/bin/java
# ln -s /usr/local/j2sdk1.4.2_15/bin/javac /usr/bin/javac
# java –version
# javac -version
java version "1.4.2_15"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_08-b03)
Java HotSpot(TM) Client VM (build 1.4.2_08-b03, mixed mode)
为了方便下在的工作建立两个软链接:
ln -s /usr/local/j2sdk1.4.2_15 /usr/local/jdk
ln -s /usr/local/j2sdk1.4.2_15/jre /usr/local/jre
2.Tomcat的安装
#tar -zxvf jakarta-tomcat-5.0.28.tar.gz
# mv jakarta-tomcat-5.0.28 /usr/local/tomcat
设置环境变量:
#Set Environment by NetSeek
JAVA_HOME=/usr/local/jdk
export JAVA_HOME
JRE_HOME=/usr/local/jre
export JRE_HOME
CLASSPATH=/usr=/usr/local/tomcat/common/lib/:/usr/local/jdk/lib:/usr/local/jre/lib
export CLASSPATH
PATH=$PATH:/usr/local/tomcat/bin/:/usr/local/apache/bin:/usr/local/jdk/bin:/usr/local/jre/bin
export PATH
export TOMCAT_HOME=/usr/local/tomcat
export CATALINA_HOME=/usr/local/tomcat/
启动tomcat以检查是否存在错误:
#cd /usr/local/tomcat/bin
#./startup.sh
http://IP
地址:8080 可以看到猫头:)成功了。
3.JDBC的安装
#tar -zxvf mysql-connector-java-3.2.0-alpha.tar.gz
#cd mysql-connector-java-3.2.0-alpha
#cp mysql-connector-java-3.2.0-alpha-bin.jar /usr/local/tomcat/common/lib
#tar xfv mssqlserver.tar
#tar xfv msjdbc.tar
#cd lib
# cp *.jar /usr/local/tomcat/common/lib
4.编译安装JK2(整合Tomcat与Apache)
# tar zxvf jakarta-tomcat-connectors-jk2-src-current.tar.gz
# cd jjakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/
#./configure --with-apxs2=/usr/local/apache/bin/apxs \
--with-java-home=/usr/local/jdk \
--with-tomcat41=/usr/local/tomcat \
--with-apr-lib=/usr/local/apache/lib
#echo $?
报错:
no apxs given
need to check for Perl first, apxs depends on it...
checking for perl... /usr/bin/perl
configure: error: can't locate libapr
解决办法:
安装:apr-1.1.1.tar.gz
apr-util-1.1.1.tar.gz
libtool-1.5.22.tar
解压缩安装libapr
# chmod +x *
# tar xfz apr-1.1.1.tar.gz
# cd apr-1.1.1
# ./configure
# make
# make install
回到......./tomcat目录
#cd ..
解压缩安装libaprutil
# tar xfz apr-util-1.1.1.tar.gz
# cd apr-util-1.1.1
# ./configure --with-apr=../apr-1.1.1
# make
# make install
建立libapr和libaprutil 的软连接到/usr/local/httpd2/lib/目录下
# ln -s /usr/local/apr/lib/libapr-1.so.0.1.1 /usr/local/httpd2/lib/libapr-1.so
# ln -s /usr/local/apr/lib/libapr-1.so.0.1.1 /usr/local/httpd2/lib/libapr-1.so.0
# ln -s /usr/local/apr/lib/libaprutil-1.so.0.1.1 /usr/local/httpd2/lib/libaprutil-1.so
# ln -s /usr/local/apr/lib/libaprutil-1.so.0.1.1 /usr/local/httpd2/lib/libaprutil-1.so.0
再次编译jakarta-tomcat
如果make通不过,/path/to/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/build/jk2/apache2目录下并无mod_jk2.so产生,则需安装新版libtool.
# libtool --version
ltmain.sh (GNU libtool) 1.4.3 (1.922.2.111 2002/10/23 02:54:36)
[root@linux native2]#
这个版本的libtool编译最新的
jakarta-tomcat-connectors-jk2-2.0.4-src
是不会成功的。
返回到....../tomcat
安装libtool-1.5.22
# chmod +x *
# tar xfz libtool-1.5.22.tar.gz
# cd libtool-1.5.22
# ./configure
# make
# make install
删除原来的/usr/local/httpd2/build/libtool
# rm –rf /usr/local/httpd2/build/libtool
建立新的libtool 软连接
# ln -s /usr/local/bin/libtool /usr/local/httpd2/build/libtool
再次编译jakarta-tomcat
现在就OK了
./configure --with-apxs2=/usr/local/apache/bin/apxs --with-java-home=/opt/j2sdk1.4.2_10 --with-apr-lib=/usr/local/apache/lib
注:--with-tomcat41参数指定Tomcat主目录,编译器没有直接对最新的Tomcat提供特定的编译参数,所以使用tomcat41的参数代替,用—with-java-home参数指定Java的安装路径.
#make
将在/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/build/jk2/apache目录下,生成的mod_jk2.so复制到Apache的扩展模块目录/usr/local/httpd/modules下,
#cp mod_jk2.so /usr/local/httpd/modules
再将/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/conf目录下的workers2.properties复制到Apache的配置文件目录/usr/local/httpd/conf下:
#cp workers2.properties /usr/local/httpd/conf
再编辑httpd.conf
vi /usr/local/apache/conf/httpd.conf
LoadModule jk2_module modules/mod_jk2.so
之前我的问题是:在已有的WEB服务器上重新安装一套,所以tomcat 老启不来,得KILL掉进程再启动就OK了。
错误:
Syntax error on line 1038 of /etc/httpd/conf/httpd.conf:
Invalid virtual host name
则修改httpd.conf文件,找到#ServerName所在的行,并在其下面加入如下内容即可
ServerName localhost:8008 # 制定服务器的名称和端口,注意端口是8008,而不是8080
检查$CATALINA_HOME/conf/server.xml文件中相关的配置,默认情况下的
相关的信息是被注释掉了,搜索8008,找到那段,把前面的"后面的"-->"都删掉
5. 启动TOMCAT(jsvc.tar.gz,tomcat启动工具)
Apache和Tomcat安装后需要设置自动启动,如果让Tomcat用root身份启动,Tomcat将会拥用root权限,这将可能给系统带来安全隐患,黑客可能利用这个来攻击我们的系统,所以我们得添加一个独立运行此服务的用户:
#useradd -d /usr/local/tomcat -s /usr/sbin/nologin tomcat
#chown -R tomcat:tomcat /usr/local/tomcat
#cd /usr/local/tomcat/bin/
#tar zxvf jsvc.tar.gz
#cd jsvc-src
#sh support/buildconf.sh (只能在些目录里执行,在别处执行会出错)
会显示support/buildconf.sh: configure script generated successfully
#chmod 755 configure
#./configure
#make
#cp native/Tomcat5.sh /usr/sbin/tomcat
#cd /usr/sbin
#chmod 755 tomcat
#vi tomcat
可以看到:
JAVA_HOME=/usr/java/j2sdk1.4.2_03 指定java安装的目录
CATALINA_HOME=/home/tomcat5/jakarta-tomcat-5/build 指定了tomat的安装目录
DAEMON_HOME=/home/tomcat5/jakarta-commons/daemon 指定了tomcat命令所在的目录
TOMCAT_USER=tomcat5 指定tomcat运行后使用的账号
将上面的配置修改如下:
JAVA_HOME=/usr/local/jdk
CATALINA_HOME=/usr/local/tomcat/
DAEMON_HOME=/usr/local/tomcat/bin/
TOMCAT_USER=tomcat
找到$DAEMON_HOME/src/native/unix/jsvc \
将其更改成:$DAEMON_HOME/jsvc-src/jsvc \
修改完保存退出
vi /etc/rc.d/rc.local
在里面添加如下设置:
/usr/sbin/tomcat start
然后重启所有服务!
五,虚拟主机配置方案
要求:
1,DNS的简设置
2,虚拟域名:www.XXXXXX.com,虚拟用户XXXXXX_com
3,允许FTP维护,禁止远程登陆(具体的FTP维护参照二)
4,为虚拟主机添加用户和使用目录
1, DNS的简单设置,
...........中间略
二. 配置虚拟主机
1. 为虚拟主机添加用户和使用目录
#useradd xxxxxxx_com -s /sbin/nologin 添加虚拟用户,不允许登陆
#passwd xxxxxx_com (Do not Hack me 3ks) DnHm3ks 这是我设置的密码:)
#chmod 755 /home/xxxxxx_com
#cd /home/xxxxx_com
#mkdir sites 建立网站存放根目录
#chown xxxxxxx_com:xxxxxx_com sites 改变sites所属组为xxxxx_com
#mkdir logs 站点的日志目录
#chown xxxxxx_com:linuxhero_com logs
#mkdir cgi-bin 目录用来运行CGI程序
#chown xxxxx_com:xxxxxx_com cgi-bin
#mkdir sites/WEB-INF 用来存放Tomcat发布的程序
#chown xxxxx_com:xxxxx_com sites/WEB-INF
2.设置Apache的虚拟主机
#vi /usr/local/httpd/conf/httpd.conf
找到DirectoryIndex 在文件表中加上index.jsp,然后在文件尾添加虚拟主机配置信息:
NameVirtualHost 192.168.0.230:80
#www.xxxxx.com
<VirtualHost 192.168.0.230:80>
ServerAdmin [email protected]
DocumentRoot /home/xxxxx_com/sites
ServerName www.xxxxx.com
ServerAlias linuxhero.com
ErrorLog /home/xxxxx_com/logs/error_log
CustomLog /home/xxxxx_com/logs/access_log common
alias /cgi-bin /home/xxxxx_com/cgi-bin
<Location /cgi-bin>
Options ExecCGI
</Location>
<Location ~ "/*.jsp">
JkUriSet worker ajp13:localhost:8009
</Location>
<Location ~ "/WEB-INF/*">
JkUriSet worker ajp13:localhost:8009
</Location>
<Location ~ "servlet/*">
JkUriSet worker ajp13:localhost:8009
</Location>
</VirtualHost
1. 设置Tomcat的虚拟主机:
vi /usr/local/tomcat/conf/server.xml
在</Engine></Service></Server>上面加入如下:
------------------------------------------------------------------------------
<Host name="www.xxxxx.com" debug="0" appBase="/home/xxxxx_com/sites/"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>xxxxx.com</Alias>
<Context path="" docBase="." debug="0" reloadable="ture"/>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="xxxxx_com_log."
suffix=".txt"
timestamp="true"/>
</Host>
</Engine>
</Service>
</Server>
到此xxxxxxx_com这目录就可以同时支持PHP+JSP+mysql+mssql,啦,相当于LINUX下的WEB全能服务器.
如果想看apache+php+mysql前面部分安装过程,请看这里:
apache+mysql+php+GD+zend+eaccelerator+phpmyadmin
四,JDK的安装
1,JDK的安装
2,Tomcat的安装
3.JDBC(JSP与,MSYQL,MSSQL连接)
4,JK2(是APACHE组织指定的连接apceh和tomcat的工具)
5. 启动TOMCAT(jsvc.tar.gz,tomcat启动工具)
具体操作如下:
1. JDK的安装
[root@linuxhero root]# ls
j2sdk-1_4_2_15-linux-i586.bin j2sdk-1_4_2_08-linux-i586-rpm.bin
有两个包.
j2sdk-1_4_2_15-linux-i586-rpm.bin的安装方法
#chmod 755 j2sdk-1_4_2_15-linux-i586-rpm.bin
#./j2sdk-1_4_2_15-linux-i586-rpm.bin (运行JDK自解包)
运行过程中会出现一个用户协议,选择yes即可,会释放出一个rpm包j2sdk-1_4_2_15-linux-i586.rpm.
#rpm –Uvh j2sdk-1_4_2_15-linux-i586.rpm
完成后会在/usr/目录下生成一个/usr/java/j2sdk1.4.2_15目录文件
另一个软件包运行后会直接释放成j2sdk1.4.2_15目录移动合适的位置,如/usr/local/
#chmod 755 j2sdk-1_4_2_15-linux-i586.bin
#./j2sdk-1_4_2_15-linux-i586.bin
# mv j2sdk1.4.2_15 /usr/local/
到此JDK已经安装完成
到/usr/bin目录下,把原用的java,javac文件删除:
#rm -rf java
#rm –rf javac
在/usr/bin 下建立 软连接 java
# ln -s /usr/local/j2sdk1.4.2_15/bin/java /usr/bin/java
# ln -s /usr/local/j2sdk1.4.2_15/bin/javac /usr/bin/javac
# java –version
# javac -version
java version "1.4.2_15"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_08-b03)
Java HotSpot(TM) Client VM (build 1.4.2_08-b03, mixed mode)
为了方便下在的工作建立两个软链接:
ln -s /usr/local/j2sdk1.4.2_15 /usr/local/jdk
ln -s /usr/local/j2sdk1.4.2_15/jre /usr/local/jre
2.Tomcat的安装
#tar -zxvf jakarta-tomcat-5.0.28.tar.gz
# mv jakarta-tomcat-5.0.28 /usr/local/tomcat
设置环境变量:
#Set Environment by NetSeek
JAVA_HOME=/usr/local/jdk
export JAVA_HOME
JRE_HOME=/usr/local/jre
export JRE_HOME
CLASSPATH=/usr=/usr/local/tomcat/common/lib/:/usr/local/jdk/lib:/usr/local/jre/lib
export CLASSPATH
PATH=$PATH:/usr/local/tomcat/bin/:/usr/local/apache/bin:/usr/local/jdk/bin:/usr/local/jre/bin
export PATH
export TOMCAT_HOME=/usr/local/tomcat
export CATALINA_HOME=/usr/local/tomcat/
启动tomcat以检查是否存在错误:
#cd /usr/local/tomcat/bin
#./startup.sh
http://IP
地址:8080 可以看到猫头:)成功了。
3.JDBC的安装
#tar -zxvf mysql-connector-java-3.2.0-alpha.tar.gz
#cd mysql-connector-java-3.2.0-alpha
#cp mysql-connector-java-3.2.0-alpha-bin.jar /usr/local/tomcat/common/lib
#tar xfv mssqlserver.tar
#tar xfv msjdbc.tar
#cd lib
# cp *.jar /usr/local/tomcat/common/lib
4.编译安装JK2(整合Tomcat与Apache)
# tar zxvf jakarta-tomcat-connectors-jk2-src-current.tar.gz
# cd jjakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/
#./configure --with-apxs2=/usr/local/apache/bin/apxs \
--with-java-home=/usr/local/jdk \
--with-tomcat41=/usr/local/tomcat \
--with-apr-lib=/usr/local/apache/lib
#echo $?
报错:
no apxs given
need to check for Perl first, apxs depends on it...
checking for perl... /usr/bin/perl
configure: error: can't locate libapr
解决办法:
安装:apr-1.1.1.tar.gz
apr-util-1.1.1.tar.gz
libtool-1.5.22.tar
解压缩安装libapr
# chmod +x *
# tar xfz apr-1.1.1.tar.gz
# cd apr-1.1.1
# ./configure
# make
# make install
回到......./tomcat目录
#cd ..
解压缩安装libaprutil
# tar xfz apr-util-1.1.1.tar.gz
# cd apr-util-1.1.1
# ./configure --with-apr=../apr-1.1.1
# make
# make install
建立libapr和libaprutil 的软连接到/usr/local/httpd2/lib/目录下
# ln -s /usr/local/apr/lib/libapr-1.so.0.1.1 /usr/local/httpd2/lib/libapr-1.so
# ln -s /usr/local/apr/lib/libapr-1.so.0.1.1 /usr/local/httpd2/lib/libapr-1.so.0
# ln -s /usr/local/apr/lib/libaprutil-1.so.0.1.1 /usr/local/httpd2/lib/libaprutil-1.so
# ln -s /usr/local/apr/lib/libaprutil-1.so.0.1.1 /usr/local/httpd2/lib/libaprutil-1.so.0
再次编译jakarta-tomcat
如果make通不过,/path/to/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/build/jk2/apache2目录下并无mod_jk2.so产生,则需安装新版libtool.
# libtool --version
ltmain.sh (GNU libtool) 1.4.3 (1.922.2.111 2002/10/23 02:54:36)
[root@linux native2]#
这个版本的libtool编译最新的
jakarta-tomcat-connectors-jk2-2.0.4-src
是不会成功的。
返回到....../tomcat
安装libtool-1.5.22
# chmod +x *
# tar xfz libtool-1.5.22.tar.gz
# cd libtool-1.5.22
# ./configure
# make
# make install
删除原来的/usr/local/httpd2/build/libtool
# rm –rf /usr/local/httpd2/build/libtool
建立新的libtool 软连接
# ln -s /usr/local/bin/libtool /usr/local/httpd2/build/libtool
再次编译jakarta-tomcat
现在就OK了
./configure --with-apxs2=/usr/local/apache/bin/apxs --with-java-home=/opt/j2sdk1.4.2_10 --with-apr-lib=/usr/local/apache/lib
注:--with-tomcat41参数指定Tomcat主目录,编译器没有直接对最新的Tomcat提供特定的编译参数,所以使用tomcat41的参数代替,用—with-java-home参数指定Java的安装路径.
#make
将在/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/build/jk2/apache目录下,生成的mod_jk2.so复制到Apache的扩展模块目录/usr/local/httpd/modules下,
#cp mod_jk2.so /usr/local/httpd/modules
再将/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/conf目录下的workers2.properties复制到Apache的配置文件目录/usr/local/httpd/conf下:
#cp workers2.properties /usr/local/httpd/conf
再编辑httpd.conf
vi /usr/local/apache/conf/httpd.conf
LoadModule jk2_module modules/mod_jk2.so
之前我的问题是:在已有的WEB服务器上重新安装一套,所以tomcat 老启不来,得KILL掉进程再启动就OK了。
错误:
Syntax error on line 1038 of /etc/httpd/conf/httpd.conf:
Invalid virtual host name
则修改httpd.conf文件,找到#ServerName所在的行,并在其下面加入如下内容即可
ServerName localhost:8008 # 制定服务器的名称和端口,注意端口是8008,而不是8080
检查$CATALINA_HOME/conf/server.xml文件中相关的配置,默认情况下的
相关的信息是被注释掉了,搜索8008,找到那段,把前面的"后面的"-->"都删掉
5. 启动TOMCAT(jsvc.tar.gz,tomcat启动工具)
Apache和Tomcat安装后需要设置自动启动,如果让Tomcat用root身份启动,Tomcat将会拥用root权限,这将可能给系统带来安全隐患,黑客可能利用这个来攻击我们的系统,所以我们得添加一个独立运行此服务的用户:
#useradd -d /usr/local/tomcat -s /usr/sbin/nologin tomcat
#chown -R tomcat:tomcat /usr/local/tomcat
#cd /usr/local/tomcat/bin/
#tar zxvf jsvc.tar.gz
#cd jsvc-src
#sh support/buildconf.sh (只能在些目录里执行,在别处执行会出错)
会显示support/buildconf.sh: configure script generated successfully
#chmod 755 configure
#./configure
#make
#cp native/Tomcat5.sh /usr/sbin/tomcat
#cd /usr/sbin
#chmod 755 tomcat
#vi tomcat
可以看到:
JAVA_HOME=/usr/java/j2sdk1.4.2_03 指定java安装的目录
CATALINA_HOME=/home/tomcat5/jakarta-tomcat-5/build 指定了tomat的安装目录
DAEMON_HOME=/home/tomcat5/jakarta-commons/daemon 指定了tomcat命令所在的目录
TOMCAT_USER=tomcat5 指定tomcat运行后使用的账号
将上面的配置修改如下:
JAVA_HOME=/usr/local/jdk
CATALINA_HOME=/usr/local/tomcat/
DAEMON_HOME=/usr/local/tomcat/bin/
TOMCAT_USER=tomcat
找到$DAEMON_HOME/src/native/unix/jsvc \
将其更改成:$DAEMON_HOME/jsvc-src/jsvc \
修改完保存退出
vi /etc/rc.d/rc.local
在里面添加如下设置:
/usr/sbin/tomcat start
然后重启所有服务!
五,虚拟主机配置方案
要求:
1,DNS的简设置
2,虚拟域名:www.XXXXXX.com,虚拟用户XXXXXX_com
3,允许FTP维护,禁止远程登陆(具体的FTP维护参照二)
4,为虚拟主机添加用户和使用目录
1, DNS的简单设置,
...........中间略
二. 配置虚拟主机
1. 为虚拟主机添加用户和使用目录
#useradd xxxxxxx_com -s /sbin/nologin 添加虚拟用户,不允许登陆
#passwd xxxxxx_com (Do not Hack me 3ks) DnHm3ks 这是我设置的密码:)
#chmod 755 /home/xxxxxx_com
#cd /home/xxxxx_com
#mkdir sites 建立网站存放根目录
#chown xxxxxxx_com:xxxxxx_com sites 改变sites所属组为xxxxx_com
#mkdir logs 站点的日志目录
#chown xxxxxx_com:linuxhero_com logs
#mkdir cgi-bin 目录用来运行CGI程序
#chown xxxxx_com:xxxxxx_com cgi-bin
#mkdir sites/WEB-INF 用来存放Tomcat发布的程序
#chown xxxxx_com:xxxxx_com sites/WEB-INF
2.设置Apache的虚拟主机
#vi /usr/local/httpd/conf/httpd.conf
找到DirectoryIndex 在文件表中加上index.jsp,然后在文件尾添加虚拟主机配置信息:
NameVirtualHost 192.168.0.230:80
#www.xxxxx.com
<VirtualHost 192.168.0.230:80>
ServerAdmin [email protected]
DocumentRoot /home/xxxxx_com/sites
ServerName www.xxxxx.com
ServerAlias linuxhero.com
ErrorLog /home/xxxxx_com/logs/error_log
CustomLog /home/xxxxx_com/logs/access_log common
alias /cgi-bin /home/xxxxx_com/cgi-bin
<Location /cgi-bin>
Options ExecCGI
</Location>
<Location ~ "/*.jsp">
JkUriSet worker ajp13:localhost:8009
</Location>
<Location ~ "/WEB-INF/*">
JkUriSet worker ajp13:localhost:8009
</Location>
<Location ~ "servlet/*">
JkUriSet worker ajp13:localhost:8009
</Location>
</VirtualHost
1. 设置Tomcat的虚拟主机:
vi /usr/local/tomcat/conf/server.xml
在</Engine></Service></Server>上面加入如下:
------------------------------------------------------------------------------
<Host name="www.xxxxx.com" debug="0" appBase="/home/xxxxx_com/sites/"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>xxxxx.com</Alias>
<Context path="" docBase="." debug="0" reloadable="ture"/>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="xxxxx_com_log."
suffix=".txt"
timestamp="true"/>
</Host>
</Engine>
</Service>
</Server>
到此xxxxxxx_com这目录就可以同时支持PHP+JSP+mysql+mssql,啦,相当于LINUX下的WEB全能服务器.
Feb
13
用记事本打开一些加密后的asp木马,经常会在开头一段发现<%@ LAngUAgE = vBScRipt.EncOdE %>这样的代码,其原由就是asp木马用了VBScript.Encode这个组件加密
其实VBScript.Encode这个组件经常被用来加密一些ASP的木马后门以达到免杀效果,还有一些程序的作者也会在ASP中使用加密以达到保护版权的目的,但是其实VBScript.Encode的加密功能非常弱,很容易被人还原出源代码,而在asp后门免杀领域,它又被用的最多,那么我们自然很容易想到可以通过禁用VBScript.Encode这个组件来实现是加密脚本失效的目的,从而可以使很多免杀的asp木马毫无用武之地。
下面介绍禁用VBScript.Encode的方法(使用IIS做为WEB服务器和虚拟主机的用户):
运行regedit打开注册表编辑器,展开至:
HKEY_CLASSES_ROOT\VBScript.Encode
按右键-权限-去除users组读取权限或者是加入虚拟主机用户组的拒绝权限均可
或者是直接删除VBScript.Encode这个注册表项也可,当然这样做我觉得野蛮了点^_^
修改好注册表后,重启IIS,然后我们找个加密后的asp木马来试试,运行后即提示:
嘿嘿,这下可好,任你ASP木马怎么做免杀和加密,传到我的服务器上就毫无用处啦。
经过这样设置后,一般对正常的ASP文件运行均无影响,需要用到加密的,经常是asp后门还有就是一些见不得阳光的东西,所以说负面影响很小。
嘿嘿,服务器安全方面小小的技巧,刚刚想到的,特意写出来与大家分享下
其实VBScript.Encode这个组件经常被用来加密一些ASP的木马后门以达到免杀效果,还有一些程序的作者也会在ASP中使用加密以达到保护版权的目的,但是其实VBScript.Encode的加密功能非常弱,很容易被人还原出源代码,而在asp后门免杀领域,它又被用的最多,那么我们自然很容易想到可以通过禁用VBScript.Encode这个组件来实现是加密脚本失效的目的,从而可以使很多免杀的asp木马毫无用武之地。
下面介绍禁用VBScript.Encode的方法(使用IIS做为WEB服务器和虚拟主机的用户):
运行regedit打开注册表编辑器,展开至:
HKEY_CLASSES_ROOT\VBScript.Encode
按右键-权限-去除users组读取权限或者是加入虚拟主机用户组的拒绝权限均可
或者是直接删除VBScript.Encode这个注册表项也可,当然这样做我觉得野蛮了点^_^
修改好注册表后,重启IIS,然后我们找个加密后的asp木马来试试,运行后即提示:
引用
Active Server Pages 错误 'ASP 0129'
未知的脚本语言
/ggd.asp,行 1
在服务器上找不到脚本语言 'vBScRipt.EncOdE'。
未知的脚本语言
/ggd.asp,行 1
在服务器上找不到脚本语言 'vBScRipt.EncOdE'。
嘿嘿,这下可好,任你ASP木马怎么做免杀和加密,传到我的服务器上就毫无用处啦。
经过这样设置后,一般对正常的ASP文件运行均无影响,需要用到加密的,经常是asp后门还有就是一些见不得阳光的东西,所以说负面影响很小。
嘿嘿,服务器安全方面小小的技巧,刚刚想到的,特意写出来与大家分享下