apache日志的cronolog轮循

2008年12月9日
作者:李悦 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
http://www.liyue.org/tech/archives/102

  将apache日志按年月日目录分类存放,便于日志分析系统分析。使用cronolog来完成,有windows和linux的版本。Linux安装,解压缩后执行
  #./configure
  #./make
  #./make install
  在httpd.conf配置使用cronolog,在每个虚拟主机中,加入
  

CustomLog "|/usr/local/sbin/cronolog /var/logs/%Y/%m/%Y%m%d_access.log" combined
  ErrorLog "|/usr/local/sbin/cronolog /var/logs/%Y/%m/%Y%m%d_error.log"

  Windows下cronolog安装,解压缩后,将cronolog.exe文件放到apache安装目录的bin下。配置httpd.conf

TransferLog "|D:/Apache/bin/cronolog.exe D:/Apache/logs/%Y/%m/%d/access.log"
	ErrorLog    "|D:/Apache/bin/cronolog.exe D:/Apache/logs/%Y/%m/%d/access.log"

IT, linux, windows

将mysql检索结果导出EXCEL表

2008年12月5日
作者:李悦 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
http://www.liyue.org/tech/archives/94

说明:数据表fawen是文件的标题,正文等信息,数据表pishi是各领导对文件的批示信息,pishi的articleid字段内容与fawen的id相关联。要统计出某位领导的所有批示,导出EXCEL,内容是:文件名称、批示内容、批示时间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
$DB_Server = "localhost";
$DB_Username = "root";
$DB_Password = "pass";
$DB_DBName = "office";
$DB_TBLName = "fawen";
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password)
or die("Couldn't connect.");
$Db = @mysql_select_db($DB_DBName, $Connect)
or die("Couldn't select database.");
$file_type = "vnd.ms-excel";
$file_ending = "xls";
header("Content-Type: application/$file_type");
header("Content-Disposition: attachment; filename=mydowns.$file_ending");
header("Pragma: no-cache");
header("Expires: 0");
$now_date = date('Y-m-d H:i');
$title = "格式:第一列为文件名,第二列为领导批示内容,第三列为批示日期";
$sql = "Select $DB_TBLName.title,pishi.content,pishi.time from $DB_TBLName,pishi where pishi.leadername='领导名称' and $DB_TBLName.id=pishi.articleid";
$ALT_Db = @mysql_select_db($DB_DBName, $Connect)
or die("Couldn't select database");
 
 
$result = @mysql_query($sql,$Connect)
or die(mysql_error());
 
$result2 = @mysql_query($sql2,$Connect)
or die(mysql_error());
 
echo("$title\n");
$sep = "\t";
//for ($i = 0; $i < mysql_num_fields($result); $i++) {
//echo mysql_field_name($result,$i) . "\n";
//}
print("\n\n\n");
$i = 0;
 
while($row = mysql_fetch_row($result))
{
$schema_insert = "";
for($j=0; $j<mysql_num_fields($result);$j++)
{
if(!isset($row[$j]))
$schema_insert .= "NULL".$sep;
elseif ($row[$j] != "")
$schema_insert .= "$row[$j]".$sep;
else
$schema_insert .= "".$sep;
}
$schema_insert = str_replace($sep."$", "", $schema_insert);
$schema_insert .= "\t";
print(trim($schema_insert));
print "\n\n\n\n";
$i++;
}
return (true);
?>

IT

数组的应用

2008年10月20日
作者:李悦 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
http://www.liyue.org/tech/archives/85

  对已知数目的查询条件,使用数组定义,然后遍历数组,使用while循环查询符合数组数值条件的记录,并统计。
  片段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
		//数组
		$workArray = array("办公室", "财务基建", "人事处", "老干部处", "机关党委","纪检监察","综合处","核算处","政法处","工业处","能源处","农村处","国贸处","外经处","投资处","服务业处","人口处","社科处","普查中心","基普办","科研所","计算中心","教育中心","记者站","印刷厂"); 
 
			while  (list($key,$value) = each($workArray))  {
				$z--;
				$sql5="select count(id) as id from art where author='$value' and createdate>='$starttime' and createdate <='$endtime'";
				$r5= $DB_web->query_first($sql5);
 
				print "<tr bgcolor='#DDDDDD'>";
				print "<td height='20'>&nbsp;$value</td>";
				print "<td height='20'>&nbsp;$r5[id]</td>";
        print "</tr>";
 
			}

IT

ASP无组件上传文件问题

2008年9月25日
作者:李悦 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
http://www.liyue.org/tech/archives/82

  背景:在使用ASP的BLOG程序上传文件时候,报错,发现只能上传200K以下文件。运行环境是windows2003/IIS6,ASP程序是无组件上传模块。
  错误信息:Request 对象 错误 ‘ASP 0104 : 80004005′
  参考网址:微软知识库http://support.microsoft.com/kb/327659/
  解决方法:修改默认允许的最大请求。首先停止IIS服务。打开 %systemroot%\System32\Inetsrv 中的 metabase.XML文件,查找AspMaxRequestEntityAllowed,修改默认的数值200K(204800),如50M为51200000。
  建议:采用ASP上传组件替代无组件,并将上面数值还原。

windows

apache2.2.9/tomcat5.5.16整合

2008年9月24日
作者:李悦 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
http://www.liyue.org/tech/archives/62

  1、Apache2.2.9的安装只用了一个配置命令:
    ./configure –prefix=/usr/local/apache –enable-rewrite=shared
  2、Tomcat5.5.16二进制方式,解压。
  3、安装jakarta-tomcat-connectors-jk2-src-current.tar.gz
    下载地址:http://archive.apache.org/dist/jakarta/tomcat-connectors/jk2/source/
    解压后,进入到jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2目录
    执行./configure –with-apxs2=/usr/local/apache/bin/apxs
      make
    拷贝mod_jk2.so文件,到apache的modules目录。
    cp jakarta-tomcat-connectors-jk2-2.0.4-src/jk/build/jk2/apache2/mod_jk2.so
      /usr/local/apache/modules/
  4、配置apache配置文件:
    编辑httpd.conf
    Listen 10.10.10.197:80下面添加一行,加载mod_jk2.so.
    LoadModule jk2_module modules/mod_jk2.so
    找到下面一行,并且去掉注释符号#,加载虚拟主机配置文件
    Include conf/extra/httpd-vhosts.conf
  5、配置虚拟主机:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<VirtualHost *>
    ServerAdmin web@domain.com
    DocumentRoot "/usr/local/tomcat/webapps"
#需要转给tomcat处理的文件名,如*.jsp,这里是*.*所有文件处理转给tomcat 
    <Location ~ "/*.*">
            JkUriSet worker ajp13:localhost:8009
        </Location>
    ServerName search.domain.com
    ErrorLog "logs/search-error_log"
    CustomLog "logs/search-access_log" common
#定义虚拟主机目录属性,新版本的apache必须要加这段,否则无法指定默认根目录之外的目录
        <Directory "/usr/local/tomcat/webapps">
           Options Indexes FollowSymLinks
           AllowOverride All
   Order deny,allow
   Allow from all
    </Directory>
</VirtualHost>

linux

LAMP的部署经历

2008年8月10日
作者:李悦 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
http://www.liyue.org/tech/archives/35

  此次安装的版本比较低,适用于某个老系统的环境要求。费了一些周折,网络上提供的资料准确性有限,很杂乱。需要自己的实践和研究总结一些方法。
  环境:Redhat AS5,Apache1.3.9,PHP4.1.2,Mysql4.1,ZendOptimizer-2.5.7
  其他软件:zlib-1.2.3.tar.gz(后面会提及) 阅读全文…

IT, linux

Linux系统的hosts.allow和hosts.deny

2008年8月7日
作者:李悦 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
http://www.liyue.org/tech/archives/33

  奥运了,各单位对信息安全特别重视,要求加强服务器安全,所有服务器统一修改密码,关闭WEB服务器除了80端口的所有端口,关闭远程控制SSH。统一使用单位的VPN服务来管理。关闭外部的所有链接,除了VPN服务器的,这样,就必须通过VPN来远程控制服务器,VPN只有管理员才有账户登录权限。
  限制访问主机的服务。可以限制,只能是指定的IP才能访问本机的某个服务。
  编辑/etc/hosts.allow
  加入下面的一行,允许10.0.0.1通过ssh服务链接服务器:
  sshd:10.0.0.1

  编辑/etc/hosts.deny,加入:
  ALL: ALL@ALL, PARANOID
  拒绝其他所有的服务请求。

  通过上述设置后,先通过登录VPN系统认证后,再使用SSH登录服务器就可以了。

IT

通过VNC安装Oracle

2008年8月7日
作者:李悦 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
http://www.liyue.org/tech/archives/31

运行vncserver,提示输入密码(远程登录密码),生成端口号:1。

打开防火墙,添加vnc端口。可以从netstat看出端口号。如5801

下载VNC客户端,登录窗口,服务器输入IP:1

输入密码。

或者通过浏览器访问:ip:5801

为ORACLE安装图像界面做准备,以ROOT运行xhost + 提示未授权。执行export DISPLAY=客户端IP:1.0

再次执行xhost +成功。在vnc窗口,以oracle用户执行./runInstaller ,成功出现中文图形安装界面。

IT

SELinux对Apache限制和小插曲

2008年8月7日
作者:李悦 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
http://www.liyue.org/tech/archives/29

  CentOS4.6自带APACHE不能更改默认根目录,虚拟主机指向其他目录不认。是SELinux激活的原因,关闭他:

# vi /etc/selinux/config

 # This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted

将SELINUX=disabled

重起机器,发现SSH链接不上了。以为修改错了,造成系统起不来了。而且控制终端也没用信号。网络断了。即使系统无法起来,终端也应该有信号。登录后,网络配置也丢失了。重新配置网络地址后,还是无法链接。到最后,换了一个网卡接口。可以了,接口坏了。

IT

优化WEB服务器防止攻击

2008年8月7日
作者:李悦 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
http://www.liyue.org/tech/archives/27

 前些天学校网站变得很慢,进行了一些调整来缓解。先把上面的动态程序移走,只保留纯html静态网页。只运行apache,问题没有解决。netstat查看有不少SYN_RECV、TIME_WAIT、FIN_WAIT_1等状态存在的链接。查看资料,可能是SYN Flood攻击.  作如下配置来缓解:
1、增加未完成连接队列(q0)的最大长度。
echo 2048>/proc/sys/net/ipv4/tcp_max_syn_backlog
2、启动SYN_cookie。
echo 1>/proc/sys/net/ipv4/tcp_syncookies
这些是被动的方法,治标不治本。
把上述命令加入启动脚本
/etc/rc.d/boot.local(SUSE LINUX)/etc/rc.local(redhat linux)
3、iptables的设置,引用自CU

防止同步包洪水(Sync Flood)
# iptables -A FORWARD -p tcp –syn -m limit –limit 1/s -j ACCEPT
也有人写作
#iptables -A INPUT -p tcp –syn -m limit –limit 1/s -j ACCEPT
–limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改
防止各种端口扫描
# iptables -A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j ACCEPT
Ping洪水攻击(Ping of Death)
# iptables -A FORWARD -p icmp –icmp-type echo-request -m limit –limit 1/s -j ACCEPT

通过上面在防火墙和TCP/IP协议栈配置后,响应缓慢仍然没有得到有效的解决。查看了一篇关于当前主要有三种流行的DDOS攻击: 阅读全文…

IT